Журнал лабораторных работ

Содержание

Журнал

Вторник (12/13/11)

/dev/pts/0
13:42:15
#~
#                  See the manual pages hosts_access(5) and hosts_options(5).
#
# Example:    ALL: some.host.name, .some.domain
#             ALL EXCEPT in.fingerd: other.host.name, .other.domain
#
# If you're going to protect the portmapper use the name "portmap" for the
# daemon name. Remember that you can only use the keyword "ALL" and IP
# addresses (NOT host or domain names) for the portmapper, as well as for
# rpc.mountd (the NFS mount daemon). See portmap(8) and rpc.mountd(8)
# for further information.
...
~
~
~
~
~
~
~
~
~
"/etc/hosts.deny" 20L, 890C записано
13:42:33
#vim /etc/hosts.allow
--- /tmp/l3-saved-4970.23806.22356	2011-12-13 14:42:36.000000000 +0200
+++ /etc/hosts.allow	2011-12-13 14:43:10.000000000 +0200
@@ -10,4 +10,4 @@
 # rpc.mountd (the NFS mount daemon). See portmap(8) and rpc.mountd(8)
 # for further information.
 #
-sshd : 192.168.30.1 : allow
+sshd : 192.168.30.1
/dev/pts/0
13:44:40
#vim /etc/hosts.allow
--- /tmp/l3-saved-5345.7540.23916	2011-12-13 14:44:49.000000000 +0200
+++ /etc/hosts.allow	2011-12-13 14:45:07.000000000 +0200
@@ -10,4 +10,3 @@
 # rpc.mountd (the NFS mount daemon). See portmap(8) and rpc.mountd(8)
 # for further information.
 #
-sshd : 192.168.30.1
13:45:08
#vim /etc/hosts.deny
--- /tmp/l3-saved-5345.28946.23014	2011-12-13 14:45:32.000000000 +0200
+++ /etc/hosts.deny	2011-12-13 14:45:39.000000000 +0200
@@ -17,4 +17,3 @@
 # validate looked up hostnames still leave understandable logs. In past
 # versions of Debian this has been the default.
 # ALL: PARANOID
-ALL : ALL 
/dev/pts/1
13:45:09
#ps aux | grep l3
root      1277  1.4  1.9  14176  9896 ?        Ss   11:34   2:50 l3-agent
13:45:25
#which l3-agent
/usr/local/bin/l3-agent
13:45:46
#vim /usr/local/bin/l3-
13:45:46
#vim /usr/local/bin/l3-config
13:46:26
#vim /usr/local/bin/l3-agent
13:46:26
#vim /usr/local/bin/l3-agent
прошла 31 минута
14:18:16
#ls -l /etc/init.d/xinetd
-rwxr-xr-x 1 root root 2063 Мар 26  2008 /etc/init.d/xinetd
14:18:21
#vim /etc/xinetd.
14:18:21
#vim /etc/xinetd.conf
14:19:49
#~

14:20:02
#cp xinetd.conf xinetd.conf.back

14:20:17
#ls -l xinetd.*
-rw-r--r-- 1 root root  289 Мар 26  2008 xinetd.conf
-rw-r--r-- 1 root root  289 Дек 13 15:20 xinetd.conf.back
xinetd.d:
итого 24
-rw-r--r-- 1 root root 798 Мар 26  2008 chargen
-rw-r--r-- 1 root root 660 Мар 26  2008 daytime
-rw-r--r-- 1 root root 549 Мар 26  2008 discard
-rw-r--r-- 1 root root 580 Мар 26  2008 echo
-rw-r--r-- 1 root root 242 Дек 13 14:21 redir
-rw-r--r-- 1 root root 727 Мар 26  2008 time
14:20:25
#ls xinetd.*
xinetd.conf  xinetd.conf.back
xinetd.d:
chargen  daytime  discard  echo  redir  time
14:20:32
#cd

14:20:38
#xconv.pl < /etc/inetd.conf > /etc/xinetd.conf
xinetd.conf       xinetd.conf.back
14:20:38
#xconv.pl < /etc/inetd.conf > /etc/xinetd.conf

14:21:06
#cat /etc/xinetd.conf
# This file generated by xconv.pl, included with the xinetd
# package.  xconv.pl was written by Rob Braun (bbraun@synack.net)
#
# The file is merely a translation of your inetd.conf file into
# the equivalent in xinetd.conf syntax.  xinetd has many
# features that may not be taken advantage of with this translation.
# Please refer to the xinetd.conf man page for more information
# on how to properly configure xinetd.
# The defaults section sets some information for all services
defaults
...
}
service tee
{
        socket_type = stream
        protocol    = tcp
        wait        = no
        user        = root
        server      = /usr/bin/tee
        server_args =
}
14:21:15
#vim /etc/xinetd.conf.back
14:21:56
#{
        server_args =
}
}
includedir /etc/xinetd.d
~
~
~
~
~
~
...
~
~
~
~
~
~
~
~
~
"/etc/xinetd.conf" 68L, 1745C записано
14:22:32
#cd /etc/

14:23:02
#cd xinetd.d/

14:23:09
#ls
chargen  daytime  discard  echo  redir  time
14:23:10
#vim echo
14:23:32
#~

14:24:27
#default: off

14:24:30
#pa waux | grep xinetd
bash: pa: команда не найдена
14:24:52
#ps waux | grep xinetd
root      3773  0.0  0.1   2396   892 ?        Ss   14:21   0:00 /usr/sbin/xinetd -pidfile /var/run/xinetd.pid -stayalive -inetd_compat -inetd_ipv6
root      6120  0.0  0.1   2396   900 ?        Ss   15:24   0:00 xinetd
root      6147  0.0  0.0    336   124 pts/3    R+   15:24   0:00 grep xinetd
14:24:57
#ps aux | grep xinetd
root      3773  0.0  0.1   2396   892 ?        Ss   14:21   0:00 /usr/sbin/xinetd -pidfile /var/run/xinetd.pid -stayalive -inetd_compat -inetd_ipv6
root      6120  0.0  0.1   2396   900 ?        Ss   15:24   0:00 xinetd
root      6156  0.0  0.1   3880   776 pts/3    S+   15:25   0:00 grep xinetd
14:25:03
#dmesg | grep -i xinetd

14:25:37
#tail dmesg
tail: невозможно открыть «dmesg» для чтения: Нет такого файла или каталога
14:25:48
#dmesg
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Linux version 2.6.32-5-686 (Debian 2.6.32-35squeeze2) (dannf@debian.org) (gcc version 4.3.5 (Debian 4.3.5-4) ) #1 SMP Fri Sep 9 20:51:05 UTC 2011
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   NSC Geode by NSC
[    0.000000]   Cyrix CyrixInstead
[    0.000000]   Centaur CentaurHauls
[    0.000000]   Transmeta GenuineTMx86
...
[   15.142563] loop: module loaded
[   20.696048] eth1: link up, 100Mbps, full-duplex, lpa 0x05E1
[   21.107947] eth2: link up, 100Mbps, full-duplex, lpa 0x05E1
[   21.518805] ip_tables: (C) 2000-2006 Netfilter Core Team
[   21.645008] nf_conntrack version 0.5.0 (8043 buckets, 32172 max)
[   21.649169] CONFIG_NF_CT_ACCT is deprecated and will be removed soon. Please use
[   21.649173] nf_conntrack.acct=1 kernel parameter, acct=1 nf_conntrack module option or
[   21.649177] sysctl net.netfilter.nf_conntrack_acct=1 to enable it.
[   31.252333] eth1: no IPv6 routers present
[   32.016051] eth2: no IPv6 routers present
14:25:51
#vim tee
--- /tmp/l3-saved-5471.17520.15493	2011-12-13 15:26:58.000000000 +0200
+++ tee	2011-12-13 15:28:28.000000000 +0200
@@ -5,7 +5,7 @@
 service tee
 {
 	disable		= yes
-	type		= INTERNAL
+	type		= UNLISTER
 	id		= echo-stream
 	socket_type	= stream
 	protocol	= tcp
@@ -14,13 +14,3 @@
 }                                                                               
 
 # This is the udp version.
-service echo
-{
-	disable		= yes
-	type		= INTERNAL
-	id		= echo-dgram
-	socket_type	= dgram
-	protocol	= udp
-	user		= root
-	wait		= yes
-}                                                                               
14:28:28
#vim /etc/services
--- /tmp/l3-saved-5471.31089.7228	2011-12-13 15:28:34.000000000 +0200
+++ /etc/services	2011-12-13 15:28:43.000000000 +0200
@@ -12,7 +12,7 @@
 
 tcpmux		1/tcp				# TCP port service multiplexer
 
-tee		5/tcp	 	tee
+#tee		5/tcp	 	tee
 
 echo		7/tcp
 echo		7/udp
14:28:43
#vim tee
--- /tmp/l3-saved-5471.14089.20256	2011-12-13 15:28:46.000000000 +0200
+++ tee	2011-12-13 15:30:02.000000000 +0200
@@ -5,11 +5,10 @@
 service tee
 {
 	disable		= yes
-	type		= UNLISTER
-	id		= echo-stream
+	type		= UNLISTED
 	socket_type	= stream
 	protocol	= tcp
-	user		= root
+	user		= nobody
 	wait		= no
 }                                                                               
 
14:30:02
#vim /etc/protocols
14:30:02
#vim /etc/protocols
14:30:17
#~
ipv6    41      IPv6            # Internet Protocol, version 6
ipv6-route 43   IPv6-Route      # Routing Header for IPv6
ipv6-frag 44    IPv6-Frag       # Fragment Header for IPv6
idrp    45      IDRP            # Inter-Domain Routing Protocol
rsvp    46      RSVP            # Reservation Protocol
gre     47      GRE             # General Routing Encapsulation
esp     50      IPSEC-ESP       # Encap Security Payload [RFC2406]
ah      51      IPSEC-AH59C     # Authentication Header [RFC2402]
skip    57      SKIP            # SKIP
ipv6-icmp 58    IPv6-ICMP       # ICMP for IPv6
...
isis    124     ISIS            # IS-IS over IPv4
sctp    132     SCTP            # Stream Control Transmission Protocol
fc      133     FC              # Fibre Channel
udplite 136     UDPLite         # UDP-Lite [RFC3828]
mpls-in-ip 137  MPLS-in-IP      # MPLS-in-IP [RFC4023]
manet   138                     # MANET Protocols [RFC5498]
hip     139     HIP             # Host Identity Protocol
shim6   140     Shim6           # Shim6 Protocol [RFC5533]
wesp    141     WESP            # Wrapped Encapsulating Security Payload
rohc    142     ROHC            # Robust Header Compression
14:31:16
#~

14:31:35
#vim xinetd.conf
--- /tmp/l3-saved-5471.23670.20362	2011-12-13 15:31:41.000000000 +0200
+++ xinetd.conf	2011-12-13 15:31:57.000000000 +0200
@@ -55,14 +55,14 @@
 	server_args = -e "Hello, amigo" 
 }
 
-service tee
-{
-	socket_type = stream
-	protocol    = tcp
-	wait        = no
-	user        = root
-	server      = /usr/bin/tee
-	server_args = 
-}
+#service tee
+#{
+#	socket_type = stream
+#	protocol    = tcp
+#	wait        = no
+#	user        = root
+#	server      = /usr/bin/tee
+#	server_args = 
+#}
 
 includedir /etc/xinetd.d
14:31:57
#k
bash: k: команда не найдена
14:32:06
#ps aux | grep xine
root      3773  0.0  0.1   2396   892 ?        Ss   14:21   0:00 /usr/sbin/xinetd -pidfile /var/run/xinetd.pid -stayalive -inetd_compat -inetd_ipv6
root      6120  0.0  0.1   2396   900 ?        Ss   15:24   0:00 xinetd
root      6386  0.0  0.1   3880   772 pts/3    S+   15:32   0:00 grep xine
14:32:21
#pkill xinetd

14:32:38
#ps aux | grep xine
root      6404  0.0  0.1   3880   772 pts/3    S+   15:32   0:00 grep xine
14:32:42
#xinetd

14:32:49
#killall -1 xinetd

14:33:03
#ps aux | grep xine
root      6413  0.1  0.1   2396   912 ?        Ss   15:32   0:00 xinetd
root      6442  0.0  0.0   3828   484 pts/3    R+   15:33   0:00 grep xine
14:33:06
#ps aux | grep xine
root      6413  0.0  0.1   2396   912 ?        Ss   15:32   0:00 xinetd
root      6451  0.0  0.0   1780   420 pts/3    R+   15:33   0:00 grep xine
14:33:12
#telnet localhost tee
telnet: could not resolve localhost/tee: Servname not supported for ai_socktype
14:33:37
#vim /etc/services
--- /tmp/l3-saved-5471.1159.25322	2011-12-13 15:33:55.000000000 +0200
+++ /etc/services	2011-12-13 15:34:00.000000000 +0200
@@ -12,7 +12,7 @@
 
 tcpmux		1/tcp				# TCP port service multiplexer
 
-#tee		5/tcp	 	tee
+tee		5/tcp	 	tee
 
 echo		7/tcp
 echo		7/udp
14:34:01
#killall -1 xinetd

14:34:06
#telnet localhost tee
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
14:34:09
#vim xinetd.d/tee
--- /tmp/l3-saved-5471.8974.2882	2011-12-13 15:34:28.000000000 +0200
+++ xinetd.d/tee	2011-12-13 15:34:43.000000000 +0200
@@ -4,7 +4,7 @@
 # This is the tcp version.
 service tee
 {
-	disable		= yes
+	disable		= no
 	type		= UNLISTED
 	socket_type	= stream
 	protocol	= tcp
14:34:44
#killall -1 xinetd

14:34:46
#telnet localhost tee
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
14:34:49
#vim xinetd.d/tee
--- /tmp/l3-saved-5471.8528.3455	2011-12-13 15:34:54.000000000 +0200
+++ xinetd.d/tee	2011-12-13 15:35:07.000000000 +0200
@@ -5,7 +5,7 @@
 service tee
 {
 	disable		= no
-	type		= UNLISTED
+#type		= UNLISTED
 	socket_type	= stream
 	protocol	= tcp
 	user		= nobody
14:35:07
#killall -1 xinetd

14:35:09
#telnet localhost tee
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
14:35:11
#vim xinetd.d/tee
--- /tmp/l3-saved-5471.6554.27591	2011-12-13 15:35:13.000000000 +0200
+++ xinetd.d/tee	2011-12-13 15:35:27.000000000 +0200
@@ -8,7 +8,7 @@
 #type		= UNLISTED
 	socket_type	= stream
 	protocol	= tcp
-	user		= nobody
+	user		= root
 	wait		= no
 }                                                                               
 
14:35:27
#killall -1 xinetd

14:35:29
#telnet localhost tee
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
14:35:31
#vim xinetd.conf
14:35:59
#{
# description: An xinetd internal service which tee's characters back to
# clients.
{
{ This  disablecp versi = no
type
#typece socket_type     = stream
        protocol        = tcp
{       user            = root
        wait            = no
        server          = /usr/bin/tee
...
~
~
~
~
~
~
~
~
~
"xinetd.d/tee" 16L, 370C записано
14:36:30
#killall -1 xinetd

14:36:32
#telnet localhost tee
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
14:36:35
#vim xinetd.d/tee
--- /tmp/l3-saved-5471.22588.25133	2011-12-13 15:36:44.000000000 +0200
+++ xinetd.d/tee	2011-12-13 15:37:36.000000000 +0200
@@ -5,7 +5,7 @@
 service tee
 {
 	disable		= no
-type		= UNLISTED
+	type		= INTERNAL
 	socket_type	= stream
 	protocol	= tcp
 	user		= root
14:37:36
#killall -1 xinetd

14:37:39
#telnet localhost tee
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
14:37:41
#vim xinetd.d/tee
14:37:50
#~
# on ho # at once.ly configure xinetd.
        instances   = 25
        # The type of logging.  This logs to a file that is specified.
        # Another option is: SYSLOG syslog_facility [syslog_level]
        log_type    = FILE /var/log/servicelog
# The defaults section sets some information for all services
        # What to log when the connection succeeds.
default # PID logs the pid of the server processing the request.
        # HOST logs the remote host's ip address.
{       # USERID logs the remote user (using RFC 1413)
...
#       wait        = no
service te
{
        server      = /usr/bin/tee
        server_args =
 }
}
includedir /etc/xinetd.d
~
"xinetd.conf" 68L, 1745C записано
14:38:23
#killall -1 xinetd

14:38:25
#telnet localhost tee
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
14:38:28
#nano xinetd.conf
--- /tmp/l3-saved-5471.12782.10762	2011-12-13 15:38:40.000000000 +0200
+++ xinetd.conf	2011-12-13 15:38:52.000000000 +0200
@@ -65,4 +65,4 @@
 	server_args = 
 }
 
-includedir /etc/xinetd.d
+#includedir /etc/xinetd.d
14:38:53
#}

14:38:54
#telnet localhost tee
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
14:39:02
#/etc/init.d/xinetd restart
Stopping internet superserver: xinetd.
Starting internet superserver: xinetd^[[A.
14:39:14
#telnet localhost echo
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
"Hello, amigo"
Connection closed by foreign host.
14:39:21
#nano /etc/services
14:39:32
#Network services, Internet style

14:40:06
#This file generated by xconv.pl, included with the xinetd

14:40:21
#11/12/13@15:39:21: START: echo pid=6915 from=127.0.0.1

14:40:30
#This file generated by xconv.pl, included with the xinetd
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
ґÔSConnection closed by foreign host.
14:40:36
#nano xinetd.conf
--- /tmp/l3-saved-5471.7214.15570	2011-12-13 15:40:41.000000000 +0200
+++ xinetd.conf	2011-12-13 15:40:49.000000000 +0200
@@ -43,6 +43,7 @@
 	user        = root
 	type        = INTERNAL
 	id          = time-stream
+	server
 }
 
 service echo
14:40:50
#This file generated by xconv.pl, included with the xinetd
real    0m0.000s
user    0m0.000s
sys     0m0.000s
14:40:58
#date
Втр Дек 13 15:41:00 EET 2011
14:41:00
#which date
/bin/date
14:41:04
#nano xinetd.conf
--- /tmp/l3-saved-5471.8936.24782	2011-12-13 15:41:06.000000000 +0200
+++ xinetd.conf	2011-12-13 15:41:39.000000000 +0200
@@ -43,7 +43,7 @@
 	user        = root
 	type        = INTERNAL
 	id          = time-stream
-	server
+	server	    = /bin/date
 }
 
 service echo
14:41:39
#This file generated by xconv.pl, included with the xinetd

14:41:43
#telnet localhost time
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
ґԜConnection closed by foreign host.
14:41:48
#/etc/init.d/xinetd restart
Stopping internet superserver: xinetd.
Starting internet superserver: xinetd.
14:42:42
#telnet localhost time
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
ґÔÔConnection closed by foreign host.
14:42:45
#telnet localhost echo
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
"Hello, amigo"
Connection closed by foreign host.
14:42:47
#nano xinetd.d/echo
14:43:07
#default: off

14:43:16
#/etc/init.d/xinetd restart
Stopping internet superserver: xinetd.
Starting internet superserver: xinetd.
14:43:26
#mv xinetd.
xinetd.conf       xinetd.conf.back  xinetd.d/
14:43:26
#mv xinetd.conf.back xinetd.conf

14:44:13
#ls -l xinetd.*
-rw-r--r-- 1 root root  289 Дек 13 15:20 xinetd.conf
xinetd.d:
итого 24
-rw-r--r-- 1 root root 798 Мар 26  2008 chargen
-rw-r--r-- 1 root root 660 Мар 26  2008 daytime
-rw-r--r-- 1 root root 549 Мар 26  2008 discard
-rw-r--r-- 1 root root 580 Мар 26  2008 echo
-rw-r--r-- 1 root root 242 Дек 13 14:21 redir
-rw-r--r-- 1 root root 727 Мар 26  2008 time

Файлы

  • /etc/xinetd.conf
  • /etc/xinetd.conf
    >
    # This file generated by xconv.pl, included with the xinetd
    # package.  xconv.pl was written by Rob Braun (bbraun@synack.net)
    #
    # The file is merely a translation of your inetd.conf file into
    # the equivalent in xinetd.conf syntax.  xinetd has many
    # features that may not be taken advantage of with this translation.
    # Please refer to the xinetd.conf man page for more information
    # on how to properly configure xinetd.
    # The defaults section sets some information for all services
    defaults
    {
            #The maximum number of requests a particular service may handle
            # at once.
            instances   = 25
            # The type of logging.  This logs to a file that is specified.
            # Another option is: SYSLOG syslog_facility [syslog_level]
            log_type    = FILE /var/log/servicelog
            # What to log when the connection succeeds.
            # PID logs the pid of the server processing the request.
            # HOST logs the remote host's ip address.
            # USERID logs the remote user (using RFC 1413)
            # EXIT logs the exit status of the server.
            # DURATION logs the duration of the session.
            log_on_success = HOST PID
            # What to log when the connection fails.  Same options as above
            log_on_failure = HOST
            # The maximum number of connections a specific IP address can
            # have to a specific service.
            per_source  = 5
    }
    service time
    {
            socket_type = stream
            protocol    = tcp
            wait        = no
            user        = root
            type        = INTERNAL
            id          = time-stream
    }
    service echo
    {
            socket_type = stream
            protocol    = tcp
            wait        = no
            user        = root
            server      = /bin/echo
            server_args = -e "Hello, amigo"
    }
    service tee
    {
            socket_type = stream
            protocol    = tcp
            wait        = no
            user        = root
            server      = /usr/bin/tee
            server_args =
    }
    

    Статистика

    Время первой команды журнала13:42:15 2011-12-13
    Время последней команды журнала14:44:13 2011-12-13
    Количество командных строк в журнале101
    Процент команд с ненулевым кодом завершения, %19.80
    Процент синтаксически неверно набранных команд, % 0.99
    Суммарное время работы с терминалом *, час 0.50
    Количество командных строк в единицу времени, команда/мин 3.35
    Частота использования команд
    vim24|=====================| 21.05%
    telnet13|===========| 11.40%
    grep9|=======| 7.89%
    killall8|=======| 7.02%
    ps7|======| 6.14%
    ~6|=====| 5.26%
    nano5|====| 4.39%
    ls5|====| 4.39%
    This4|===| 3.51%
    /etc/init.d/xinetd3|==| 2.63%
    cd3|==| 2.63%
    {2|=| 1.75%
    dmesg2|=| 1.75%
    xconv.pl2|=| 1.75%
    default:2|=| 1.75%
    /etc/xinetd.conf2|=| 1.75%
    /etc/inetd.conf2|=| 1.75%
    mv2|=| 1.75%
    which2|=| 1.75%
    }1|| 0.88%
    cp1|| 0.88%
    pkill1|| 0.88%
    Network1|| 0.88%
    13@15:39:21:1|| 0.88%
    tail1|| 0.88%
    k1|| 0.88%
    cat1|| 0.88%
    pa1|| 0.88%
    xinetd1|| 0.88%
    date1|| 0.88%
    ____
    *) Интервалы неактивности длительностью 30 минут и более не учитываются

    Справка

    Для того чтобы использовать LiLaLo, не нужно знать ничего особенного: всё происходит само собой. Однако, чтобы ведение и последующее использование журналов было как можно более эффективным, желательно иметь в виду следующее:
    1. В журнал автоматически попадают все команды, данные в любом терминале системы.

    2. Для того чтобы убедиться, что журнал на текущем терминале ведётся, и команды записываются, дайте команду w. В поле WHAT, соответствующем текущему терминалу, должна быть указана программа script.

    3. Команды, при наборе которых были допущены синтаксические ошибки, выводятся перечёркнутым текстом:
      $ l s-l
      bash: l: command not found
      

    4. Если код завершения команды равен нулю, команда была выполнена без ошибок. Команды, код завершения которых отличен от нуля, выделяются цветом.
      $ test 5 -lt 4
      Обратите внимание на то, что код завершения команды может быть отличен от нуля не только в тех случаях, когда команда была выполнена с ошибкой. Многие команды используют код завершения, например, для того чтобы показать результаты проверки

    5. Команды, ход выполнения которых был прерван пользователем, выделяются цветом.
      $ find / -name abc
      find: /home/devi-orig/.gnome2: Keine Berechtigung
      find: /home/devi-orig/.gnome2_private: Keine Berechtigung
      find: /home/devi-orig/.nautilus/metafiles: Keine Berechtigung
      find: /home/devi-orig/.metacity: Keine Berechtigung
      find: /home/devi-orig/.inkscape: Keine Berechtigung
      ^C
      

    6. Команды, выполненные с привилегиями суперпользователя, выделяются слева красной чертой.
      # id
      uid=0(root) gid=0(root) Gruppen=0(root)
      

    7. Изменения, внесённые в текстовый файл с помощью редактора, запоминаются и показываются в журнале в формате ed. Строки, начинающиеся символом "<", удалены, а строки, начинающиеся символом ">" -- добавлены.
      $ vi ~/.bashrc
      2a3,5
      >    if [ -f /usr/local/etc/bash_completion ]; then
      >         . /usr/local/etc/bash_completion
      >        fi
      

    8. Для того чтобы изменить файл в соответствии с показанными в диффшоте изменениями, можно воспользоваться командой patch. Нужно скопировать изменения, запустить программу patch, указав в качестве её аргумента файл, к которому применяются изменения, и всавить скопированный текст:
      $ patch ~/.bashrc
      В данном случае изменения применяются к файлу ~/.bashrc

    9. Для того чтобы получить краткую справочную информацию о команде, нужно подвести к ней мышь. Во всплывающей подсказке появится краткое описание команды.

      Если справочная информация о команде есть, команда выделяется голубым фоном, например: vi. Если справочная информация отсутствует, команда выделяется розовым фоном, например: notepad.exe. Справочная информация может отсутствовать в том случае, если (1) команда введена неверно; (2) если распознавание команды LiLaLo выполнено неверно; (3) если информация о команде неизвестна LiLaLo. Последнее возможно для редких команд.

    10. Большие, в особенности многострочные, всплывающие подсказки лучше всего показываются браузерами KDE Konqueror, Apple Safari и Microsoft Internet Explorer. В браузерах Mozilla и Firefox они отображаются не полностью, а вместо перевода строки выводится специальный символ.

    11. Время ввода команды, показанное в журнале, соответствует времени начала ввода командной строки, которое равно тому моменту, когда на терминале появилось приглашение интерпретатора

    12. Имя терминала, на котором была введена команда, показано в специальном блоке. Этот блок показывается только в том случае, если терминал текущей команды отличается от терминала предыдущей.

    13. Вывод не интересующих вас в настоящий момент элементов журнала, таких как время, имя терминала и других, можно отключить. Для этого нужно воспользоваться формой управления журналом вверху страницы.

    14. Небольшие комментарии к командам можно вставлять прямо из командной строки. Комментарий вводится прямо в командную строку, после символов #^ или #v. Символы ^ и v показывают направление выбора команды, к которой относится комментарий: ^ - к предыдущей, v - к следующей. Например, если в командной строке было введено:

      $ whoami
      
      user
      
      $ #^ Интересно, кто я?
      
      в журнале это будет выглядеть так:
      $ whoami
      
      user
      
      Интересно, кто я?

    15. Если комментарий содержит несколько строк, его можно вставить в журнал следующим образом:

      $ whoami
      
      user
      
      $ cat > /dev/null #^ Интересно, кто я?
      
      Программа whoami выводит имя пользователя, под которым 
      мы зарегистрировались в системе.
      -
      Она не может ответить на вопрос о нашем назначении 
      в этом мире.
      
      В журнале это будет выглядеть так:
      $ whoami
      user
      
      Интересно, кто я?
      Программа whoami выводит имя пользователя, под которым
      мы зарегистрировались в системе.

      Она не может ответить на вопрос о нашем назначении
      в этом мире.
      Для разделения нескольких абзацев между собой используйте символ "-", один в строке.

    16. Комментарии, не относящиеся непосредственно ни к какой из команд, добавляются точно таким же способом, только вместо симолов #^ или #v нужно использовать символы #=

    17. Содержимое файла может быть показано в журнале. Для этого его нужно вывести с помощью программы cat. Если вывод команды отметить симоволами #!, содержимое файла будет показано в журнале в специально отведённой для этого секции.
    18. Для того чтобы вставить скриншот интересующего вас окна в журнал, нужно воспользоваться командой l3shot. После того как команда вызвана, нужно с помощью мыши выбрать окно, которое должно быть в журнале.
    19. Команды в журнале расположены в хронологическом порядке. Если две команды давались одна за другой, но на разных терминалах, в журнале они будут рядом, даже если они не имеют друг к другу никакого отношения.
      1
          2
      3   
          4
      
      Группы команд, выполненных на разных терминалах, разделяются специальной линией. Под этой линией в правом углу показано имя терминала, на котором выполнялись команды. Для того чтобы посмотреть команды только одного сенса, нужно щёкнуть по этому названию.

    О программе

    LiLaLo (L3) расшифровывается как Live Lab Log.
    Программа разработана для повышения эффективности обучения Unix/Linux-системам.
    (c) Игорь Чубин, 2004-2008

    $Id$