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

Содержание

Журнал

Понедельник (06/22/09)

/dev/ttyp0
11:16:21
$ping xgu.ru
PING xgu.ru (212.26.146.51): 56 data bytes
64 bytes from 212.26.146.51: icmp_seq=0 ttl=55 time=4.419 ms
^C
--- xgu.ru ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max/stddev = 4.419/4.419/4.419/0.000 ms

Понедельник (07/06/09)

/dev/ttyv0
20:27:08
$test -w /etc/passwd | echo $?
0
20:27:24
$test -w /etc/passwd

20:27:30
$echo $?
1
20:27:36
$test -w /etc/passwd && echo $?

20:27:44
$test -w /etc/passwd && echo $?

20:27:48
$test -w /etc/passwd && echo $?

20:27:51
$test -w /etc/passwd & echo $?
[1] 42318
0
[1]   Exit 1                  test -w /etc/passwd
20:28:08
$test -w /etc/passwd echo $?
bash: test: too many arguments
20:28:15
$test -w /etc/passwd || echo $?
1
20:28:19
$test -r /etc/passwd || echo $?

20:28:26
$test -w /etc/passwd || echo "write prtect"
write prtect
20:29:32
$test -r /etc/passwd || echo "write prtect"

20:29:38
$test -w /etc/passwd || echo "write prtect"
write prtect
20:29:54
$su -
Password:
l3-agent is already running: pid=14011; pidfile=/root/.lilalo/l3-agent.pid
20:30:05
#test -w /etc/p
pam.d/         periodic/      pf.os          ppp/           protocols
passwd         periodic.conf  phones         printcap       pwd.db
pccard_ether   pf.conf        portsnap.conf  profile
20:30:05
#test -w /etc/p
pam.d/         periodic/      pf.os          ppp/           protocols
passwd         periodic.conf  phones         printcap       pwd.db
pccard_ether   pf.conf        portsnap.conf  profile
20:30:05
#test -w /etc/passwd || echo "Protect"

20:30:34
#test -w /etc/passwd && echo "Protect"
Protect
20:30:42
#test -w /etc/passwd && echo "Not Protect"
Not Protect
20:30:49
#A=0

20:31:24
#while [ $A -lt 10 ] do a=$((A+1)) | echo $A | done
bash: syntax error near unexpected token `done'
20:32:18
#while [ $A -lt 10 ] do a=$((A+1)) echo $A done
>
>
20:32:29
#while [ $A -lt 10 ] do a=$((A+1)) echo $A
> done
bash: syntax error near unexpected token `done'
20:32:39
#while [ $A -lt 10 ] do a=$((A+1)) echo $A
> done
bash: syntax error near unexpected token `done'
20:33:07
#while [ $A -lt 10 ] do a=$((A+1)) echo $A done
>
>
20:33:15
#while [ $A -lt 10 ]
> do
> A=$((A+1))
> echo $A
> done
1
2
3
4
5
6
7
8
9
10
20:34:15
#while [ $A -lt 10 ] \ do a=$((A+1))\ echo $A\ done ;
>
20:34:42
#while [ $A -lt 10 ] \ do a=$((A+1))\ echo $A\ done
> done
bash: syntax error near unexpected token `done'
20:34:47
#while [ $A -lt 10 ] \ do a=$((A+1))\ echo $A\ done\;
>
20:34:55
#while [ $A -lt 10 ] \; do a=$((A+1))\; echo $A\; done\;
>
>
20:35:07
#while [ $A -lt 10 ] \; do a=$((A+1))\; echo $A\; done \;
>
>
20:35:13
#echo $STRING

20:35:54
#echo "$STRING"

20:35:59
#echo '$STRING'
$STRING
20:37:13
#echo `$STRING`

20:37:18
#STRING=0909

20:37:26
#echo `$STRING`
bash: 0909: ËÏÍÁÎÄÁ ÎÅ ÎÁÊÄÅÎÁ
20:37:27
#STRING=0909

20:37:48
#test -z $STRING ; echo $?
1
20:38:14
#test -z "$STRING" ; echo $?
1
20:38:23
#test -z $STRING ; echo $?
1
20:38:28
#while [ $A -lt 10 ]; do a=$((A+1)); echo $A; done;

20:39:36
#while [ $A -lt 10 ]; do a=$((A+1)); echo $A; done;

20:39:40
#while [ $A -lt 10 ] ; do a=$((A+1)) ; echo $A ; done ;

20:39:48
#while [ $A -lt 10 ] ; do a=$((A+1)) ; echo $A ; done ;

20:39:59
#A=0

20:40:02
#while [ $A -lt 10 ] ; do a=$((A+1)) ; echo $A ; done ;
0
0
0
0
0
0
0
0
0
0
...
0
0
0
0
0
0
0
0
0
^C^[[A^[[A
20:40:07
#while [ $A -lt 10 ]; do a=$((A+1)); echo $A; done ;
0
0
0
0
0
0
0
0
0
0
...
0
0
0
0
0
0
0
0
0
0
20:40:29
#while [ $A -lt 10 ]; do a=$((A+1)); echo $A; done ;
0
0
0
0
0
0
0
0
0
0
...
0
0
0
0
0
0
0
0
0
0
20:40:50
#while [ $A -lt 10 ]; do A=$((A+1)); echo $A; done ;
1
2
3
4
5
6
7
8
9
10
20:40:58
#while [ $A -lt 10 ]; do A=$((A+1)); echo $A; done;

20:41:07
#for file in/etc/*; do ; [ -r $file ] || echo $files ; done
bash: syntax error near unexpected token `in/etc/*'
20:42:09
#for file in /etc/*; do ; [ -r $file ] || echo $files ; done
bash: syntax error near unexpected token `;'
20:42:17
#for file in /etc/*; do ; [ -r $file ] || echo $files ; done;
bash: syntax error near unexpected token `;'
20:42:22
#for file in /etc/*; do ; [ -r $file ] || echo $file ; done;
bash: syntax error near unexpected token `;'
20:42:31
#for file in /etc/* ; do ; [ -r $file ] || echo $file ; done;
bash: syntax error near unexpected token `;'
20:42:37
#for file in /etc/* ; do; [ -r $file ] || echo $file ; done;
bash: syntax error near unexpected token `;'
20:42:52
#for file in /etc/* ; do; [ -r $file ]; || echo $file ; done;
bash: syntax error near unexpected token `;'
20:42:57
#for file in /etc/* do; [ -r $file ]; || echo $file ; done;
bash: syntax error near unexpected token `['
20:43:07
#while [ $A -lt 10 ]; do A=$((A+1)); echo $A; done;

20:43:13
#for file in /etc/* do; [ -r $file ]; || echo $file; done;
bash: syntax error near unexpected token `['
20:43:39
#for file in /etc/* do; [ -r $file ]; || echo $file
bash: syntax error near unexpected token `['
20:43:43
#for file in /etc/* do; [ -r $file ; || echo $file
bash: syntax error near unexpected token `['
20:43:55
#for file in /etc/* do; [ -r $file ] || echo $file
bash: syntax error near unexpected token `['
20:44:02
#for file in /etc/* do; [ -r $file ] || echo $file echo $
$A                    $HISTSIZE             $PIPESTATUS
$BASH                 $HOME                 $PPID
$BASH_ARGC            $HOSTNAME             $PS1
$BASH_ARGV            $HOSTTYPE             $PS2
$BASH_COMMAND         $IFS                  $PS4
$BASH_LINENO          $L3_HOME              $PWD
$BASH_SOURCE          $L3_PARENT_TTY        $RANDOM
$BASH_SUBSHELL        $L3_SESSION_ID        $SECONDS
$BASH_VERSINFO        $L3_TAMPERED_EDITORS  $SHELL
$BASH_VERSION         $LANG                 $SHELLOPTS
$BLOCKSIZE            $LINENO               $SHLVL
$COLUMNS              $LINES                $STRING
$COMP_WORDBREAKS      $MACHTYPE             $TERM
$DIRSTACK             $MAIL                 $UID
$EUID                 $MAILCHECK            $USER
$FTP_PASSIVE_MODE     $MM_CHARSET           $_
$GROUPS               $OPTERR               $a
$HISTCMD              $OPTIND               $editor_file
$HISTFILE             $OSTYPE               $editor_name
$HISTFILESIZE         $PATH
20:44:02
#echo

20:44:20
#declare
A=10
BASH=/usr/local/bin/bash
BASH_ARGC=()
BASH_ARGV=()
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="3" [1]="2" [2]="25" [3]="0" [4]="release" [5]="i386-portbld-freebsd6.3")
BASH_VERSION='3.2.25(0)-release'
BLOCKSIZE=K
COLUMNS=80
...
MACHTYPE=i386-portbld-freebsd6.3
MAIL=/var/mail/root
MAILCHECK=60
MM_CHARSET=KOI8-R
OPTERR=1
OPTIND=1
OSTYPE=freebsd6.3
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin:/root/bin
PIPESTATUS=([0]="0")
PPID=42369
20:44:23
#ECHO
.bash_history  .history       .lilalo/       .viminfo       install
.bash_profile  .k5login       .login         .vimrc         mbox
.bashrc        .l3rc          .profile       .vnc/
.cshrc         .lesshst       .ssh/          1
20:44:23
#ECHO $
$A                    $HISTSIZE             $PIPESTATUS
$BASH                 $HOME                 $PPID
$BASH_ARGC            $HOSTNAME             $PS1
$BASH_ARGV            $HOSTTYPE             $PS2
$BASH_COMMAND         $IFS                  $PS4
$BASH_LINENO          $L3_HOME              $PWD
$BASH_SOURCE          $L3_PARENT_TTY        $RANDOM
$BASH_SUBSHELL        $L3_SESSION_ID        $SECONDS
$BASH_VERSINFO        $L3_TAMPERED_EDITORS  $SHELL
$BASH_VERSION         $LANG                 $SHELLOPTS
$BLOCKSIZE            $LINENO               $SHLVL
$COLUMNS              $LINES                $STRING
$COMP_WORDBREAKS      $MACHTYPE             $TERM
$DIRSTACK             $MAIL                 $UID
$EUID                 $MAILCHECK            $USER
$FTP_PASSIVE_MODE     $MM_CHARSET           $_
$GROUPS               $OPTERR               $a
$HISTCMD              $OPTIND               $editor_file
$HISTFILE             $OSTYPE               $editor_name
$HISTFILESIZE         $PATH
20:44:23
#ECHO $

20:44:37
#exit
exit

Среда (07/08/09)

/dev/ttyv0
18:49:22
$cd /tmp/

18:49:25
$ls -ld t.sh
-rwxr--r--  1 root  wheel  22 Jul  8 19:48 t.sh
18:49:30
$./t.sh
bash: ./t.sh: Permission denied
18:49:37
$sh t.sh
HELLO
18:49:42
$chmod u+x t.sh

18:49:59
$ls -ld t.sh
-rwxr--r--  1 root  wheel  22 Jul  8 19:48 t.sh
18:50:04
$./t.s
bash: ./t.s: No such file or directory
18:50:13
$./t.sh
bash: ./t.sh: Permission denied
/dev/ttyv2
18:55:52
$cd /tmp/

18:55:55
$ls -ld t.sh
---------T  1 root  wheel  22 Jul  8 19:48 t.sh
18:56:04
$rm t.sh
override --------T  root/wheel for t.sh? y
rm: t.sh: Operation not permitted
18:56:15
$rm t.sh
override --------T  root/wheel for t.sh? yes
rm: t.sh: Operation not permitted
18:56:19
$rm -rf t.sh
rm: t.sh: Operation not permitted
18:56:32
$ls
"date"                          4455667788
'date'                          5
-                               555
0                               6
1                               7
11                              8
12                              9
13                              [44]556677
14                              [[111]-[120]^24]
15                              c:--windows
...
2007                            etccopy
2008                            fam-user
2009                            lilalo-install-temp-1212
3                               lilalo-install-temp-1241
333                             list
4                               sorted
444                             t.sh
4455                            zz*
445566                          zz*456
44556677
18:56:36
$su
Password:
18:56:44
$su -
Password:
l3-agent is already running: pid=14011; pidfile=/root/.lilalo/l3-agent.pid
18:56:51
#cd /

18:56:54
#cd /tmp/

18:56:57
#exit
exit
/dev/ttyp1
18:59:10
$cd /tmp/

18:59:12
$ls -ld t.sh
--w--w--wT  1 root  wheel  22 Jul  8 19:48 t.sh
18:59:17
$rm -rf t.sh
rm: t.sh: Operation not permitted
18:59:24
$vi t.sh
/dev/ttyp1
19:00:03
$ls -ld /tmp/t.sh
-rwSrwSrwT  1 root  wheel  22 Jul  8 19:48 /tmp/t.sh
/dev/ttyv2
19:03:21
$ls
Desktop
19:03:26
$ls -l
total 2
drwxr-xr-x  2 user  wheel  512 Mar 15  2008 Desktop
19:03:30
$ls -ls
total 2
2 drwxr-xr-x  2 user  wheel  512 Mar 15  2008 Desktop
19:03:33
$ls -la
total 58
drwxr-xr-x  13 user  wheel  1024 Jul  8 20:03 .
drwxr-xr-x   5 root  wheel   512 Jul  8 18:57 ..
-rw-------   1 user  wheel     0 Mar 15  2008 .ICEauthority
-rw-------   1 user  wheel   823 Jul  8 20:03 .bash_history
-rw-r--r--   1 user  wheel    19 Jun 22 12:11 .bash_profile
-rw-r--r--   1 user  wheel    43 Jun 22 12:12 .bashrc
-rw-r--r--   1 user  wheel   767 Mar 15  2008 .cshrc
-rw-------   1 user  wheel    26 Mar 15  2008 .dmrc
drwxr-xr-x   2 user  wheel  1024 Mar 15  2008 .fontconfig
...
-rw-------   1 user  wheel   373 Mar 15  2008 .mail_aliases
-rw-r--r--   1 user  wheel   331 Mar 15  2008 .mailrc
drwx------   3 user  wheel   512 Mar 15  2008 .metacity
drwxr-xr-x   3 user  wheel   512 Mar 15  2008 .nautilus
-rw-r--r--   1 user  wheel   812 Jun 22 12:12 .profile
-rw-r--r--   1 user  wheel   218 Mar 15  2008 .recently-used.xbel
-rw-------   1 user  wheel   276 Mar 15  2008 .rhosts
-rw-r--r--   1 user  wheel   975 Mar 15  2008 .shrc
-rw-r--r--   1 user  wheel  1997 Mar 15  2008 .xsession-errors
drwxr-xr-x   2 user  wheel   512 Mar 15  2008 Desktop

Статистика

Время первой команды журнала11:16:21 2009- 6-22
Время последней команды журнала19:03:33 2009- 7- 8
Количество командных строк в журнале100
Процент команд с ненулевым кодом завершения, %40.00
Процент синтаксически неверно набранных команд, % 1.00
Суммарное время работы с терминалом *, час 0.53
Количество командных строк в единицу времени, команда/мин 3.16
Частота использования команд
echo49|========================| 24.38%
while21|==========| 10.45%
done21|==========| 10.45%
test20|=========| 9.95%
do19|=========| 9.45%
for13|======| 6.47%
[13|======| 6.47%
ls10|====| 4.98%
&5|==| 2.49%
cd5|==| 2.49%
rm4|=| 1.99%
ECHO3|=| 1.49%
su3|=| 1.49%
t.sh2|| 1.00%
STRING=09092|| 1.00%
A=02|| 1.00%
exit2|| 1.00%
ping1|| 0.50%
declare1|| 0.50%
chmod1|| 0.50%
sh1|| 0.50%
vi1|| 0.50%
t.s1|| 0.50%
done\1|| 0.50%
____
*) Интервалы неактивности длительностью 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$