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

Содержание

Журнал

Среда (05/27/09)

/dev/pts/0
09:37:42
$su -s
su: option requires an argument -- 's'
Использование: su [параметры] [имя пользователя]
Параметры:
  -c, --command COMMAND         передать команду COMMAND вызываемой оболочке
  -h, --help                    показать данное сообщение и закончить работу
  -, -l, --login                запускать оболочку как регистрационную
  -m, -p,
  --preserve-environment        не сбрасывать переменные окружения и
                                сохранить запустившую оболочку
  -s, --shell SHELL             использовать значение переменной SHELL
                                вместо значения из файла passwd
прошло 28 минут
10:06:26
$su -
Пароль:
l3-agent is already running: pid=3856; pidfile=/root/.lilalo/l3-agent.pid
10:06:35
#cd /tmp

10:06:46
#tail -f date2.log
Wed May 27 10:06:01 EEST 2009
Wed May 27 10:08:01 EEST 2009
Wed May 27 10:10:01 EEST 2009
Wed May 27 10:12:01 EEST 2009
Wed May 27 10:14:01 EEST 2009
Wed May 27 10:16:01 EEST 2009
Wed May 27 10:18:01 EEST 2009
Wed May 27 10:20:01 EEST 2009
^C
прошло 16 минут
10:22:50
#cd /var/log

прошло 17 минут
10:40:23
#ls |grep cron

10:40:29
#ls
apt            daemon.log  exim4           lp-errs        samba
atop           debug       faillog         lpr.log        syslog
atop.log       dmesg       fontconfig.log  mail.err       user.log
atop.log.1     dmesg.0     fsck            mail.info      wtmp
auth.log       dmesg.1.gz  gdm             mail.log       Xorg.0.log
boot           dmesg.2.gz  gidentd.log     mail.warn      Xorg.0.log.old
bootstrap.log  dmesg.3.gz  kern.log        messages
btmp           dmesg.4.gz  lastlog         news
ConsoleKit     dpkg.log    lp-acct         pycentral.log
10:40:34
#dmesg
[    1.460938] hub 4-0:1.0: 2 ports detected
[    1.461074] uhci_hcd 0000:00:1d.0: PCI INT A -> GSI 23 (level, low) -> IRQ 23
[    1.461129] uhci_hcd 0000:00:1d.0: setting latency timer to 64
[    1.461132] uhci_hcd 0000:00:1d.0: UHCI Host Controller
[    1.461199] uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 5
[    1.461284] uhci_hcd 0000:00:1d.0: irq 23, io base 0x0000d080
[    1.461360] usb usb5: New USB device found, idVendor=1d6b, idProduct=0001
[    1.461411] usb usb5: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.461477] usb usb5: Product: UHCI Host Controller
[    1.461523] usb usb5: Manufacturer: Linux 2.6.29-2-686 uhci_hcd
...
[   23.250997] atl1 0000:02:00.0: eth0 link is up 100 Mbps full duplex
[   23.251257] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[   31.913294] [drm] Initialized drm 1.1.0 20060810
[   31.922025] pci 0000:00:02.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[   31.922030] pci 0000:00:02.0: setting latency timer to 64
[   31.923063] mtrr: type mismatch for c0000000,10000000 old: write-back new: write-combining
[   31.923067] [drm] MTRR allocation failed.  Graphics performance may suffer.
[   31.923088] pci 0000:00:02.0: irq 27 for MSI/MSI-X
[   31.923104] [drm] Initialized i915 1.6.0 20080730 on minor 0
[   33.592031] eth0: no IPv6 routers present
10:40:58
#echo 'test test test' |logger

прошло 112 минут
12:33:53
#echo 'test test test' |logger

12:34:54
#echo 'test test test' |logger

12:35:00
#echo 'test test test' |logger

12:35:01
#echo 'test test test' |logger

12:35:01
#echo 'test test test' |logger

12:35:02
#echo 'test test test' |logger

12:35:02
#echo 'test test test' |logger

12:35:02
#echo 'test test test' |logger

12:35:03
#echo 'test test test' |logger

12:35:03
#echo 'test test test' |logger

12:35:04
#echo 'test test test' |logger

12:35:04
#echo 'test test test' |logger

12:35:05
#echo 'test test test' |logger

12:35:05
#echo 'test test test' |logger

12:35:06
#echo 'test test test' |logger

12:35:06
#echo 'test test test' |logger

12:35:06
#echo 'test test test' |logger

12:35:07
#echo 'test test test' |logger

12:35:07
#echo 'test test test' |logger

12:35:08
#echo 'test test test' |logger

12:35:08
#echo 'test test test' |logger

12:35:08
#echo 'test test test' |logger

12:35:09
#echo 'test test test' |logger

12:35:09
#echo 'test test test' |logger

12:35:09
#echo 'test test test' |logger

12:35:10
#echo 'test test test' |logger

12:35:10
#echo 'test test test' |logger

12:35:41
#echo 'test test test' |logger

12:35:42
#echo 'test test test' |logger

12:35:42
#echo 'test test test' |logger

12:35:43
#echo test |logger

12:39:08
#echo test |logger

12:42:06
#echo test |logger

12:45:51
#echo test |logger

прошло >2 часов
15:22:35
#kill -9 4276
bash: kill: (4276) - Нет такого процесса
прошло 88 минут
16:51:16
#ps aux |grep cron
root     10112  0.0  0.0   4076   952 pts/4    S+   16:49   0:00 watch ps aux | grep cron
root     10292  0.0  0.0   4276  1020 ?        Ss   16:50   0:00 /usr/sbin/cron
root     11073  0.0  0.0   3972   772 pts/13   R+   16:51   0:00 grep cron
16:51:44
#kill -9 10292

16:51:54
#vi /etc/monit/monit.rc
16:52:43
#~
160 #  check device datafs with path /dev/sdb1
161 #    start program  = "/bin/mount /data"
162 #    stop program  = "/bin/umount /data"
163 #    if failed permission 660 then unmonitor
164 #    if failed uid root then unmonitor
165 #    if failed gid disk then unmonitor
166 #    if space usage > 80% for 5 times within 15 cycles then alert
167 #    if space usage > 99% then stop
168 #    if inode usage > 30000 then alert
169 #    if inode usage > 99% then stop
170 #    group server
16:55:15
#monit stop
monit: please specify the configured service name or 'all' after stop
16:55:22
#monit
monit daemon at 5872 awakened
16:55:32
#monit restart
monit: please specify the configured service name or 'all' after restart
16:55:47
#ps aux |grep monit
root      5872  0.0  0.0  21108  1268 ?        Sl   16:42   0:00 monit
root     14108  0.0  0.0   3972   756 pts/13   R+   16:56   0:00 grep monit
16:56:15
#kill 5872

16:56:23
#ps aux |grep monit
root     14144  0.0  0.0   3972   756 pts/13   R+   16:56   0:00 grep monit
16:56:25
#monit
Starting monit daemon
16:56:33
#cd /etc/syslog-ng

16:59:57
#ls
syslog-ng.conf
16:59:59
#vi syslog-ng.conf
прошло 10 минут
17:10:21
#cat /etc/monit/monitrc
## or sender using the MAIL-FORMAT statement. Macros such as $DATE, etc.
## are expanded at runtime. For example, to override the sender:
#
# set mail-format { from: monit@foo.bar }
#
#
## You can set alert recipients here whom will receive alerts if/when a
## service defined in this file has errors. Alerts may be restricted on
## events by using a filter as in the second example below.
#
...
###############################################################################
## Includes
###############################################################################
##
## It is possible to include additional configuration parts from other files or
## directories.
#
#  include /etc/monit.d/*
#
#
17:10:55
#vi /etc/monit/monitrc
17:11:31
#vi syslog-ng.conf
17:16:37
#kill -9 17786

17:16:54
#monit stop
monit: please specify the configured service name or 'all' after stop
прошло 11 минут
17:28:13
#monit
monit daemon at 14170 awakened
17:28:20
#ps aux |grep monit
root     14170  0.0  0.0  22132  1300 ?        Sl   16:56   0:00 monit
17:28:30
#kill 14170

17:28:36
#monit
Starting monit daemon
17:28:43
#kill 28620

17:28:57
#ssh quiz@10.0.35.100
quiz@10.0.35.100's password:
+----------------------------------
| ТЕМЫ ПЕРВОГО ДНЯ
| man, shell, vi, screen
| Общее количество вопросов: 40
|
| Вам будут заданы вопросы и показаны варианты ответа на них.
| После каждого вопроса вы должны вводить номер варианта ответа, который вы считаете наиболее правильным.
| После ввода номера нужно нажимать <ENTER>.
| Возвращаться назад и менять ответ, после того как вы нажали <ENTER>, нельзя.
...
4
Каким символом разделяются аргументы командной строки в UNIX?
1 ;
2 ,
3 .
4 &
5 пробел
6 табуляция
7 разделять их нельзя
Connection to 10.0.35.100 closed.
17:38:25
#ssh quiz@10.0.35.100
3
Вы не любите vi несмотря ни на что. Вы хотите его не использовать,
и прекрасно обходитесь редактором nano. Тем не менее vi подстерегает вас в самых неожиданных местах.
Например, вы запустили vipw чтобы отредактировать файл паролей, а там опять этот редактор!
Как сделать так чтобы вместо vi в таких случаях вызывался nano?
1 Никак. Команда называется vipw, потому вызывается и редактор vi
2 вызвать nanopw
3 EDITOR=nano
4 set EDITOR=nano
5 export EDITOR=nano
...
но вместо желаемого подключения получаете какой-то странный текст.
Что это?
1 Это список активных сеансов screen, их больше одного, поэтому при запуске screen нужно указать, к какому подключаться
2 Это вызвался режим тонкой настройки screen
3 screen должен быть запущен в multiuser-режиме (multiuser on)
4 Эта сборка screen не поддерживает несколько одновременных подключений
5 Для этого необходимо выполнять screen в режиме ядра
1
Your score: 32
Connection to 10.0.35.100 closed.
прошло 23 минуты
18:01:30
#ssh 10.0.35.100
root@10.0.35.100's password:
Linux linux0 2.6.18-6-xen-686 #1 SMP Sun Feb 10 22:43:13 UTC 2008 i686
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed May 27 19:29:45 2009 from 192.168.15.253

Четверг (05/28/09)

09:36:35
#ifconfig
eth0      Link encap:Ethernet  HWaddr 00:1b:fc:7d:bd:0e
          inet addr:192.168.15.14  Bcast:192.168.15.255  Mask:255.255.255.0
          inet6 addr: fe80::21b:fcff:fe7d:bd0e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:67513 errors:0 dropped:0 overruns:0 frame:0
          TX packets:59091 errors:0 dropped:0 overruns:0 carrier:3
          collisions:0 txqueuelen:1000
          RX bytes:53297008 (50.8 MiB)  TX bytes:5952025 (5.6 MiB)
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:7070 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7070 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:616008 (601.5 KiB)  TX bytes:616008 (601.5 KiB)
09:44:56
#cd /home

09:45:02
#ls -l
итого 8
drwxr-xr-x 4 quiz quiz 4096 Май 27 15:11 quiz
drwxr-xr-x 3 user user 4096 Май 25 21:00 user
09:45:06
#cd quiz

09:45:12
#ls -l
итого 24
-rw-r--r-- 1 quiz quiz 18262 Май 27 17:20 quiz
-rw-r--r-- 1 quiz quiz  1093 Май 27 09:14 start-quiz
09:45:15
#cat start-quiz
#!/usr/bin/perl
$id = $ENV{"SSH_CLIENT"};
$id = (split(/\s+/, $id))[0];
if ($id) { $id .= "-"};
$quiz_file = "quiz";
$log_file = ".quiz/$id".time().'.log';
@Questions = ();
$Score = 0;
sub ask_question($)
{
...
    }
    else {
        $question .= $_;
    };
}
close(QUIZ);
for $question (@Questions) {
    $Score += ask_question($question);
}
print "Your score: $Score\n";
09:45:30
#ls -l
итого 24
-rw-r--r-- 1 quiz quiz 18262 Май 27 17:20 quiz
-rw-r--r-- 1 quiz quiz  1093 Май 27 09:14 start-quiz
09:46:38
#exit
exit
Connection to 10.0.35.100 closed.
прошло 13 минут
10:00:34
#l3
l3 [command]:
    cd new_context   - change current lilalo context
    pwd              - show current lilalo context
    on               - switch writing on (NOT IMPLEMENTED YET)
    off              - switch writing off (NOT IMPLEMENTED YET)
/dev/pts/4
10:07:36
$ls /darkroom
ls: невозможно получить доступ к /darkroom: Нет такого файла или каталога
/dev/pts/4
10:09:09
$ls darkroom/
ls: невозможно получить доступ к darkroom/: Отказано в доступе
10:09:20
$cd ..

10:09:29
$ls darkroom/
ls: невозможно получить доступ к darkroom/secret: Отказано в доступе
secret
прошло 15 минут
/dev/pts/4
10:24:54
$chfn /etc/shadow
proxy:*:14388:0:99999:7:::
"/etc/shadow" [только для чтения] 26L, 775C
www-data:*:14388:0:99999:7:::
backup:*:14388:0:99999:7:::
list:*:14388:0:99999:7:::
irc:*:14388:0:99999:7:::
gnats:*:14388:0:99999:7:::
nobody:*:14388:0:99999:7:::
libuuid:!:14388:0:99999:7:::
sshd:*:14388:0:99999:7:::
messagebus:*:14389:0:99999:7:::
polkituser:*:14389:0:99999:7:::
прошло 97 минут
/dev/pts/0
12:02:00
#l3 on
switching on
прошло 12 минут
12:14:40
#ls
syslog-ng.conf
12:14:46
#ps
  PID TTY          TIME CMD
 6603 pts/13   00:00:00 bash
11716 pts/13   00:00:00 ps
12:14:48
#ls
syslog-ng.conf
12:14:50
#pwd
/etc/syslog-ng
12:14:54
#less
прошло 86 минут
13:40:55
#usr/share/dict/propernames.gz | tr A-Z a-z | head
gzip: usr/share/dict/propernames.gz: No such file or directory
13:41:58
#cd ~/

13:42:27
#zcat usr/share/dict/propernames.gz | tr A-Z a-z | head -200
gzip: usr/share/dict/propernames.gz: No such file or directory
13:42:34
#zcat /usr/share/dict/propernames.gz | tr A-Z a-z | head -200
angelica
angus
anita
ann
anna
annard
anne
annie
anthea
anthony
...
chris
christian
christie
christina
christofer
christophe
christopher
chuck
cinderella
cindie
13:50:53
#userdel
Использование: userdel [параметры] имя пользователя
Параметры:
  -f, --force                   удалять файлы, даже если они
                                не принадлежат пользователю
  -h, --help                    показать данное сообщение и закончить работу
  -r, --remove                  удалить домашний каталог и почтовый ящик
13:52:48
#useradd -s /bin/bash -m -p 'echo $RANDOM$RANDOM' test

13:59:09
#ls /home
test  user  user1
13:59:16
#userdel -r test

14:02:42
#cat listus

Файлы

  • /etc/monit/monitrc
  • listus
  • start-quiz
  • /etc/monit/monitrc
    >
    ## or sender using the MAIL-FORMAT statement. Macros such as $DATE, etc.
    ## are expanded at runtime. For example, to override the sender:
    #
    # set mail-format { from: monit@foo.bar }
    #
    #
    ## You can set alert recipients here whom will receive alerts if/when a
    ## service defined in this file has errors. Alerts may be restricted on
    ## events by using a filter as in the second example below.
    #
    # set alert sysadm@foo.bar                       # receive all alerts
    # set alert manager@foo.bar only on { timeout }  # receive just service-
    #                                                # timeout alert
    #
    #
    ## Monit has an embedded web server which can be used to view status of
    ## services monitored, the current configuration, actual services parameters
    ## and manage services from a web interface.
    #
    # set httpd port 2812 and
    #     use address localhost  # only accept connection from localhost
    #     allow localhost        # allow localhost to connect to the server and
    #     allow admin:monit      # require user 'admin' with password 'monit'
    #
    #
    ###############################################################################
    ## Services
    ###############################################################################
    ##
    ## Check general system resources such as load average, cpu and memory
    ## usage. Each test specifies a resource, conditions and the action to be
    ## performed should a test fail.
    #
    #  check system myhost.mydomain.tld
    #    if loadavg (1min) > 4 then alert
    #    if loadavg (5min) > 2 then alert
    #    if memory usage > 75% then alert
    #    if cpu usage (user) > 70% then alert
    #    if cpu usage (system) > 30% then alert
    #    if cpu usage (wait) > 20% then alert
    #
    #
    ## Check a file for existence, checksum, permissions, uid and gid. In addition
    ## to alert recipients in the global section, customized alert will be sent to
    ## additional recipients by specifying a local alert handler. The service may
    ## be grouped using the GROUP option.
    #
    #  check file apache_bin with path /usr/local/apache/bin/httpd
    #    if failed checksum and
    #       expect the sum 8f7f419955cefa0b33a2ba316cba3659 then unmonitor
    #    if failed permission 755 then unmonitor
    #    if failed uid root then unmonitor
    #    if failed gid root then unmonitor
    #    alert security@foo.bar on {
    #           checksum, permission, uid, gid, unmonitor
    #        } with the mail-format { subject: Alarm! }
    #    group server
    #
    #
    ## Check that a process is running, in this case Apache, and that it respond
    ## to HTTP and HTTPS requests. Check its resource usage such as cpu and memory,
    ## and number of children. If the process is not running, monit will restart
    ## it by default. In case the service was restarted very often and the
    ## problem remains, it is possible to disable monitoring using the TIMEOUT
    ## statement. This service depends on another service (apache_bin) which
    ## is defined above.
    #
      check process cron with pidfile /var/run/crondd.pid
        start program = "/etc/init.d/cron start"
        stop program  = "/etc/init.d/cron stop"
    #    if cpu > 60% for 2 cycles then alert
    #    if cpu > 80% for 5 cycles then restart
    #    if totalmem > 200.0 MB for 5 cycles then restart
    #    if children > 250 then restart
    #    if loadavg(5min) greater than 10 for 8 cycles then stop
    #    if failed host www.tildeslash.com port 80 protocol http
    #       and request "/monit/doc/next.php"
    #       then restart
    #    if failed port 443 type tcpssl protocol http
    #       with timeout 15 seconds
    #       then restart
    #    if 3 restarts within 5 cycles then timeout
    #    depends on apache_bin
    #    group server
    #
    #
    ## Check device permissions, uid, gid, space and inode usage. Other services,
    ## such as databases, may depend on this resource and an automatically graceful
    ## stop may be cascaded to them before the filesystem will become full and data
    ## lost.
    #
    #  check device datafs with path /dev/sdb1
    #    start program  = "/bin/mount /data"
    #    stop program  = "/bin/umount /data"
    #    if failed permission 660 then unmonitor
    #    if failed uid root then unmonitor
    #    if failed gid disk then unmonitor
    #    if space usage > 80% for 5 times within 15 cycles then alert
    #    if space usage > 99% then stop
    #    if inode usage > 30000 then alert
    #    if inode usage > 99% then stop
    #    group server
    #
    #
    ## Check a file's timestamp. In this example, we test if a file is older
    ## than 15 minutes and assume something is wrong if its not updated. Also,
    ## if the file size exceed a given limit, execute a script
    #
    #  check file database with path /data/mydatabase.db
    #    if failed permission 700 then alert
    #    if failed uid data then alert
    #    if failed gid data then alert
    #    if timestamp > 15 minutes then alert
    #    if size > 100 MB then exec "/my/cleanup/script"
    #
    #
    ## Check directory permission, uid and gid.  An event is triggered if the
    ## directory does not belong to the user with uid 0 and gid 0.  In addition,
    ## the permissions have to match the octal description of 755 (see chmod(1)).
    #
    #  check directory bin with path /bin
    #    if failed permission 755 then unmonitor
    #    if failed uid 0 then unmonitor
    #    if failed gid 0 then unmonitor
    #
    #
    ## Check a remote host network services availability using a ping test and
    ## check response content from a web server. Up to three pings are sent and
    ## connection to a port and a application level network check is performed.
    #
    #  check host myserver with address 192.168.1.1
    #    if failed icmp type echo count 3 with timeout 3 seconds then alert
    #    if failed port 3306 protocol mysql with timeout 15 seconds then alert
    #    if failed url
    #       http://user:password@www.foo.bar:8080/?querystring
    #       and content == 'action="j_security_check"'
    #       then alert
    #
    #
    ###############################################################################
    ## Includes
    ###############################################################################
    ##
    ## It is possible to include additional configuration parts from other files or
    ## directories.
    #
    #  include /etc/monit.d/*
    #
    #
    
    listus
    >
    start-quiz
    >
    #!/usr/bin/perl
    $id = $ENV{"SSH_CLIENT"};
    $id = (split(/\s+/, $id))[0];
    if ($id) { $id .= "-"};
    $quiz_file = "quiz";
    $log_file = ".quiz/$id".time().'.log';
    @Questions = ();
    $Score = 0;
    sub ask_question($)
    {
        my $question = $_[0];
        my %answer_score;
        $i=1;
        $question =~ s{^(#!?)}{$1 eq '#!' and $answer_score{$i}=1;$i++}gme;
        print $question;
        $answer=<>;
        chomp $answer;
        open(LOG, ">>$log_file")
            or die "Can't open $log_file for writing";
        print LOG $question;
        if ($answer_score{$answer}) {
            print LOG "+++ (", $answer,")\n";
        }
        else {
            print LOG "--- (", join(" ", sort(keys(%answer_score))), ")\n";
        }
        close(LOG);
        return $answer_score{$answer};
    }
    open(QUIZ, $quiz_file);
    $question="";
    while(<QUIZ>)
    {
        s/<!--.*-->//g;
        if (/^\s*$/) {
            if ($question) {
                push @Questions, $question;
                $question = "";
            }
        }
        else {
            $question .= $_;
        };
    }
    close(QUIZ);
    for $question (@Questions) {
        $Score += ask_question($question);
    }
    print "Your score: $Score\n";
    

    Статистика

    Время первой команды журнала09:37:42 2009- 5-27
    Время последней команды журнала14:02:42 2009- 5-28
    Количество командных строк в журнале100
    Процент команд с ненулевым кодом завершения, %12.00
    Процент синтаксически неверно набранных команд, % 0.00
    Суммарное время работы с терминалом *, час 3.81
    Количество командных строк в единицу времени, команда/мин 0.44
    Частота использования команд
    logger35|=======================| 23.97%
    echo35|=======================| 23.97%
    ls12|========| 8.22%
    cd7|====| 4.79%
    monit7|====| 4.79%
    kill6|====| 4.11%
    ps5|===| 3.42%
    grep5|===| 3.42%
    vi4|==| 2.74%
    head3|==| 2.05%
    cat3|==| 2.05%
    ssh3|==| 2.05%
    tr3|==| 2.05%
    l32|=| 1.37%
    userdel2|=| 1.37%
    zcat2|=| 1.37%
    su2|=| 1.37%
    ifconfig1|| 0.68%
    pwd1|| 0.68%
    propernames.gz1|| 0.68%
    chfn1|| 0.68%
    useradd1|| 0.68%
    dmesg1|| 0.68%
    tail1|| 0.68%
    less1|| 0.68%
    ~1|| 0.68%
    exit1|| 0.68%
    ____
    *) Интервалы неактивности длительностью 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$