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

Содержание

Журнал

Среда (06/03/09)

/dev/pts/21
13:57:18
#=)
bash: syntax error near unexpected token `)'
/dev/pts/1
13:57:44
#ls -l
итого 3324
drwxr-xr-x 2 root root    4096 Май 25 16:40 17179869184
drwxr-xr-x 2 root root    4096 Май 25 16:40 345448
drwxr-xr-x 2 root root    4096 Май 25 16:40 345789358
-rw-r--r-- 1 root root       0 Май 29 14:52 ABCABCf
-rw-r--r-- 1 root root       0 Май 29 14:50 ABCABC:gff
-rw-r--r-- 1 root root       0 Май 29 14:50 ABCfff
drwxr-xr-x 2 root root    4096 Июн  3 11:51 bin
-rw-r--r-- 1 root root 3024896 Июн  1 10:34 etc.iso
-rw-r--r-- 1 root root       0 Май 26 18:22 F
...
-rw-r--r-- 1 root root       0 Май 26 18:22 F.7
-rw-r--r-- 1 root root       0 Май 26 18:22 F.8
-rw-r--r-- 1 root root       0 Май 26 18:22 F.9
-rw-r--r-- 1 root root       0 Май 29 14:50 ffff
-rw-r--r-- 1 root root       0 Май 29 14:52 fffffff
-rw-r--r-- 1 root root      12 Май 25 14:47 file
-rw-r--r-- 1 root root   54606 Май 29 10:24 iceweasel.dot
-rw-r--r-- 1 root root      12 Май 25 14:47 last-ping
-rw-r--r-- 1 root root    4737 Май 29 10:19 screen.dot
-rw-r--r-- 1 root root  271894 Май 29 10:20 screen.png
13:57:49
#ls -l|less
13:57:59
#cd /home

13:58:05
#ls
approx  quiz  user  user1  user2  user3  userX  userY
13:58:06
#cd quiz

13:58:09
#ls
quiz  quiz2  quiz3  start-quiz
/dev/pts/1
14:01:32
#ls /home/quiz
quiz  quiz2  quiz3  start-quiz
14:01:39
#cat start-quiz
cat: start-quiz: Нет такого файла или каталога
14:01:47
#cd start-quiz
bash: cd: start-quiz: Нет такого файла или каталога
14:01:54
#cat /home/quiz/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";
14:02:08
#cat /home/quiz/start-quiz|less
14:02:59
#cat /home/quiz
cat: /home/quiz: Это каталог
14:03:07
#cat /home/quiz/
.bash_history  .hushlogin.10  .hushlogin.6   quiz           .ssh/
.bash_logout   .hushlogin.2   .hushlogin.7   .quiz/         start-quiz
.bashrc        .hushlogin.3   .hushlogin.8   .quiz1/        .viminfo
.hushlogin     .hushlogin.4   .hushlogin.9   quiz2/
.hushlogin.1   .hushlogin.5   .profile       quiz3/
14:03:07
#cat /home/quiz/quiz
# 0.1 час
После того как crontab был изменён, для того чтобы его перечитать,
нужно ли перезапускать cron, и если нужно, то как?
# /etc/init.d/crond restart
# /etc/init.d/crontab restart
# /etc/init.d/crontab reload
# pkill -1 cron
# pkill -1 crond
#! Нет, не нужно перезапускать, crontab и так перечитывается
Что обозначает символ % в команде в crontab?
...
# strace `which prg`
#! ldd `which prg`
# strings `which prg'
# strace 'which prg'
Как получить полный список файлов, которые процесс 1234 открывает в ходе своей работы
(не только, которые открыты сейчас).
#! strace -p 1234 -o /tmp/1234.strace; grep open /tmp/1234.strace
#* lsof -p 1234
# strings `which 1234`
# strings 'which 1234'
прошло 14 минут
/dev/pts/21
14:17:23
#nc 192.168.15.1 110

14:17:23
#netstat -lnp -A inet

14:17:23
#netstat -lnp -A inet
                     ыÐ# =)
/dev/pts/1
14:19:54
#ssh 192.168.15.12
ssh: connect to host 192.168.15.12 port 22: Connection refused
/dev/pts/15
14:20:32
#vi /etc/ssh/sshd_config
14:21:02
#/etc/init.d/ssh restart
Restarting OpenBSD Secure Shell server: sshd.
14:21:07
#exit
exit
Connection to 192.168.15.1 closed.
/dev/pts/1
14:21:23
#screen -x
/dev/pts/6
14:29:46
#ьфт ыыр
bash: ьфт: команда не найдена
14:29:48
#man ssh
14:30:06
#screen -x
/dev/pts/11
14:30:08
#screen -x
/dev/pts/21
14:30:14
#ыыcat /etc/ssh/sshd_config
# Package generated configuration file
# See the sshd(8) manpage for details
# What ports, IPs and protocols we listen for
Port 22222
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
...
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no
#MaxStartups 10:30:60
#Banner /etc/issue.net
# Allow client to pass locale environment variables
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM yes
/dev/pts/20
14:30:24
#screen -x
/dev/pts/31
14:30:48
#screen -x
/dev/pts/15
14:31:19
#ssh -w 192.168.16.1:192.168.16.2 -N -f 192.168.15.1
Bad tun device '192.168.16.1:192.168.16.2'
14:33:09
#ssh -w 0Ð:92.168.16.1:192.168.16.2 -N -f 192.168.15.1
Bad tun device '0:192.168.16.1:192.168.16.2'
14:33:50
#ssh -w 0 -N -f 192.168.15.1
Enter passphrase for key '/root/.ssh/id_dsa':
channel 0: open failed: administratively prohibited: open failed
14:34:02
#ssh 192.168.15.1
Enter passphrase for key '/root/.ssh/id_dsa':
l3-agent is already running: pid=4276; pidfile=/root/.lilalo/l3-agent.pid
/dev/pts/21
14:34:50
#getent passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
...
bea:x:1013:1013::/home/bea:/bin/sh
beckie:x:1014:1014::/home/beckie:/bin/sh
becky:x:1015:1015::/home/becky:/bin/sh
behdad:x:1016:1016::/home/behdad:/bin/sh
belinda:x:1017:1017::/home/belinda:/bin/sh
ben:x:1018:1018::/home/ben:/bin/sh
benjamin:x:1019:1019::/home/benjamin:/bin/sh
benny:x:1020:1020::/home/benny:/bin/sh
benson:x:1021:1021::/home/benson:/bin/sh
bernard:x:1022:1022::/home/bernard:/bin/sh
14:34:54
#exit
exit
Connection to linux1 closed.
/dev/pts/15
14:35:12
#ssh -w 0 -N -f 192.168.15.1
Enter passphrase for key '/root/.ssh/id_dsa':
14:35:17
#ifconfig
dummy0    Link encap:Ethernet  HWaddr a2:95:80:44:21:2b
          inet addr:1.2.3.4  Bcast:1.255.255.255  Mask:255.0.0.0
          inet6 addr: fe80::a095:80ff:fe44:212b/64 Scope:Link
          UP BROADCAST RUNNING NOARP  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1257 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:40224 (39.2 KiB)
eth0      Link encap:Ethernet  HWaddr 00:16:3e:04:00:12
          inet addr:10.0.35.100  Bcast:10.255.255.255  Mask:255.0.0.0
...
          collisions:0 txqueuelen:1000
          RX bytes:78254616 (74.6 MiB)  TX bytes:148269989 (141.4 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:1606 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1606 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:79590 (77.7 KiB)  TX bytes:79590 (77.7 KiB)
14:35:19
#ifconfig -a | less
14:35:32
#ifconfig tun0 192.168.16.1

14:35:47
#ping 192.168.16.1
PING 192.168.16.1 (192.168.16.1) 56(84) bytes of data.
64 bytes from 192.168.16.1: icmp_seq=1 ttl=64 time=0.015 ms
--- 192.168.16.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.015/0.015/0.015/0.000 ms
14:35:53
#ssh -w 1:192.168.17.1 -N -f 192.168.15.1
Bad tun device '1:192.168.17.1'
/dev/pts/21
14:36:23
#cat /etc/ssh/sshd_config |less
14:36:42
#alias exit='echo no exit'

/dev/pts/15
14:36:57
#ssh -w 1 192.168.17.1 -N -f 192.168.15.1

/dev/pts/33
14:39:14
#cat /etc/ssh/ssh
ssh_config            sshd_config           ssh_host_dsa_key      ssh_host_dsa_key.pub  ssh_host_rsa_key      ssh_host_rsa_key.pub
14:39:14
#cat /etc/ssh/sshd_config
# Package generated configuration file
# See the sshd(8) manpage for details
# What ports, IPs and protocols we listen for
Port 22222
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
...
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no
#MaxStartups 10:30:60
#Banner /etc/issue.net
# Allow client to pass locale environment variables
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM yes
/dev/pts/21
14:46:54
#set -o ignoreeof

14:46:59
#zless /usr/share/dict/propernames | head -100 | tail -20
Avery
Axel
Barbara
Barbra
Barney
Barrett
Barrio
Barry
Bart
Barton
Bea
Beckie
Becky
Behdad
Belinda
Ben
Benjamin
Benny
Benson
Bernard
14:47:20
#zless /usr/share/dict/propernames | head -100 | tail -20 | tr AB ab
avery
axel
barbara
barbra
barney
barrett
barrio
barry
bart
barton
bea
beckie
becky
behdad
belinda
ben
benjamin
benny
benson
bernard
14:48:09
#eval `< ~/.ssh-agent `
Agent pid 13439
14:48:29
#ssh-agent > ~/.ssh-agent

14:48:40
#eval `< ~/.ssh-agent `
Agent pid 15619
14:48:47
#ssh-add
Enter passphrase for /root/.ssh/id_dsa:
Identity added: /root/.ssh/id_dsa (/root/.ssh/id_dsa)
14:48:51
#ssh linux1
l3-agent is already running: pid=4276; pidfile=/root/.lilalo/l3-agent.pid
14:50:07
#ls -l etc/
drwxr-xr-x 4 root root     4096 Ноя 25  2008 dbus-1
-rw-r--r-- 1 root root     2969 Мар  3 18:34 debconf.conf
-rw-r--r-- 1 root root       12 Фев 26 17:58 debian_version
-rw-r--r-- 1 root root        0 Апр 14 11:30 debsums-ignore
drwxr-xr-x 3 root root     4096 Июн  2 16:48 default
drwxr-xr-x 4 root root     4096 Ноя 25  2008 defoma
-rw-r--r-- 1 root root      600 Авг 11  2008 deluser.conf
drwxr-xr-x 4 root root     4096 Май 24 13:16 dhcp3
drwxr-xr-x 2 root root     4096 Апр 23 13:35 dictionaries-common
drwxr-xr-x 2 root root     4096 Фев 28 02:05 dm
...
drwxr-xr-x 2 root root     4096 Май 24 13:16 terminfo
-rw-r--r-- 1 root root       12 Май 29 12:27 timezone
-rw-r--r-- 1 root root      645 Мар 25 13:05 ts.conf
-rw-r--r-- 1 root root     1260 Май 30  2008 ucf.conf
drwxr-xr-x 4 root root     4096 Май 24 13:16 udev
drwxr-xr-x 2 root root     4096 Май 24 13:16 vim
-rw-r--r-- 1 root root     4221 Сен  8  2008 wgetrc
drwxr-xr-x 8 root root     4096 Июн  3 12:24 X11
drwxr-xr-x 6 root root     4096 Ноя 25  2008 xdg
drwxr-xr-x 2 root root     4096 Ноя 25  2008 xml
14:52:22
#ssh linux1 apt-get install rsync
Чтение списков пакетов...
Построение дерева зависимостей...
Чтение информации о состоянии...
НОВЫЕ пакеты, которые будут установлены:
  rsync
обновлено 0, установлено 1 новых пакетов, для удаления отмечено 0 пакетов, и 25 пакетов не обновлено.
Необходимо скачать 333kБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 614kB.
Получено:1 http://10.0.35.1 sid/main rsync 3.0.5-1 [333kB]
debconf: не удалось инициализировать интерфейс: Dialog
...
debconf: не удалось инициализировать интерфейс: Readline
debconf: (Этот интерфейс работает только с управляющего терминала.)
debconf: будет использован интерфейс: Teletype
dpkg-preconfigure: не удалось заново открыть stdin:
Получено 333kБ за 0s (4400kБ/c)
Выбор ранее не выбранного пакета rsync.
(Чтение базы данных ... на данный момент установлено 55232 файлов и каталогов.)
Распаковывается пакет rsync (из файла .../rsync_3.0.5-1_i386.deb)...
Обрабатываются триггеры для man-db ...
Настраивается пакет rsync (3.0.5-1) ...
14:52:31
#rsync -au linux1:/etc/ etc/

14:52:41
#rsync -au linux1:/etc/ etc/

14:54:44
#echo apt-get install rsync #| ssh Linux1 sh -s
apt-get install rsync
15:00:19
#man rsync
прошло 46 минут
/dev/pts/6
15:46:36
#vi /etc/shadow
--- /tmp/l3-saved-14901.12413.12484	2009-06-03 15:46:40.000000000 +0300
+++ /etc/shadow	2009-06-03 15:46:46.000000000 +0300
@@ -1,4 +1,4 @@
-root:$1$DPgGfQ3x$vLIZijcOZebrSTF.Y1UbC0:14392:0:99999:7:::
+root:$1$DPgGf*Q3x$vLIZijcOZebrSTF.Y1UbC0:14392:0:99999:7:::
 daemon:*:14392:0:99999:7:::
 bin:*:14392:0:99999:7:::
 sys:*:14392:0:99999:7:::
15:46:46
#reboot

прошло 42 минуты
/dev/pts/3
16:29:28
#screen -ls
16:29:35
#screen -ls
прошло 11 минут
/dev/pts/2
16:41:30
#screen -x
16:41:34
#screen -x
/dev/pts/6
16:44:24
#screen -x
16:44:47
#screen -x
/dev/pts/2
16:52:05
#screen -x
/dev/pts/3
16:58:35
#screen -ls
прошло 14 минут
17:12:58
#screen -ls
/dev/pts/2
17:13:16
#screen -x
17:13:17
#screen -x
17:13:18
#screen -x
17:13:46
#screen -x
17:13:47
#screen -x
/dev/pts/3
17:13:49
#screen -ls
17:13:50
#screen -ls
/dev/pts/2
17:13:50
#screen -x
/dev/pts/1
17:13:51
#screen
/dev/pts/3
17:13:52
#screen -ls
/dev/pts/2
17:13:52
#screen -x
/dev/pts/3
17:13:53
#screen -ls
/dev/pts/9
17:13:53
#ssh 192.168.15.254
The authenticity of host '192.168.15.254 (192.168.15.254)' can't be established.
RSA key fingerprint is 7e:ed:6a:01:cb:0b:a2:37:07:c5:64:c0:e0:23:f1:e4.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.15.254' (RSA) to the list of known hosts.
We'd like to keep you up to date about:
  * Software feature updates
  * New product announcements
  * Special events
Please register your products now at:  www.ProCurve.com
root@192.168.15.254's password:
Permission denied, please try again.
root@192.168.15.254's password:
Permission denied, please try again.
root@192.168.15.254's password:
Received disconnect from 192.168.15.254: 2: Too many authentication failures for root
/dev/pts/3
17:13:54
#screen -x
/dev/pts/11
17:13:58
#screen -x
/dev/pts/15
17:14:06
#screen -x
/dev/pts/23
17:14:40
#screen -x
/dev/pts/9
17:15:41
#ssh 192.168.15.254
We'd like to keep you up to date about:
  * Software feature updates
  * New product announcements
  * Special events
Please register your products now at:  www.ProCurve.com
root@192.168.15.254's password:
Permission denied, please try again.
root@192.168.15.254's password:
Permission denied, please try again.
root@192.168.15.254's password:
/dev/pts/25
17:15:57
#screen -x
/dev/pts/27
17:16:05
#screen -x
прошло 17 минут
/dev/pts/9
17:33:12
#ssh 192.168.15.254
Connection to 192.168.15.254 closed by remote host.
/dev/pts/29
17:33:47
#screen -x
/dev/pts/31
17:35:26
#ps -aux |grep screen
Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html
root     10400  0.0  0.3   5892  1016 pts/8    S+   17:13   0:00 screen
root     10463  0.0  0.4   5892  1060 pts/5    S+   17:13   0:00 screen -x
root     10471  0.0  0.4   5892  1056 pts/4    S+   17:13   0:00 screen -x
root     10604  0.0  0.4   5892  1056 pts/12   S+   17:14   0:00 screen -x
root     10605  0.0  0.4   5892  1056 pts/7    S+   17:14   0:00 screen -x
root     10676  0.0  0.4   5892  1056 pts/16   S+   17:14   0:00 screen -x
root     10831  0.0  0.4   5888  1056 pts/14   S+   17:14   0:00 screen -x
root     10841  0.0  0.4   5892  1056 pts/18   S+   17:14   0:00 screen -x
root     10979  0.0  0.4   5888  1052 pts/22   S+   17:14   0:00 screen -x
root     10985  0.0  0.4   5892  1056 pts/24   S+   17:14   0:00 screen -x
root     11234  0.0  0.4   5892  1056 pts/26   S+   17:16   0:00 screen -x
root     11285  0.0  0.4   5892  1056 pts/28   S+   17:18   0:00 screen -x
root     11411  0.0  0.4   5888  1056 pts/30   S+   17:33   0:00 screen -x
root     11483  0.0  0.2   4924   768 pts/32   R+   17:35   0:00 grep screen
прошло 17 минут
/dev/pts/1
17:52:33
#ыскscreen -ls
No Sockets found in /var/run/screen/S-root.
/dev/pts/2
17:52:33
#screen -x
/dev/pts/3
17:52:33
#screen -ls
/dev/pts/17
17:52:33
#screen -x
/dev/pts/13
17:52:33
#screen -x
/dev/pts/31
17:52:33
#screen -x

Файлы

  • /etc/ssh/ssh
  • /etc/ssh/sshd_config
  • /home/quiz/quiz
  • /home/quiz/start-quiz
  • /etc/ssh/ssh
    >
    ssh_config            sshd_config           ssh_host_dsa_key      ssh_host_dsa_key.pub  ssh_host_rsa_key      ssh_host_rsa_key.pub
    
    /etc/ssh/sshd_config
    >
    # Package generated configuration file
    # See the sshd(8) manpage for details
    # What ports, IPs and protocols we listen for
    Port 22222
    # Use these options to restrict which interfaces/protocols sshd will bind to
    #ListenAddress ::
    #ListenAddress 0.0.0.0
    Protocol 2
    # HostKeys for protocol version 2
    HostKey /etc/ssh/ssh_host_rsa_key
    HostKey /etc/ssh/ssh_host_dsa_key
    #Privilege Separation is turned on for security
    UsePrivilegeSeparation yes
    # Lifetime and size of ephemeral version 1 server key
    KeyRegenerationInterval 3600
    ServerKeyBits 768
    # Logging
    SyslogFacility AUTH
    LogLevel INFO
    # Authentication:
    LoginGraceTime 120
    PermitRootLogin yes
    StrictModes yes
    RSAAuthentication yes
    PubkeyAuthentication yes
    #AuthorizedKeysFile     %h/.ssh/authorized_keys
    # Don't read the user's ~/.rhosts and ~/.shosts files
    IgnoreRhosts yes
    # For this to work you will also need host keys in /etc/ssh_known_hosts
    RhostsRSAAuthentication no
    # similar for protocol version 2
    HostbasedAuthentication no
    # Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
    #IgnoreUserKnownHosts yes
    # To enable empty passwords, change to yes (NOT RECOMMENDED)
    PermitEmptyPasswords no
    # Change to yes to enable challenge-response passwords (beware issues with
    # some PAM modules and threads)
    ChallengeResponseAuthentication no
    # Change to no to disable tunnelled clear text passwords
    #PasswordAuthentication yes
    # Kerberos options
    #KerberosAuthentication no
    #KerberosGetAFSToken no
    #KerberosOrLocalPasswd yes
    #KerberosTicketCleanup yes
    # GSSAPI options
    #GSSAPIAuthentication no
    #GSSAPICleanupCredentials yes
    X11Forwarding yes
    X11DisplayOffset 10
    PrintMotd no
    PrintLastLog yes
    TCPKeepAlive yes
    #UseLogin no
    #MaxStartups 10:30:60
    #Banner /etc/issue.net
    # Allow client to pass locale environment variables
    AcceptEnv LANG LC_*
    Subsystem sftp /usr/lib/openssh/sftp-server
    UsePAM yes
    
    /home/quiz/quiz
    >
    # 0.1 час
    После того как crontab был изменён, для того чтобы его перечитать,
    нужно ли перезапускать cron, и если нужно, то как?
    # /etc/init.d/crond restart
    # /etc/init.d/crontab restart
    # /etc/init.d/crontab reload
    # pkill -1 cron
    # pkill -1 crond
    #! Нет, не нужно перезапускать, crontab и так перечитывается
    Что обозначает символ % в команде в crontab?
    # То же, что символ * в обычной командной строке
    # Самого себя (то есть %)
    # Ðо выполняется задача
    #! Перевод строки
    # Время выполнения задачи
    Есть запись в файле /etc/crontab:
    */2 * * * * * root date > /tmp/date
    Что будет делать эта запись?
    # Будет каждую вторую минуту дописывать текущее время в файл /tmp/date
    # Будет каждую минуту записывать текущее время в файл /tmp/date
    # Будет каждые полминуты дописывать текущее время в файл /tmp/date
    # Будет каждую вторую минуту записывать текущее время в файл /tmp/date
    # Будет каждые полминуты записывать текущее время в файл /tmp/date
    #! Не будет работать
    Зачем используется программа anacron?
    # Для выполнения повторяющихся, но апериодических действий
    #! Для выполнения повторяющихся действий в системах, которые периодически выключаются
    # Для того же, для чего и cron, только с более точными временными интервалами
    # Это более старая версия cron, которая не используется в современных системах
    # Это cron, который не требует прав root'а для исполнения
    Как выполнить команду iptables -F через 60 минут?
    # echo iptables -F | at +60
    # echo iptables -F | at +3600
    # echo iptables -F | at now+3600
    # echo iptables -F | at now + 3600
    #! echo iptables -F | at now + 60 minutes
    # echo iptables -F | at now + 60 mins
    # echo iptables -F | at now+60m
    Если вы хотите, чтобы команда k1 выполнялась каждые 30 секунд,
    какую запись вы добавите в /etc/crontab, при условии,
    что команда требует для своего выполнения от 10 до 15 секунд.
    # * * * * * root k1& sleep 30& k1
    #! * * * * * root k1& sleep 30; k1
    # * * * * * root k1; sleep 30& k1
    # * * * * * root k1; sleep 30; k1
    # * * * * * root k1& sleep 30& k1
    # Так сделать нельзя, потому что crontab может выполнять команды только с минимальным интервалом 60 секунд
    Вы (пользователь user) написали чудо-скрипт /usr/local/bin/wonder-greetings
    и хотите чтобы он выполнялся из cron'а.
    Вы хотите чтобы он приветствовал ваших друзей (jid'ы которых перечислены через пробел в файле
    /home/user/my-friend) с утра и желал им счастья и здоровья.
    Для этого у пользователя root вы настроили программу sendxmpp и
    добавили в /etc/crontab такую запись:
        8 10 * * * root wonder-greetings | sendxmpp `cat /home/user/my-friends`
    Остальной /etc/crontab вы не трогали и все записи оставили в том виде, в каком они находятся
    по умолчанию.
    Что произойдёт?
    # Каждый день в 8:10 друзьям будет рассылаться по джабберу приветствие
    # Каждый день 10:08 друзьям будет рассылаться по джабберу приветствие
    #! Ничего, не будет это работать, cron не найдёт скрипт
    # Ничего, не будет это работать, нельзя использовать символ ` в командах cron
    <!--30-->
    На какую ситуацию из программного мира похожа
    ситуация, когда на перекрёстке машины
    перегородили дорогу друг другу, и никто не может сдвинуться,
    потому что ему мешает другая машина. И так по кругу.
    # fstat
    # fileblock
    # superblock
    #! deadlock
    # inode
    # timeout
    Вы запускаете программу vipw, а она подвисает.
    Вы предполагаете, что она это делает из-за того,
    что ждёт, что другой процесс отпустит блокировку,
    которая ей нужна.
    С помощью какой программы можно в этом убедиться
    или это опровергнуть?
    #! strace
    # lsof
    # sockstat
    # lockstat
    # fstat
    # fuser
    Что позволяет отследить программа strace?
    # Ðые системные вызовы
    # Набор системных интерфейсов, через которые проходят данные, прежде чем попасть на жёсткий диск
    # Открытия конфигурационных файлов
    # Обращения к модулям ядра
    Что такое системный вызов?
    #! Обращение процесса к ядру, когда у него у самого не хватает полномочий на выполнение какой-то операции
    # Вызов обычным процессом процесса-демона
    # Ð# Обращение к программной библиотеке
    Можно ли подключиться к работающему процессу и посмотреть, что он делает?
    # Нет, нельзя, для этого нужно останавливать процесс
    #! Да, можно; для этого нужно использовать strace
    # Да, можно; для этого нужно использовать ldconfig
    # Да, можно; для этого нужно использовать lsof
    # Да, можно; для этого нужно использовать ld
    Какой программой просмотреть список открытых файлов?
    # fuser
    # fstat
    #! lsof
    # sockstat
    # vmstat
    #* ls -l /proc/*/fd | awk "[print $11}"
    Как посмотреть список открытых файлов в определённом каталоге /dir?
    # fuser /dir
    # ldof /dir
    #! lsof | grep /dir
    # lsof +/dir
    Как просмотреть среду окружения процесса 1234?
    #! cat /proc/1234/environ | tr '\0' \n'
    # env -p 1234
    # strace -p 1234 | grep env
    # cat /proc/1234/mem | grep env
    # Просмотреть среду окружения процесса нельзя, потому что это закрытая информация
    Как посмотреть, какие библиотеки использует программа prg?
    # ldd 'which prg'
    # strings `which prg`
    # strace `which prg`
    #! ldd `which prg`
    # strings `which prg'
    # strace 'which prg'
    Как получить полный список файлов, которые процесс 1234 открывает в ходе своей работы
    (не только, которые открыты сейчас).
    #! strace -p 1234 -o /tmp/1234.strace; grep open /tmp/1234.strace
    #* lsof -p 1234
    # strings `which 1234`
    # strings 'which 1234'
    
    /home/quiz/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";
    

    Статистика

    Время первой команды журнала13:57:18 2009- 6- 3
    Время последней команды журнала17:52:33 2009- 6- 3
    Количество командных строк в журнале101
    Процент команд с ненулевым кодом завершения, %33.66
    Процент синтаксически неверно набранных команд, % 0.99
    Суммарное время работы с терминалом *, час 2.44
    Количество командных строк в единицу времени, команда/мин 0.69
    Частота использования команд
    screen38|=================================| 33.04%
    ssh14|============| 12.17%
    cat9|=======| 7.83%
    ls6|=====| 5.22%
    less4|===| 3.48%
    ifconfig3|==| 2.61%
    cd3|==| 2.61%
    .ssh-agent3|==| 2.61%
    zless2|=| 1.74%
    man2|=| 1.74%
    eval2|=| 1.74%
    netstat2|=| 1.74%
    head2|=| 1.74%
    tail2|=| 1.74%
    vi2|=| 1.74%
    rsync2|=| 1.74%
    exit2|=| 1.74%
    =)1|| 0.87%
    ьфт1|| 0.87%
    reboot1|| 0.87%
    set1|| 0.87%
    echo1|| 0.87%
    /etc/init.d/ssh1|| 0.87%
    ps1|| 0.87%
    alias1|| 0.87%
    ping1|| 0.87%
    ssh-add1|| 0.87%
    nc1|| 0.87%
    ssh-agent1|| 0.87%
    getent1|| 0.87%
    grep1|| 0.87%
    ыскscreen1|| 0.87%
    tr1|| 0.87%
    ыыcat1|| 0.87%
    ____
    *) Интервалы неактивности длительностью 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$