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

Содержание

Журнал

Пятница (09/11/09)

/dev/ttyp2
14:08:20
#ls -l /tmp/
total 126
drwxrwxrwt  2 root  wheel          512 Sep  8 14:12 .ICE-unix
-r--r--r--  1 root  wheel           11 Sep  7 05:31 .X0-lock
drwxrwxrwt  2 root  wheel          512 Sep 10 12:24 .X11-unix
drwxrwxrwt  2 root  wheel          512 Sep  7 05:31 .XIM-unix
-rw-------  1 root  wheel          167 Sep  7 10:15 .Xauth7iu3l8
-rw-------  1 root  wheel           49 Jul 24 16:10 .Xauth7nmoqG
-rw-------  1 user  wheel           49 Jul 24 16:03 .Xauth8A9uGq
-rw-------  1 root  wheel           49 Jul 24 15:54 .XauthCuihBu
-rw-------  1 user  wheel           49 Jul 24 16:12 .XauthEWHAR4
...
drwxr-xr-x  2 root  wheel          512 Mar 28  2008 lilalo-install-temp-1212
drwxr-xr-x  2 root  wheel          512 Mar 28  2008 lilalo-install-temp-1241
drwxr-xr-x  2 root  wheel          512 Sep 10 15:00 noexit
-rw-r--r--  1 root  wheel        10058 Sep 11 15:08 pstree-2.32.tar.gz
-rw-r--r--  1 user  wheel         1308 Sep 10 14:50 pw
-rw-r--r--  1 user  wheel          799 Sep 10 12:17 pw-useradd_help
-rw-r--r--  1 user  wheel           34 Sep  9 14:23 test
-rw-r--r--  1 user  wheel           28 Sep  9 14:43 test2
-rw-r--r--  1 root  wheel            0 Sep 10 15:26 vova11111
-rw-r--r--  1 user  wheel            0 Sep  8 15:14 ~bad~name~
14:08:23
#ls -l /tmp/pstree-2.32.tar.gz
-rw-r--r--  1 root  wheel  10058 Sep 11 15:08 /tmp/pstree-2.32.tar.gz
14:08:27
#lynx http://freshmeat.net
14:09:40
#cd

14:09:52
#lynx http://freshmeat.net
14:12:02
#ls -l
total 1860
-rw-------  1 root  wheel      467 Sep  7 10:16 .ICEauthority
drwx------  2 root  wheel      512 Jul 24 16:12 .Trash
-rw-------  1 root  wheel        0 Sep  7 10:15 .Xauthority
-rw-------  1 root  wheel    11146 Sep 11 14:32 .bash_history
-rw-r--r--  1 root  wheel       19 Jul 24 19:40 .bash_profile
-rw-r--r--  1 root  wheel       38 Jul 24 19:40 .bashrc
drwx------  3 root  wheel      512 Jul 24 16:10 .config
-rw-r--r--  2 root  wheel      801 Jan 16  2008 .cshrc
drwx------  4 root  wheel      512 Sep  7 10:15 .gconf
...
drwxr-xr-x  2 root  wheel      512 Jul 24 16:11 Desktop
-rw-r--r--  1 root  wheel    15189 Sep 11 15:11 cowsay-3.03.tar.gz
-rw-r--r--  1 root  wheel        0 Sep 10 15:02 files
drwxr-xr-x  2 root  wheel      512 Sep 10 15:30 filesvova
-rw-r--r--  1 root  wheel     5160 Mar 28  2008 install
-rw-r--r--  1 root  wheel  1714374 Sep  7 11:35 lynx-2.8.7d7.tbz
-rw-------  1 root  wheel    54239 Jul 24 19:01 mbox
-rw-r--r--  1 root  wheel        0 Jul 24 16:12 nautilus-debug-log.txt
-rwxr-xr-x  1 root  wheel      727 Sep  7 05:30 prepare-freebsd.sh
drwxr-xr-x  2 root  wheel      512 Sep 10 15:05 tmp
14:12:04
#ls -l cowsay-3.03.tar.gz
-rw-r--r--  1 root  wheel  15189 Sep 11 15:11 cowsay-3.03.tar.gz
14:12:10
#date
Fri Sep 11 15:12:12 EEST 2009
14:12:12
#tar xvzf cowsay-3.03.tar.gz
x cowsay-3.03/ChangeLog
x cowsay-3.03/INSTALL
x cowsay-3.03/LICENSE
x cowsay-3.03/MANIFEST
x cowsay-3.03/README
x cowsay-3.03/Wrap.pm.diff
x cowsay-3.03/install.sh
x cowsay-3.03/pgp_public_key.txt
x cowsay-3.03/cowsay
x cowsay-3.03/cowsay.1
...
x cowsay-3.03/cows/surgery.cow
x cowsay-3.03/cows/telebears.cow
x cowsay-3.03/cows/three-eyes.cow
x cowsay-3.03/cows/turkey.cow
x cowsay-3.03/cows/turtle.cow
x cowsay-3.03/cows/tux.cow
x cowsay-3.03/cows/udder.cow
x cowsay-3.03/cows/vader-koala.cow
x cowsay-3.03/cows/www.cow
x cowsay-3.03/cows/vader.cow
14:12:25
#cd cowsay-3.03

14:12:28
#ls
ChangeLog               MANIFEST                cows                    install.sh
INSTALL                 README                  cowsay                  pgp_public_key.txt
LICENSE                 Wrap.pm.diff            cowsay.1
14:12:29
#vim README
14:12:43
# 3 ===========

14:12:50
# 3 =================
 55
 56 echo Now I need an installation prefix.  I will use /usr/local unless
 57 printf "you give me a better idea here: "
 58 if [ -n "$backdoor" ]; then
 59         prefix=$backdoor
 60         printf "%s (specified on command line)\n" $prefix
 61 else
 62         read prefix
 63 fi
 64
 65 PREFIX=${prefix:-/usr/local}
 66
 67 echo Okay, time to install this puppy.
 68
 69 echo s,%BANGPERL%,!$usethisperl,\; > install.pl
 70 echo s,%PREFIX%,$PREFIX,\; >> install.pl
 71 set -x
 72 mkdir -p $PREFIX/bin || (mkdir $PREFIX; mkdir $PREFIX/bin)
 73 $usethisperl -p install.pl cowsay > $PREFIX/bin/cowsay
14:13:02
#ls
ChangeLog               MANIFEST                cows                    install.sh
INSTALL                 README                  cowsay                  pgp_public_key.txt
LICENSE                 Wrap.pm.diff            cowsay.1
14:13:03
#chmod +x ./install.sh

14:13:11
#./install.sh
===================
cowsay Installation
===================
Searching for useful perl executables...
Found perl in /usr/bin/perl
Found perl in /usr/bin/perl5
Found perl in /usr/local/bin/perl
Found perl in /usr/local/bin/perl5
Found perl in /usr/local/bin/perl5.8.8
Found perl in /usr/X11R6/bin/perl
...
x cows/turkey.cow
x cows/turtle.cow
x cows/tux.cow
x cows/udder.cow
x cows/vader-koala.cow
x cows/www.cow
x cows/vader.cow
+ set +x
Okay, let us see if the install actually worked.
Installation complete! Enjoy the cows!
14:13:21
#co
co             colldef        comcontrol     compgen        composeglyphs  conscontrol    cowsay
col            colrm          comm           compile_et     compress       continue       cowthink
colcrt         column         command        complete       config         corrupt_mpeg2
14:13:21
#cows
cows    cowsay
14:13:21
#cowsay
test
 ______
< test >
 ------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
14:13:35
#pstree
bash: pstree: command not found
14:13:47
#lynx http://freshmeat.net
14:15:00
#cd

14:15:01
#ls -l pstree-2.32.tar.gz
-rw-r--r--  1 root  wheel  10058 Sep 11 15:14 pstree-2.32.tar.gz
14:15:04
#tar xvzf pstree-2.32.tar.gz
x README
x pstree.c
14:15:14
#vim README
14:15:27
# 3 Introduction:
  46 #  define PSCMD         "ps -eko uid,pid,ppid,pgid,thcount,args"
  47 #  define PSFORMAT      "%ld %ld %ld %ld %ld %[^\n]"
  48 #  define PSVARS        &P[i].uid, &P[i].pid, &P[i].ppid, &P[i].pgid, &P[i].thcount, P[i].cmd
  49 #  define PSVARSN       6
  50 /************************************************************************/
  51 #elif defined(__linux) || (defined __alpha && defined(_SYSTYPE_BSD) || defined (Tru64))
  52 /* TRU64 contributed by Frank Parkin <fparki AT acxiom.co.uk>
  53  */
  54 #  ifdef __linux
  55 #    define USE_GetProcessesDirect
  56 #    include <glob.h>
  57 #    include <sys/stat.h>
  58 #  endif
  59 #  define UID2USER
  60 #  define HAS_PGID
  61 #  define PSCMD         "ps -eo uid,pid,ppid,pgid,args"
  62 #  define PSFORMAT      "%ld %ld %ld %ld %[^\n]"
  63 #  define PSVARS        &P[i].uid, &P[i].pid, &P[i].ppid, &P[i].pgid, P[i].cmd
  64 #  define PSVARSN       5
14:15:42
#vim README
14:15:47
# 3 Introduction:
gcc         gccmakedep
14:15:47
#gcc -O o pstree pstree.c
gcc: o: No such file or directory
gcc: pstree: No such file or directory
14:15:59
#gcc -O -o pstree pstree.c

14:16:06
#file pstree
pstree: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), for FreeBSD 6.3, dynamically linked (uses shared libs), not stripped
14:16:13
#./pstree
-+= 00001 root /sbin/init --
 |--= 00151 root adjkerntz -i
 |--= 00625 root /usr/sbin/moused -p /dev/ums0 -t auto -I /var/run/moused.ums0.pid
 |--= 00700 root /sbin/devd
 |--= 00771 root /usr/sbin/syslogd -s
 |--= 00830 root /usr/sbin/usbd
 |--= 00837 root /usr/sbin/moused -p /dev/psm0 -t auto
 |-+= 00926 root /usr/sbin/sshd
 | \-+= 94444 root sshd: user [priv] (sshd)
 |   \-+- 94447 user sshd: user@ttyp1 (sshd)
...
 |--= 57820 user l3-agent (perl5.8.8)
 |--= 62073 root sendmail: accepting connections (sendmail)
 |--= 00983 root /usr/libexec/getty Pc ttyv0
 |--= 00984 root /usr/libexec/getty Pc ttyv1
 |--= 00985 root /usr/libexec/getty Pc ttyv2
 |--= 00986 root /usr/libexec/getty Pc ttyv3
 |--= 00987 root /usr/libexec/getty Pc ttyv4
 |--= 00988 root /usr/libexec/getty Pc ttyv5
 |--= 00989 root /usr/libexec/getty Pc ttyv6
 \--= 00990 root /usr/libexec/getty Pc ttyv7
14:16:18
#cp ./pstree /bin

14:16:24
#pstree
-+= 00001 root /sbin/init --
 |--= 00151 root adjkerntz -i
 |--= 00625 root /usr/sbin/moused -p /dev/ums0 -t auto -I /var/run/moused.ums0.pid
 |--= 00700 root /sbin/devd
 |--= 00771 root /usr/sbin/syslogd -s
 |--= 00830 root /usr/sbin/usbd
 |--= 00837 root /usr/sbin/moused -p /dev/psm0 -t auto
 |-+= 00926 root /usr/sbin/sshd
 | \-+= 94444 root sshd: user [priv] (sshd)
 |   \-+- 94447 user sshd: user@ttyp1 (sshd)
...
 |--= 57820 user l3-agent (perl5.8.8)
 |--= 62073 root sendmail: accepting connections (sendmail)
 |--= 00983 root /usr/libexec/getty Pc ttyv0
 |--= 00984 root /usr/libexec/getty Pc ttyv1
 |--= 00985 root /usr/libexec/getty Pc ttyv2
 |--= 00986 root /usr/libexec/getty Pc ttyv3
 |--= 00987 root /usr/libexec/getty Pc ttyv4
 |--= 00988 root /usr/libexec/getty Pc ttyv5
 |--= 00989 root /usr/libexec/getty Pc ttyv6
 \--= 00990 root /usr/libexec/getty Pc ttyv7
14:16:28
#ipfw
usage: ipfw [options]
do "ipfw -h" or see ipfw manpage for details
14:17:09
#ipfw -list
ipfw: illegal option -- l
usage: ipfw [options]
do "ipfw -h" or see ipfw manpage for details
14:17:13
#ipfw show
ipfw: getsockopt(IP_FW_GET): Protocol not available
14:17:17
#find /boot -name ipfw\*
/boot/kernel/ipfw.ko
/boot/GENERIC/ipfw.ko
/boot/kernel.old/ipfw.ko
14:17:44
#file /boot/kernel/ipfw.ko
/boot/kernel/ipfw.ko: ELF 32-bit LSB shared object, Intel 80386, version 1 (FreeBSD), not stripped
14:18:06
#kldstat
Id Refs Address    Size     Name
 1    5 0xc0400000 7b2d2c   kernel
 2    1 0xc0bb3000 5c304    acpi.ko
 3    1 0xc3bc3000 2000     fire_saver.ko
14:18:15
#ipfw list
ipfw: getsockopt(IP_FW_GET): Protocol not available
14:18:45
#kldload ipfw

/dev/ttyp1
14:19:49
#ipfw list
65535 deny ip from any to any
14:19:54
#ipfw add 0001 ally ip from any to any
ipfw: invalid action ally
14:20:11
#ipfw add 0001 allow from any to any
00001 allow ip from any to any
/dev/ttyp4
14:21:45
#kldstat
Id Refs Address    Size     Name
 1    6 0xc0400000 7b2d2c   kernel
 2    1 0xc0bb3000 5c304    acpi.ko
 3    1 0xc3bc3000 2000     fire_saver.ko
 4    1 0xc6020000 d000     ipfw.ko
14:21:49
#ipfw list
00001 allow ip from any to any
65535 deny ip from any to any

Статистика

Время первой команды журнала14:08:20 2009- 9-11
Время последней команды журнала14:21:49 2009- 9-11
Количество командных строк в журнале48
Процент команд с ненулевым кодом завершения, %12.50
Процент синтаксически неверно набранных команд, % 2.08
Суммарное время работы с терминалом *, час 0.22
Количество командных строк в единицу времени, команда/мин 3.56
Частота использования команд
ipfw8|================| 16.67%
ls7|==============| 14.58%
34|========| 8.33%
vim3|======| 6.25%
cd3|======| 6.25%
lynx3|======| 6.25%
pstree3|======| 6.25%
gcc2|====| 4.17%
kldstat2|====| 4.17%
file2|====| 4.17%
tar2|====| 4.17%
cowsay1|==| 2.08%
chmod1|==| 2.08%
cp1|==| 2.08%
cows1|==| 2.08%
kldload1|==| 2.08%
co1|==| 2.08%
install.sh1|==| 2.08%
find1|==| 2.08%
date1|==| 2.08%
____
*) Интервалы неактивности длительностью 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$