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

Содержание

Журнал

Суббота (04/25/09)

/dev/pts/1
19:33:43
#ls
install
19:34:06
#ls -a
.          .bash_history  .cpan     install  .profile
..         .bash_profile  .debtags  .l3rc    .ssh
.aptitude  .bashrc        .gnupg    .lilalo  .viminfo
19:34:08
#wget http://xgu.ru/lilalo/lilalo.tar.gz
--2009-04-25 20:34:13--  http://xgu.ru/lilalo/lilalo.tar.gz
Resolving xgu.ru... 194.150.93.78
Connecting to xgu.ru|194.150.93.78|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 151793 (148K) [application/x-gzip]
Saving to: `lilalo.tar.gz'
100%[======================================>] 151,793      232K/s   in 0.6s
2009-04-25 20:34:14 (232 KB/s) - `lilalo.tar.gz' saved [151793/151793]
19:34:14
#tar xzvf lilalo.tar.gz
lilalo/
lilalo/l3config.pm
lilalo/lm-ssh
lilalo/lm
lilalo/tail-backend.pl
lilalo/PM/
lilalo/PM/Text-Iconv-1.4.tar.gz
lilalo/PM/Term-VT102-0.82.tar.gz
lilalo/FILES
lilalo/l3prompt
...
lilalo/CVS/
lilalo/CVS/Repository
lilalo/CVS/Root
lilalo/CVS/Entries
lilalo/l3-cgi
lilalo/lilalo.kdi
lilalo/HISTORY
lilalo/LICENSE
lilalo/l3-backend
lilalo/l3-report
19:34:23
#ls
install  lilalo  lilalo.tar.gz
19:34:25
#cd lilalo

19:34:26
#ls
CVS      INSTALL      l3-config    l3scripts   lm-report  rebuild-all-logs
DELETE   l3-agent     l3config.pm  l3-upload   lm-ssh     share
doc      l3-backend   l3files      LICENSE     mysql      tail-all.pl
FILES    l3bashrc     l3-frontend  lilalo.kdi  nohup.out  tail-backend.pl
HISTORY  l3-cgi       l3prompt     lm          PM         taillast.pl
install  l3-cgi-lite  l3-report    lm-install  README     TODO
19:34:27
#ls /usr/bin/
dprofpp                       pbmtozinc         soelim
dselect                       pbmupc            sort
du                            pcimodules        spctoppm
dumphint                      pcretest          splain
dumpkeys                      pcxtoppm          split
dvipdf                        pdb               splitfont
edit                          pdb2.5            sprof
editor                        pdf2dsc           sputoppm
eject                         pdf2ps            sq
enc2xs                        pdfopt            ssh
...
lispmtopgm                    ppmtojpeg         xxd
lnstat                        ppmtoleaf         ybmtopbm
locale                        ppmtolj           yes
localedef                     ppmtomap          ysh
locate                        ppmtomitsu        yuvsplittoppm
lockfile                      ppmtompeg         yuvtoppm
lockfile-create               ppmtoneo          zdump
lockfile-remove               ppmtopcx          zeisstopnm
lockfile-touch                ppmtopgm          zsoelim
logger                        ppmtopi1
19:35:02
#cp l3-backend /usr/bin/

19:35:12
#chmod +x /usr/bin/l3-backend

19:35:21
#vi /etc/rc.local
19:36:00
#~
acpid              ifupdown               mtab.sh        sendsigs
atd                ifupdown-clean         networking     single
bootlogd           keymap.sh              nfs-common     skeleton
bootmisc.sh        killprocs              nginx          ssh
checkfs.sh         klogd                  openbsd-inetd  stop-bootlogd
checkroot.sh       libdevmapper1.02       portmap        stop-bootlogd-single
console-screen.sh  module-init-tools      procps         sysklogd
cron               mountall-bootclean.sh  rc             udev
exim4              mountall.sh            rc.local       udev-mtab
glibc.sh           mountdevsubfs.sh       rcS            umountfs
halt               mountkernfs.sh         README         umountnfs.sh
hostname.sh        mountnfs-bootclean.sh  reboot         umountroot
hwclockfirst.sh    mountnfs.sh            rmnologin      urandom
hwclock.sh         mountoverflowtmp       rsyslog        x11-common
19:36:02
#cd -
/root
19:36:27
#cd -
/root/lilalo
19:36:30
#ls
CVS      INSTALL      l3-config    l3scripts   lm-report  rebuild-all-logs
DELETE   l3-agent     l3config.pm  l3-upload   lm-ssh     share
doc      l3-backend   l3files      LICENSE     mysql      tail-all.pl
FILES    l3bashrc     l3-frontend  lilalo.kdi  nohup.out  tail-backend.pl
HISTORY  l3-cgi       l3prompt     lm          PM         taillast.pl
install  l3-cgi-lite  l3-report    lm-install  README     TODO
19:36:33
#ls PM/
Term-VT102-0.82.tar.gz  Text-Iconv-1.4.tar.gz
19:36:55
#vi /etc/rc.local
--- /tmp/l3-saved-2180.16290.32704	2009-04-25 20:37:19.000000000 +0400
+++ /etc/rc.local	2009-04-25 20:37:34.000000000 +0400
@@ -11,4 +11,6 @@
 #
 # By default this script does nothing.
 
+/etc/init.d/l3-backend
+
 exit 0
19:37:34
#ls /etc/init.d/l3-backend
ls: cannot access /etc/init.d/l3-backend: No such file or directory
19:37:53
#mkdir -p /var/lilalo/lablogs-xml

19:38:27
#ls /var/lilalo/
lablogs-xml
19:38:30
#chgrp -R www-data /var/lilalo/lablogs-xml

19:38:59
#chmod -R g+ws /var/lilalo/lablogs-xml

19:39:04
#cd /usr/bin/

19:39:13
#./l3-backend

19:39:17
#aptitude install apache
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Reading task descriptions... Done
No candidate version found for apache
No candidate version found for apache
No packages will be installed, upgraded, or removed.
0 packages upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
Need to get 0B of archives. After unpacking 0B will be used.
Writing extended state information... Done
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Reading task descriptions... Done
19:39:54
#aptitude install apache2 -s
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Reading task descriptions... Done
The following NEW packages will be installed:
  apache2 apache2-mpm-worker{a} apache2-utils{a} apache2.2-common{a}
  libapr1{a} libaprutil1{a} libmysqlclient15off{a} libpq5{a}
  mysql-common{a} openssl-blacklist{a} ssl-cert{a}
0 packages upgraded, 11 newly installed, 0 to remove and 1 not upgraded.
Need to get 10.0MB of archives. After unpacking 22.7MB will be used.
Do you want to continue? [Y/n/?] Y
Would download/install/remove packages.
19:40:03
#aptitude install apache2
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Reading task descriptions... Done
The following NEW packages will be installed:
  apache2 apache2-mpm-worker{a} apache2-utils{a} apache2.2-common{a}
  libapr1{a} libaprutil1{a} libmysqlclient15off{a} libpq5{a}
  mysql-common{a} openssl-blacklist{a} ssl-cert{a}
...
invoke-rc.d: initscript apache2, action "start" failed.
Setting up apache2 (2.2.9-10+lenny2) ...
Setting up ssl-cert (1.0.23) ...
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Writing extended state information... Done
Reading task descriptions... Done
19:40:37
#/etc/init.d/nginx stop
Stopping nginx: nginx.
19:41:10
#aptitude purge nginx
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Reading task descriptions... Done
The following packages will be REMOVED:
  nginx{p}
0 packages upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
Need to get 0B of archives. After unpacking 524kB will be freed.
...
 nginx
E: Sub-process /usr/bin/dpkg returned an error code (1)
A package failed to install.  Trying to recover:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Writing extended state information... Done
Reading task descriptions... Done
19:41:27
#aptitude isntall nginx
Unknown command "isntall"
aptitude 0.4.11.11
Usage: aptitude [-S fname] [-u|-i]
       aptitude [options] <action> ...
  Actions (if none is specified, aptitude will enter interactive mode):
 install      - Install/upgrade packages
 remove       - Remove packages
 purge        - Remove packages and their configuration files
 hold         - Place packages on hold
 unhold       - Cancel a hold command for a package
...
 -t [release]   Set the release from which packages should be installed
 -q             In command-line mode, suppress the incremental progress
                indicators.
 -o key=val     Directly set the configuration option named 'key'
 --with(out)-recommends Specify whether or not to treat recommends as
                strong dependencies
 -S fname       Read the aptitude extended status info from fname.
 -u             Download new package lists on startup.
 -i             Perform an install run on startup.
                  This aptitude does not have Super Cow Powers.
19:41:41
#aptitude install nginx
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Reading task descriptions... Done
The following packages will be upgraded:
  nginx
1 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 255kB of archives. After unpacking 41.0kB will be used.
...
Installing new version of config file /etc/nginx/nginx.conf ...
Installing new version of config file /etc/init.d/nginx ...
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Writing extended state information... Done
Reading task descriptions... Done
Current status: 0 updates [-1].
19:41:55
#aptitude purge nginx
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Reading task descriptions... Done
The following packages will be REMOVED:
  nginx{p}
0 packages upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
Need to get 0B of archives. After unpacking 565kB will be freed.
...
Stopping nginx: nginx.
Purging configuration files for nginx ...
Processing triggers for man-db ...
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Writing extended state information... Done
Reading task descriptions... Done
19:42:15
#aptitude reinstall apache2
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Reading task descriptions... Done
The following packages will be REINSTALLED:
  apache2
0 packages upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 0 not upgraded.
Need to get 0B/44.5kB of archives. After unpacking 0B will be used.
Writing extended state information... Done
(Reading database ... 29946 files and directories currently installed.)
Preparing to replace apache2 2.2.9-10+lenny2 (using .../apache2_2.2.9-10+lenny2_all.deb) ...
Unpacking replacement apache2 ...
Setting up apache2 (2.2.9-10+lenny2) ...
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Reading task descriptions... Done
19:42:24
#/etc/init.d/apache2 start
Starting web server: apache2.
19:42:43
#ls /usr/lib/cgi-bin/

19:43:06
#cd /etc/apache2/

прошло 13 минут
19:56:10
#ls
apache2.conf  envvars     mods-available  ports.conf       sites-enabled
conf.d        httpd.conf  mods-enabled    sites-available
19:56:10
#vi sites-available/default
19:56:10
#vi sites-available/default
19:56:10
#vi sites-available/default
19:56:37
#cd /root/lilalo

19:56:44
#ls
CVS      INSTALL      l3-config    l3scripts   lm-report  rebuild-all-logs
DELETE   l3-agent     l3config.pm  l3-upload   lm-ssh     share
doc      l3-backend   l3files      LICENSE     mysql      tail-all.pl
FILES    l3bashrc     l3-frontend  lilalo.kdi  nohup.out  tail-backend.pl
HISTORY  l3-cgi       l3prompt     lm          PM         taillast.pl
install  l3-cgi-lite  l3-report    lm-install  README     TODO
19:56:45
#chmod +x l3-frontend l3-cgi-lite l3-upload

19:56:53
#ls
CVS      INSTALL      l3-config    l3scripts   lm-report  rebuild-all-logs
DELETE   l3-agent     l3config.pm  l3-upload   lm-ssh     share
doc      l3-backend   l3files      LICENSE     mysql      tail-all.pl
FILES    l3bashrc     l3-frontend  lilalo.kdi  nohup.out  tail-backend.pl
HISTORY  l3-cgi       l3prompt     lm          PM         taillast.pl
install  l3-cgi-lite  l3-report    lm-install  README     TODO
19:56:54
#cp l3-frontend /usr/bin/

19:57:01
#cp l3-cgi-lite /usr/lib/cgi-bin/

19:57:07
#cp l3-upload /usr/lib/cgi-bin/

19:57:12
#cp -R l3files /var/www/

19:57:18
#cd -
/usr/bin
19:57:37
#cd /etc/apache2/

19:57:41
#vi sites-available/default
--- /tmp/l3-saved-2180.18989.22958	2009-04-25 20:57:44.000000000 +0400
+++ sites-available/default	2009-04-25 20:58:28.000000000 +0400
@@ -38,4 +38,7 @@
         Allow from 127.0.0.0/255.0.0.0 ::1/128
     </Directory>
 
+
+	ScriptAlias /l3 /usr/lib/cgi-bin/l3-cgi-lite
+	ScriptAlias /l3-upload /usr/lib/cgi-bin/l3-upload
 </VirtualHost>
19:58:28
#/etc/init.d/apache2 reload
Reloading web server config: apache2.
19:58:32
#vi /var/
19:58:32
#vi /var/log/ap
19:58:32
#vi /var/log/apache2/
19:58:32
#vi /var/log/apache2/access.log
19:59:23
#~
[Sat Apr 25 20:42:43 2009] [notice] Apache/2.2.9 (Debian) configured -- resumingg
 normal operations
/var/www/favicon.ico 2009] [error] [client 82.204.215.131] File does not exist:
[Sat Apr 25 20:58:32 2009] [notice] SIGUSR1 received.  Doing graceful restart
 normal operations
[Sat Apr 25 20:58:32 2009] [notice] Apache/2.2.9 (Debian) configured -- resumingg
grep: /var/lilalo/lablogs-xml//data.xml: No such file or directory
grep: /var/lilalo/lablogs-xml//data.xml: No such file or directory
grep: /var/lilalo/lablogs-xml//data.xml: No such file or directory
/var/www/favicon.ico
grep: /var/lilalo/lablogs-xml//data.xml: No such file or directory
grep: /var/lilalo/lablogs-xml//data.xml: No such file or directory
/var/www/favicon.icoblogs-xml//data.xml: No such file or directory
[Sat Apr 25 20:59:00 2009] [error] [client 82.204.215.131] File does not exist:
grep: /var/lilalo/lablogs-xml//data.xml: No such file or directoryes not exist:
"/var/log/apache2/error.log" 13L, 1048C
19:59:55
#~
l3-backend   l3-frontend
19:59:55
#/usr/bin/l3-backend
l3-backend is already running

Статистика

Время первой команды журнала19:33:43 2009- 4-25
Время последней команды журнала19:59:55 2009- 4-25
Количество командных строк в журнале59
Процент команд с ненулевым кодом завершения, % 5.08
Процент синтаксически неверно набранных команд, % 0.00
Суммарное время работы с терминалом *, час 0.44
Количество командных строк в единицу времени, команда/мин 2.25
Частота использования команд
ls13|======================| 22.03%
vi10|================| 16.95%
aptitude8|=============| 13.56%
cd8|=============| 13.56%
cp5|========| 8.47%
~3|=====| 5.08%
chmod3|=====| 5.08%
/etc/init.d/apache22|===| 3.39%
l3-backend2|===| 3.39%
mkdir1|=| 1.69%
wget1|=| 1.69%
/etc/init.d/nginx1|=| 1.69%
chgrp1|=| 1.69%
tar1|=| 1.69%
____
*) Интервалы неактивности длительностью 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$