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

Содержание

Журнал

Четверг (01/22/09)

/dev/ttyp4
10:53:43
#export A=1

10:54:00
#echo $A
1
/dev/ttyp7
10:54:11
#echo $A
1
/dev/ttyp4
10:54:11
#echo $A
[root@debian1:~]# bash
1
10:54:20
#echo $A
[root@debian1:~]# exit
exit
1
10:54:42
#echo $A
[root@debian1:~]# unset A
10:54:47
#readonly A=2

10:56:09
#echo $A
2
10:56:19
#A=3
bash: A: readonly variable
10:56:24
#unset A
bash: unset: A: cannot unset: readonly variable
10:56:46
#unset --help
bash: unset: --: invalid option
unset: usage: unset [-f] [-v] [name ...]
10:56:54
#unset -f A

10:57:09
#echo $A
2
10:57:15
#unset -v A
bash: unset: A: cannot unset: readonly variable
10:57:51
#unset -f A

10:58:00
#info unset
10:58:20
#info unset | less
10:58:27
#unset -fv A
bash: unset: cannot simultaneously unset a function and a variable
10:58:41
#unset -f

10:58:49
#echo A
A
10:58:56
#echo $
2
10:59:03
#unset A
bash: unset: A: cannot unset: readonly variable
10:59:09
#ls

10:59:09
#set A=3445

11:02:12
#readonly --help
[root@debian1:~]# echo $A
2
bash: readonly: --: invalid option
readonly: usage: readonly [-af] [name[=value] ...] or readonly -p
11:02:31
#f1 () {echo "ne ne ne
bash: syntax error near unexpected token `{echo'
11:05:47
#f1 () { echo "ne ne ne!!!!
f1 () { echo "ne ne nef1 () {echo "ne ne ne";}f1 () {echo "ne ne ne";}"; }
11:06:28
#f1 () {echo "ne ne ne";}

11:06:28
#f1 () {echo "ne ne ne";
bash: syntax error near unexpected token `{echo'
11:06:46
#f1 () {

11:06:53
#ls /*/*/
/proc/2633/:
attr     cpuset   exe   mem         oom_adj    smaps  status
auxv     cwd      fd    mounts      oom_score  stat   task
cmdline  environ  maps  mountstats  root       statm  wchan
/proc/2670/:
attr     cpuset   exe   mem         oom_adj    smaps  status
auxv     cwd      fd    mounts      oom_score  stat   task
cmdline  environ  maps  mountstats  root       statm  wchan
/proc/2674/:
attr     cpuset   exe   mem         oom_adj    smaps  status
...
cmdline  environ  maps  mountstats  root       statm  wchan
ls: невозможно считать символьную ссылку /proc/54/exe: No such file or directory
/proc/54/:
attr     cpuset   exe   mem         oom_adj    smaps  status
auxv     cwd      fd    mounts      oom_score  stat   task
cmdline  environ  maps  mountstats  root       statm  wchan
ls: невозможно считать символьную ссылку /proc/55/exe: No such file or directory
/proc/55/:
attr     cpuset   exe   mem         oom_adj    smaps  status
auxv
11:07:14
#ls /*/*/
/lib/tls/:
i686                      libmemusage.so           libnss_nisplus.so.2
libanl-2.3.6.so           libm.so.6                libnss_nis.so.2
libanl.so.1               libnsl-2.3.6.so          libpcprofile.so
libBrokenLocale-2.3.6.so  libnsl.so.1              libpthread-2.3.6.so
libBrokenLocale.so.1      libnss_compat-2.3.6.so   libpthread.so.0
libc-2.3.6.so             libnss_compat.so.2       libresolv-2.3.6.so
libcidn-2.3.6.so          libnss_dns-2.3.6.so      libresolv.so.2
libcidn.so.1              libnss_dns.so.2          librt-2.3.6.so
libcrypt-2.3.6.so         libnss_files-2.3.6.so    librt.so.1
...
/proc/2/:
attr     cpuset   exe   mem         oom_adj    smaps  status
auxv     cwd      fd    mounts      oom_score  stat   task
cmdline  environ  maps  mountstats  root       statm  wchan
/proc/2502/:
attr     cpuset   exe   mem         oom_adj    smaps  status
auxv     cwd      fd    mounts      oom_score  stat   task
cmdline  environ  maps  mountstats  root       statm  wchan
/proc/2633/:
attr
11:07:17
#ls /*/*/
libip6t_tcp.so          libipt_multiport.so      libipt_udp.so
libip6t_TRACE.so        libipt_NETMAP.so         libipt_ULOG.so
libip6t_udp.so          libipt_NFQUEUE.so        libipt_unclean.so
libipt_addrtype.so      libipt_NOTRACK.so
libipt_ah.so            libipt_owner.so
/lib/lsb/:
init-functions
/lib/modules/:
2.6.18-5-xen-686  2.6.18-6-xen-686  2.6.18.8-xen
/lib/security/:
...
auxv     cwd      fd    mounts      oom_score  stat   task
cmdline  environ  maps  mountstats  root       statm  wchan
/proc/13390/:
attr     cpuset   exe   mem         oom_adj    smaps  status
auxv     cwd      fd    mounts      oom_score  stat   task
cmdline  environ  maps  mountstats  root       statm  wchan
/proc/13391/:
attr     cpuset   exe   mem         oom_adj    smaps  status
auxv     cwd      fd    mounts      oom_score  stat   task
cmdline
11:07:19
#ls /*/*/
/proc/2699/:
attr     cpuset   exe   mem         oom_adj    smaps  status
auxv     cwd      fd    mounts      oom_score  stat   task
cmdline  environ  maps  mountstats  root       statm  wchan
/proc/2701/:
attr     cpuset   exe   mem         oom_adj    smaps  status
auxv     cwd      fd    mounts      oom_score  stat   task
cmdline  environ  maps  mountstats  root       statm  wchan
/proc/2740/:
attr     cpuset   exe   mem         oom_adj    smaps  status
...
ls: невозможно считать символьную ссылку /proc/599/exe: No such file or directory
/proc/599/:
attr     cpuset   exe   mem         oom_adj    smaps  status
auxv     cwd      fd    mounts      oom_score  stat   task
cmdline  environ  maps  mountstats  root       statm  wchan
ls: невозможно считать символьную ссылку /proc/6/exe: No such file or directory
/proc/6/:
attr     cpuset   exe   mem         oom_adj    smaps  status
auxv     cwd      fd    mounts      oom_score  stat   task
cmdline  environ  maps  mountstats  root       statm  wchan
11:07:21
#ls /*/*/*/
0  1  2  3
/proc/1245/root/:
bin   dev  home    lib         media  opt   root  srv  tmp  var
boot  etc  initrd  lost+found  mnt    proc  sbin  sys  usr
/proc/1245/task/:
1245
/proc/12690/attr/:
current  exec  fscreate  keycreate  prev  sockcreate
/proc/12690/cwd/:
1234     asd.tgz  hello   sdf dasfjfh  touchlist
...
/proc/1/root/:
bin   dev  home    lib         media  opt   root  srv  tmp  var
boot  etc  initrd  lost+found  mnt    proc  sbin  sys  usr
/proc/1/task/:
1
/proc/2502/attr/:
current  exec  fscreate  keycreate  prev  sockcreate
/proc/2502/cwd/:
console  psaux  ptypc  ram4    tty13  tty26  tty39  tty51  tty7   ttypb
disk
11:07:27
#ls /*/*/*/

11:07:28
#ls /*/*/*/
/proc/12690/attr/:
current  exec  fscreate  keycreate  prev  sockcreate
/proc/12690/cwd/:
1234     asd.tgz  hello   sdf dasfjfh  touchlist
123.tar  file     qwe.gz  soft         zxc.rpm
/proc/12690/fd/:
0  1  2  3  4  5  6
/proc/12690/root/:
bin   dev  home    lib         media  opt   root  srv  tmp  var
boot  etc  initrd  lost+found  mnt    proc  sbin  sys  usr
...
disk     ptmx   ptypd  ram5    tty14  tty27  tty4   tty52  tty8   ttypc
full     ptyp0  ptype  ram6    tty15  tty28  tty40  tty53  tty9   ttypd
hda1     ptyp1  ptypf  ram7    tty16  tty29  tty41  tty54  ttyp0  ttype
initctl  ptyp2  ram0   ram8    tty17  tty3   tty42  tty55  ttyp1  ttypf
input    ptyp3  ram1   ram9    tty18  tty30  tty43  tty56  ttyp2  urandom
kmem     ptyp4  ram10  random  tty19  tty31  tty44  tty57  ttyp3  xconsole
kmsg     ptyp5  ram11  shm     tty2   tty32  tty45  tty58  ttyp4  xen
log      ptyp6  ram12  tty     tty20  tty33  tty46  tty59  ttyp5  zero
MAKEDEV  ptyp7  ram13  tty0    tty21  tty34  tty47  tty6   ttyp6
mapper
11:07:30
#ls /*/*/*/
current  exec  fscreate  keycreate  prev  sockcreate
/proc/13391/cwd/:
1234     asd.tgz  hello   sdf dasfjfh  touchlist
123.tar  file     qwe.gz  soft         zxc.rpm
/proc/13391/fd/:
0  1  2  255
/proc/13391/root/:
bin   dev  home    lib         media  opt   root  srv  tmp  var
boot  etc  initrd  lost+found  mnt    proc  sbin  sys  usr
/proc/13391/task/:
...
/proc/2674/fd/:
0  1  2  3  4
/proc/2674/root/:
bin   dev  home    lib         media  opt   root  srv  tmp  var
boot  etc  initrd  lost+found  mnt    proc  sbin  sys  usr
/proc/2674/task/:
2674
/proc/2678/attr/:
current  exec  fscreate  keycreate  prev  sockcreate
/proc/2678/cwd/:
11:07:36
#f1 () { echo "ne ne ne"; }
0  1  2
/proc/1233/root/:
bin   dev  home    lib         media  opt   root  srv  tmp  var
boot  etc  initrd  lost+found  mnt    proc  sbin  sys  usr
/proc/1233/task/:
1233
/proc/1234/attr/:
current  exec  fscreate  keycreate  prev  sockcreate
/proc/1234/cwd/:
console  psaux  ptypc  ram4    tty13  tty26  tty39  tty51  tty7   ttypb
...
boot  etc  initrd  lost+found  mnt    proc  sbin  sys  usr
/proc/13391/task/:
13391
/proc/14/attr/:
current  exec  fscreate  keycreate  prev  sockcreate
/proc/14/cwd/:
bin   dev  home    lib         media  opt   root  srv  tmp  var
boot  etc  initrd  lost+found  mnt    proc  sbin  sys  usr
  tty57  ttyp3  xconsole
kmsg
11:07:52
#trap f1 INT

11:08:26
#ls /*/*/*/
/proc/12690/task/:
12690
/proc/13350/attr/:
current  exec  fscreate  keycreate  prev  sockcreate
/proc/13350/cwd/:
1234     asd.tgz  hello   sdf dasfjfh  touchlist
123.tar  file     qwe.gz  soft         zxc.rpm
/proc/13350/fd/:
0  1  2
/proc/13350/root/:
...
mem      ptyp9  ram15  tty10   tty23  tty36  tty49  tty61  ttyp8
null     ptypa  ram2   tty11   tty24  tty37  tty5   tty62  ttyp9
port     ptypb  ram3   tty12   tty25  tty38  tty50  tty63  ttypa
/proc/2502/fd/:
0  1  2
/proc/2502/root/:
bin   dev  home    lib         media  opt   root  srv  tmp  var
boot  etc  initrd  lost+found  mnt    proc  sbin  sys  usr
/proc/2502/task/:
2502
11:08:36
#ls /*/*/*/
current  exec  fscreate  keycreate  prev  sockcreate
/proc/13391/cwd/:
1234     asd.tgz  hello   sdf dasfjfh  touchlist
123.tar  file     qwe.gz  soft         zxc.rpm
/proc/13391/fd/:
0  1  2  255
/proc/13391/root/:
bin   dev  home    lib         media  opt   root  srv  tmp  var
boot  etc  initrd  lost+found  mnt    proc  sbin  sys  usr
/proc/13391/task/:
...
/proc/2674/fd/:
0  1  2  3  4
/proc/2674/root/:
bin   dev  home    lib         media  opt   root  srv  tmp  var
boot  etc  initrd  lost+found  mnt    proc  sbin  sys  usr
/proc/2674/task/:
2674
/proc/2678/attr/:
current  exec  fscreate  keycreate  prev  sockcreate
/proc/2678/cwd/:
11:08:40
#ne ne ne

11:08:47
#ne ne ne

11:08:47
#ne ne ne

11:08:48
#ne ne ne

11:08:48
#ne ne ne

11:08:48
#ne ne ne

11:08:49
#ne ne ne

11:08:49
#ne ne ne

11:08:49
#ne ne ne

/dev/ttyp4
11:17:36
#A=*

11:17:53
#echo A
A
11:17:59
#echo $
1234 123.tar asd.tgz file hello qwe.gz sdf dasfjfh soft touchlist zxc.rpm
11:18:03
#echo "
*
11:18:17
#ls tmp ; echo $?
[root@debian1:~]# echo '
$A
ls: tmp: No such file or directory
2
11:21:08
#ls /
a                            asdf                          names
ab                           A:\WINDOWS\SYSTEM32           one space
abc                          cde                           orbit-user
abcd                         conf                          o' Reilly
abcde                        dfcdep                        S.names
abcdef                       df*fd?                        SORTED_NAMES
abcdes                       file                          ssh-hbgqFx2633
ac                           file with spaces at the name  ssh-jfWKaZ4928
ad                           gconfd-user                   ssh-JZxTWz4947
ae                           less                          ssh-zhWKgv4956
af                           lkjhg?asdf
another very long file name  ls
0
11:21:35
#find ~ *.mmm && rm ~ *.mmm || echo 'file not found'
/root/.lilalo/765511717183542083-1232351490.script
/root/.lilalo/26685115363211224709-1232439008_1232446515_etc_init.d_ssh.diff
/root/.lilalo/15081903439010668-1232527952.script
/root/.lilalo/71353065180441432-1232354566_1232370401_tmp_sym__link_file.diff
/root/.lilalo/1498482752572130745-1232483393.info
/root/.lilalo/209739211121405394-1232545115.info
/root/.lilalo/770515293676724607-1232438192.script
/root/.lilalo/2371105201881414746-1232523220_1232524105_tmp_names.diff
/root/.lilalo/252104060271518443-1232353870_1232354247_root_.ssh_known__hosts.diff
/root/.lilalo/2194515001560815221-1232457408.info
...
/root/qwe.gz
/root/.gconf
/root/.vimrc
/root/.bash_profile
/root/asd.tgz
/root/123.tar
/root/.lesshst
/root/touchlist
find: *.mmm: No such file or directory
file not found
11:25:41
#jobs

11:32:26
#ls -l /
lrwxrwxrwx 1 root root 4 2008-07-04 20:06 /bin/sh -> bash
/dev/ttypb
11:37:03
#screen -x
/dev/ttype
11:37:19
#screen- x
bash: screen-: command not found
11:37:23
#screen -x
/dev/ttyp5
11:37:24
#au
bash: au: command not found
11:37:35
#sdlkj
bash: sdlkj: command not found
11:37:35
#fh
bash: fh: command not found
11:37:35
#kj
bash: kj: command not found
11:37:36
#xaaaxaxaaxaxax
bash: xaaaxaxaaxaxax: command not found
11:37:43
#sdlkj
bash: sdlkj: command not found
11:37:45
#reboot

/dev/ttyp0
11:38:30
#screen
/dev/ttyp4
11:38:42
#screen -x
/dev/ttyp6
11:38:52
#screen -x
/dev/ttyp2
11:38:52
#p
bash: p: command not found
11:38:52
#r
bash: r: command not found
11:38:53
#uv
bash: uv: command not found
11:38:53
#e
bash: e: command not found
11:38:53
#t
bash: t: command not found
/dev/ttyp8
11:39:07
#screen -x
/dev/ttyp2
11:39:15
#khkgjjhghj
bash: khkgjjhghj: command not found
/dev/ttypa
11:39:23
#screen -x
/dev/ttyp2
11:39:46
#test -d /etc ; echo $?
0
11:40:02
#test -r
0
11:40:06
#test -w
0
11:40:09
#test -w /etc/shadow
0
11:40:16
#test -x
1
11:40:23
#ls -l /etc/shadow
-rw-r----- 1 root shadow 8825 2008-03-14 11:04 /etc/shadow
11:40:30
#vim /etc/shadow
11:41:31
#test 10 -lt 9 ; echo $?
1
11:41:49
#test 10 -g
0
11:42:01
#test 10 -eq
1
11:42:06
#[ 10 -eq 6 ] ; echo $?
1
11:42:34
#cd

11:44:16
#p
bash: p: command not found
11:44:20
#a
bash: a: command not found
11:44:21
#c
bash: c: command not found
11:44:23
#a
bash: a: command not found
11:44:24
#n
bash: n: command not found
11:44:41
#m
bash: m: command not found
11:44:43
#o
bash: o: command not found
11:44:44
#c
bash: c: command not found

Статистика

Время первой команды журнала10:53:43 2009- 1-22
Время последней команды журнала11:44:44 2009- 1-22
Количество командных строк в журнале101
Процент команд с ненулевым кодом завершения, %20.79
Процент синтаксически неверно набранных команд, %20.79
Суммарное время работы с терминалом *, час 0.85
Количество командных строк в единицу времени, команда/мин 1.98
Частота использования команд
echo17|===============| 15.32%
ls15|=============| 13.51%
ne9|========| 8.11%
unset8|=======| 7.21%
test8|=======| 7.21%
screen7|======| 6.31%
f16|=====| 5.41%
}2|=| 1.80%
p2|=| 1.80%
info2|=| 1.80%
sdlkj2|=| 1.80%
c2|=| 1.80%
readonly2|=| 1.80%
a2|=| 1.80%
o1|| 0.90%
uv1|| 0.90%
fh1|| 0.90%
&1|| 0.90%
m1|| 0.90%
A=31|| 0.90%
rm1|| 0.90%
cd1|| 0.90%
n1|| 0.90%
reboot1|| 0.90%
kj1|| 0.90%
set1|| 0.90%
[1|| 0.90%
au1|| 0.90%
find1|| 0.90%
xaaaxaxaaxaxax1|| 0.90%
r1|| 0.90%
screen-1|| 0.90%
vim1|| 0.90%
e1|| 0.90%
t1|| 0.90%
export1|| 0.90%
trap1|| 0.90%
less1|| 0.90%
jobs1|| 0.90%
A=*1|| 0.90%
khkgjjhghj1|| 0.90%
____
*) Интервалы неактивности длительностью 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$