/l3/users/eb/2009/linux0/root :1 :2 :3 :4 :5 :6 :7 :8 :9 :10 :11 :12 :13 :14 :15 :16 :17 :18 :19 :20 :21 :22 :23 :24 :25 :26 :27 :28 :29 :30 :31 :32 :33 :34 :35 :36 :37 :38 :39 :40 :41 :42 :43 |
|
#tail /var/log/messages
May 27 15:35:43 linux0 kernel: 4gb seg fixup, process ldconfig (pid 17436), cs:ip 73:08060ab3 May 27 15:35:43 linux0 kernel: 4gb seg fixup, process ldconfig (pid 17436), cs:ip 73:08060aa5 May 27 15:35:43 linux0 kernel: 4gb seg fixup, process ldconfig (pid 17436), cs:ip 73:08060ab3 May 27 15:35:43 linux0 kernel: 4gb seg fixup, process ldconfig (pid 17436), cs:ip 73:080530f6 May 27 15:35:43 linux0 kernel: 4gb seg fixup, process ldconfig (pid 17436), cs:ip 73:08060ab3 May 27 15:35:43 linux0 kernel: 4gb seg fixup, process ldconfig (pid 17436), cs:ip 73:080531bc May 27 15:35:43 linux0 kernel: 4gb seg fixup, process ldconfig (pid 17436), cs:ip 73:0805e322 May 27 15:53:01 linux0 syslog-ng[17516]: Termination requested via signal, terminating; May 27 15:53:01 linux0 syslog-ng[17516]: syslog-ng shutting down; version='2.0.9' May 27 15:53:01 linux0 syslog-ng[17744]: syslog-ng starting up; version='2.0.9' |
#ps aux | grep sys
root 17743 0.1 0.4 5648 1148 pts/38 S 15:53 0:00 /bin/sh /usr/local/bin/syslog2jabber root 17744 0.0 0.2 3064 752 ? Ss 15:53 0:00 /usr/sbin/syslog-ng -p /var/run/syslog-ng.pid root 17765 0.0 0.2 4924 768 pts/38 R+ 15:53 0:00 grep sys |
#ps aux | grep jabber
root 17743 0.0 0.4 5648 1148 pts/38 S 15:53 0:00 /bin/sh /usr/local/bin/syslog2jabber root 17774 0.0 0.2 4924 768 pts/38 R+ 15:53 0:00 grep jabber |
#!
bash: syntax error near unexpected token `newline' |
#man sendxmpp
|
#man sendxmpp
|
#which sendxmpp
/usr/bin/sendxmpp |
#less /usr/bin/sendxmpp
|
#ls /home/quiz/.quiz/192.168.15.253-12434
192.168.15.253-1243404869.log 192.168.15.253-1243427598.log |
#cat /var/run/crond.pid
1614 |
#cat /etc/default/monit
# Defaults for monit initscript # sourced by /etc/init.d/monit # installed at /etc/default/monit by maintainer scripts # Fredrik Steen <stone@debian.org> # You must set this variable to for monit to start startup=0 # To change the intervals which monit should run uncomment # and change this variable. # CHECK_INTERVALS=180 |
#cat /var/run/crond.pid
1614 |
#ps aux | grep monit
root 18337 0.0 0.2 4928 768 pts/38 R+ 16:50 0:00 grep monit |
#ps aux | grep cron
root 1614 0.0 0.3 5232 1004 ? Ss May26 0:00 /usr/sbin/cron root 18434 0.0 0.2 4928 772 pts/38 R+ 16:52 0:00 grep cron |
#cat /etc/monit/monitrc |grep -v #
grep --help' для получения более подробного описания. |
#cat /etc/monit/monitrc | grep -v '#'
|
#cat /etc/monit/monitrc | grep -v '^#'
|
#cat /etc/monit/monitrc
## or sender using the MAIL-FORMAT statement. Macros such as $DATE, etc. ## are expanded at runtime. For example, to override the sender: # # set mail-format { from: monit@foo.bar } # # ## You can set alert recipients here whom will receive alerts if/when a ## service defined in this file has errors. Alerts may be restricted on ## events by using a filter as in the second example below. # ... ############################################################################### ## Includes ############################################################################### ## ## It is possible to include additional configuration parts from other files or ## directories. # # include /etc/monit.d/* # # |
#ps aux | grep cron
root 18476 0.0 0.2 4928 768 pts/38 R+ 16:52 0:00 grep cron |
#!sc
Изменен ## # # check process apache with pidfile /usr/local/apache/logs/httpd.pid # start program = "/etc/init.d/httpd start" # stop program = "/etc/init.d/httpd stop" # if cpu > 60% for 2 cycles then alert # if cpu > 80% for 5 cycles then restart # if totalmem > 200.0 MB for 5 cycles then restart check process apache with pidfile /usr/local/apache/logs/httpd.pid # if children > 250 then restart start progcron with pidfile /var/run/crond.pid # if loadavg(5min) greater thacron start" stop program = "/etc/init.d/cron stop" # if failed host www.tildeslash.com port 80 protocol http [ Прочитано 217 строк ] ^G Помощь ^O Записать ^R ЧитФайл ^Y ПредCтр ^K Вырезать ^C ТекПозиц ^X Выход ^J Выровнять ^W Поиск ^V СледCтр ^U ОтмВырезк ^T Словарь ---------------------------------------------------------------------------------------- |
#alert security@foo.bar on {
list. Move forward to the end of the next word. Words are composed of alphanumeric characters (letters and digits). backward-word (M-b) Move back to the start of the current or previous word. Words are comâ posed of alphanumeric characters (letters and digits). clear-screen (C-l) Clear the screen leaving the current line at the top of the screen. With an argument, refresh the current line without clearing the screen. redraw-current-linehistory.h> ... previous-history (C-p) Fetch the previous command from the history list, moving back in the list. next-history (C-n) Fetch the next command from the history list, moving forward in the list. beginning-of-history (M-<) Move to the first line in the history. end-of-history (M->) Move to the end of the input history, i.e., the line currently being |
#use address localhost # only accept connection from localhost
|
#vi /etc/default/monit
--- /tmp/l3-saved-18733.19117.28579 2009-05-27 16:59:54.000000000 +0300 +++ /etc/default/monit 2009-05-27 17:00:15.000000000 +0300 @@ -4,7 +4,7 @@ # Fredrik Steen <stone@debian.org> # You must set this variable to for monit to start -startup=0 +startup=1 # To change the intervals which monit should run uncomment # and change this variable. |
#/etc/init.d/monit restart
Stopping daemon monitor: monit. Starting daemon monitor: monit. |
#pkill cron
|
#ps aux | grep cron
root 18814 0.0 0.2 4924 772 pts/41 R+ 17:00 0:00 grep cron |
#/etc/init.d/monit restart
Stopping daemon monitor: monit. Starting daemon monitor: monit. |
#ps aux | grep cron
root 18863 0.0 0.3 5232 1008 ? Ss 17:00 0:00 /usr/sbin/cron root 18865 0.0 0.2 4924 772 pts/41 R+ 17:00 0:00 grep cron |
#watch 'ps aux | grep cron'
|
#root 19020 0.0 0.3 5232 1008 ? Ss 17:01 0:00 /usr/sbin/cron
May 27 15:35:43 linux0 kernel: 4gb seg fixup, process ldconfig (pid 17436), cs:ip 73:08060ab3 May 27 15:35:43 linux0 kernel: 4gb seg fixup, process ldconfig (pid 17436), cs:ip 73:08060aa5 May 27 15:35:43 linux0 kernel: 4gb seg fixup, process ldconfig (pid 17436), cs:ip 73:08060ab3 May 27 15:35:43 linux0 kernel: 4gb seg fixup, process ldconfig (pid 17436), cs:ip 73:080530f6 May 27 15:35:43 linux0 kernel: 4gb seg fixup, process ldconfig (pid 17436), cs:ip 73:08060ab3 May 27 15:35:43 linux0 kernel: 4gb seg fixup, process ldconfig (pid 17436), cs:ip 73:080531bc May 27 15:35:43 linux0 kernel: 4gb seg fixup, process ldconfig (pid 17436), cs:ip 73:0805e322 May 27 15:53:01 linux0 syslog-ng[17516]: Termination requested via signal, terminating; May 27 15:53:01 linux0 syslog-ng[17516]: syslog-ng shutting down; version='2.0.9' May 27 15:53:01 linux0 syslog-ng[17744]: syslog-ng starting up; version='2.0.9' |
#tail /var/log/daemon.log
May 27 17:01:02 linux0 monit[18830]: Monit stopped May 27 17:01:03 linux0 monit[18898]: Starting monit daemon May 27 17:01:03 linux0 monit[18900]: Monit started May 27 17:01:23 linux0 monit[18900]: Monit has not changed May 27 17:01:23 linux0 monit[18900]: 'cron' process is not running May 27 17:01:23 linux0 monit[18900]: 'cron' trying to restart May 27 17:01:23 linux0 monit[18900]: 'cron' start: /etc/init.d/cron May 27 17:01:43 linux0 monit[18900]: 'cron' process is not running May 27 17:01:43 linux0 monit[18900]: 'cron' trying to restart May 27 17:01:43 linux0 monit[18900]: 'cron' start: /etc/init.d/cron |
#/etc/init.d/monit stpo
Usage: /etc/init.d/monit {start|stop|restart|force-reload|syntax} |
#/etc/init.d/monit stop
Stopping daemon monitor: monit. |
#watch 'ps aux | grep cron'
|
#less /home/quiz/.quiz/192.168.15.253-1243434052.log
|
#vi /etc/shadow
--- /tmp/l3-saved-23496.17428.7082 2009-05-27 17:41:32.000000000 +0300 +++ /etc/shadow 2009-05-27 17:41:36.000000000 +0300 @@ -1,4 +1,4 @@ -root:$1$iSjUEmTZ$n09/yGX5Ni6BMSJQnNlZa0:14389:0:99999:7::: +root:*$1$iSjUEmTZ$n09/yGX5Ni6BMSJQnNlZa0:14389:0:99999:7::: daemon:*:14389:0:99999:7::: bin:*:14389:0:99999:7::: sys:*:14389:0:99999:7::: |
#ls -l /home/quiz/.quiz/
итого 24 -rw-r--r-- 1 quiz quiz 1523 Май 27 17:51 192.168.15.10-1243435857.log -rw-r--r-- 1 quiz quiz 1523 Май 27 17:50 192.168.15.11-1243435850.log -rw-r--r-- 1 quiz quiz 1523 Май 27 17:50 192.168.15.1-1243435854.log -rw-r--r-- 1 quiz quiz 1523 Май 27 17:50 192.168.15.13-1243435848.log -rw-r--r-- 1 quiz quiz 1523 Май 27 17:50 192.168.15.14-1243435851.log -rw-r--r-- 1 quiz quiz 1523 Май 27 17:51 192.168.15.3-1243435858.log |
#watch ls -l /home/quiz/.quiz/
|
#rm /home/quiz/.quiz/*
|
#ls -l
итого 8 drwxr-xr-x 4 quiz quiz 4096 Май 27 15:11 quiz drwxr-xr-x 3 user user 4096 Май 25 21:00 user |
#cd quiz
|
#ls -l
итого 24 -rw-r--r-- 1 quiz quiz 18262 Май 27 17:20 quiz -rw-r--r-- 1 quiz quiz 1093 Май 27 09:14 start-quiz |
#cat 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"; |
#ls -l
итого 24 -rw-r--r-- 1 quiz quiz 18262 Май 27 17:20 quiz -rw-r--r-- 1 quiz quiz 1093 Май 27 09:14 start-quiz |
#ls /home/quiz/
quiz start-quiz |
#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"; |
#cat /home/quiz/quiz
Как заменить во всём файле последовательность abc на последовательность xyz? # :s/abc/xyz/ # :!s/abc/xyz/ # :%s/abc/xyz/ # :*s/abc/xyz/ # :s/abc/xyz/g # :!s/abc/xyz/g #! :%s/abc/xyz/g # :*s/abc/xyz/g # :s/abc/xyz/G ... # pkill screen # kill $(pgrep screen) Вы хотите подключиться к активному сеансу screen, даёте команду screen -x, но вместо желаемого подключения получаете какой-то странный текст. Что это? #! Это список активных сеансов screen, их больше одного, поэтому при запуске screen нужно указать, к какому подключаться # Это вызвался режим тонкой настройки screen # screen должен быть запущен в multiuser-режиме (multiuser on) # Эта сборка screen не поддерживает несколько одновременных подключений # Для этого необходимо выполнять screen в режиме ядра |
#screen -ls
|
#screen -ls
|
#screen
|
#screen -x
|
#cd /tmp/D4
|
#vi myrm
--- /dev/null 2009-05-27 17:42:32.305822186 +0300 +++ myrm 2009-05-28 10:11:01.000000000 +0300 @@ -0,0 +1,2 @@ +#!/bin/rm -rf +echo hello |
#chmod +x myrm
|
#touch 1 2 3
|
#ls -l
итого 4 -rw-r--r-- 1 root root 0 Май 28 10:11 1 -rw-r--r-- 1 root root 0 Май 28 10:11 1.1 -rw-r--r-- 1 root root 0 Май 28 10:11 1.10 -rw-r--r-- 1 root root 0 Май 28 10:11 1.2 -rw-r--r-- 1 root root 0 Май 28 10:11 1.3 -rw-r--r-- 1 root root 0 Май 28 10:11 1.4 -rw-r--r-- 1 root root 0 Май 28 10:11 1.5 -rw-r--r-- 1 root root 0 Май 28 10:11 1.6 -rw-r--r-- 1 root root 0 Май 28 10:11 1.7 ... -rw-r--r-- 1 root root 0 Май 28 10:11 3.10 -rw-r--r-- 1 root root 0 Май 28 10:11 3.2 -rw-r--r-- 1 root root 0 Май 28 10:11 3.3 -rw-r--r-- 1 root root 0 Май 28 10:11 3.4 -rw-r--r-- 1 root root 0 Май 28 10:11 3.5 -rw-r--r-- 1 root root 0 Май 28 10:11 3.6 -rw-r--r-- 1 root root 0 Май 28 10:11 3.7 -rw-r--r-- 1 root root 0 Май 28 10:11 3.8 -rw-r--r-- 1 root root 0 Май 28 10:11 3.9 -rwxr-xr-x 1 root root 26 Май 28 10:11 myrm |
#which touch
/usr/bin/touch |
#cp /usr/bin/touch.ORIG /usr/bin/touch
|
#ls -l
итого 0 -rw-r--r-- 1 root root 0 Май 28 10:11 1 -rw-r--r-- 1 root root 0 Май 28 10:11 1.1 -rw-r--r-- 1 root root 0 Май 28 10:11 1.10 -rw-r--r-- 1 root root 0 Май 28 10:11 1.2 -rw-r--r-- 1 root root 0 Май 28 10:11 1.3 -rw-r--r-- 1 root root 0 Май 28 10:11 1.4 -rw-r--r-- 1 root root 0 Май 28 10:11 1.5 -rw-r--r-- 1 root root 0 Май 28 10:11 1.6 -rw-r--r-- 1 root root 0 Май 28 10:11 1.7 ... -rw-r--r-- 1 root root 0 Май 28 10:11 2.1 -rw-r--r-- 1 root root 0 Май 28 10:11 2.10 -rw-r--r-- 1 root root 0 Май 28 10:11 2.2 -rw-r--r-- 1 root root 0 Май 28 10:11 2.3 -rw-r--r-- 1 root root 0 Май 28 10:11 2.4 -rw-r--r-- 1 root root 0 Май 28 10:11 2.5 -rw-r--r-- 1 root root 0 Май 28 10:11 2.6 -rw-r--r-- 1 root root 0 Май 28 10:11 2.7 -rw-r--r-- 1 root root 0 Май 28 10:11 2.8 -rw-r--r-- 1 root root 0 Май 28 10:11 2.9 |
#cp /bin/ls .
|
#rm *
|
#cp /bin/ls .
|
#chmod 644 ls
|
#/lib/ld.-
ld-2.9.so ld-linux.so.2 |
#/lib/ld-linux.so.2 ls
ls: error while loading shared libraries: ls: cannot open shared object file: No such file or directory |
#chmod +x ls
|
#/lib/ld-linux.so.2 ls
ls: error while loading shared libraries: ls: cannot open shared object file: No such file or directory |
#/lib/ld-linux.so.2 ./ls
ls |
#/lib/ld-linux.so.2 ./ls
ls |
# Defaults for monit initscript # sourced by /etc/init.d/monit # installed at /etc/default/monit by maintainer scripts # Fredrik Steen <stone@debian.org> # You must set this variable to for monit to start startup=0 # To change the intervals which monit should run uncomment # and change this variable. # CHECK_INTERVALS=180
## or sender using the MAIL-FORMAT statement. Macros such as $DATE, etc. ## are expanded at runtime. For example, to override the sender: # # set mail-format { from: monit@foo.bar } # # ## You can set alert recipients here whom will receive alerts if/when a ## service defined in this file has errors. Alerts may be restricted on ## events by using a filter as in the second example below. # # set alert sysadm@foo.bar # receive all alerts # set alert manager@foo.bar only on { timeout } # receive just service- # # timeout alert # # ## Monit has an embedded web server which can be used to view status of ## services monitored, the current configuration, actual services parameters ## and manage services from a web interface. # # set httpd port 2812 and # use address localhost # only accept connection from localhost # allow localhost # allow localhost to connect to the server and # allow admin:monit # require user 'admin' with password 'monit' # # ############################################################################### ## Services ############################################################################### ## ## Check general system resources such as load average, cpu and memory ## usage. Each test specifies a resource, conditions and the action to be ## performed should a test fail. # # check system myhost.mydomain.tld # if loadavg (1min) > 4 then alert # if loadavg (5min) > 2 then alert # if memory usage > 75% then alert # if cpu usage (user) > 70% then alert # if cpu usage (system) > 30% then alert # if cpu usage (wait) > 20% then alert # # ## Check a file for existence, checksum, permissions, uid and gid. In addition ## to alert recipients in the global section, customized alert will be sent to ## additional recipients by specifying a local alert handler. The service may ## be grouped using the GROUP option. # # check file apache_bin with path /usr/local/apache/bin/httpd # if failed checksum and # expect the sum 8f7f419955cefa0b33a2ba316cba3659 then unmonitor # if failed permission 755 then unmonitor # if failed uid root then unmonitor # if failed gid root then unmonitor # alert security@foo.bar on { # checksum, permission, uid, gid, unmonitor # } with the mail-format { subject: Alarm! } # group server # # ## Check that a process is running, in this case Apache, and that it respond ## to HTTP and HTTPS requests. Check its resource usage such as cpu and memory, ## and number of children. If the process is not running, monit will restart ## it by default. In case the service was restarted very often and the ## problem remains, it is possible to disable monitoring using the TIMEOUT ## statement. This service depends on another service (apache_bin) which ## is defined above. # # check process apache with pidfile /usr/local/apache/logs/httpd.pid # start program = "/etc/init.d/httpd start" # stop program = "/etc/init.d/httpd stop" # if cpu > 60% for 2 cycles then alert # if cpu > 80% for 5 cycles then restart # if totalmem > 200.0 MB for 5 cycles then restart # if children > 250 then restart # if loadavg(5min) greater than 10 for 8 cycles then stop # if failed host www.tildeslash.com port 80 protocol http # and request "/monit/doc/next.php" # then restart # if failed port 443 type tcpssl protocol http # with timeout 15 seconds # then restart # if 3 restarts within 5 cycles then timeout # depends on apache_bin # group server # # ## Check device permissions, uid, gid, space and inode usage. Other services, ## such as databases, may depend on this resource and an automatically graceful ## stop may be cascaded to them before the filesystem will become full and data ## lost. # # check device datafs with path /dev/sdb1 # start program = "/bin/mount /data" # stop program = "/bin/umount /data" # if failed permission 660 then unmonitor # if failed uid root then unmonitor # if failed gid disk then unmonitor # if space usage > 80% for 5 times within 15 cycles then alert # if space usage > 99% then stop # if inode usage > 30000 then alert # if inode usage > 99% then stop # group server # # ## Check a file's timestamp. In this example, we test if a file is older ## than 15 minutes and assume something is wrong if its not updated. Also, ## if the file size exceed a given limit, execute a script # # check file database with path /data/mydatabase.db # if failed permission 700 then alert # if failed uid data then alert # if failed gid data then alert # if timestamp > 15 minutes then alert # if size > 100 MB then exec "/my/cleanup/script" # # ## Check directory permission, uid and gid. An event is triggered if the ## directory does not belong to the user with uid 0 and gid 0. In addition, ## the permissions have to match the octal description of 755 (see chmod(1)). # # check directory bin with path /bin # if failed permission 755 then unmonitor # if failed uid 0 then unmonitor # if failed gid 0 then unmonitor # # ## Check a remote host network services availability using a ping test and ## check response content from a web server. Up to three pings are sent and ## connection to a port and a application level network check is performed. # # check host myserver with address 192.168.1.1 # if failed icmp type echo count 3 with timeout 3 seconds then alert # if failed port 3306 protocol mysql with timeout 15 seconds then alert # if failed url # http://user:password@www.foo.bar:8080/?querystring # and content == 'action="j_security_check"' # then alert # # ############################################################################### ## Includes ############################################################################### ## ## It is possible to include additional configuration parts from other files or ## directories. # # include /etc/monit.d/* # #
Как заменить во всём файле последовательность abc на последовательность xyz? # :s/abc/xyz/ # :!s/abc/xyz/ # :%s/abc/xyz/ # :*s/abc/xyz/ # :s/abc/xyz/g # :!s/abc/xyz/g #! :%s/abc/xyz/g # :*s/abc/xyz/g # :s/abc/xyz/G # :!s/abc/xyz/G # :%s/abc/xyz/G # :*s/abc/xyz/G В каком конфигурационном файле пользователя нужно сохранять команды по настройке vim, чтобы они автоматически применялись при его старте? # /etc/vimrc # /etc/vim.conf # ~.vimrc #! ~/.vimrc # ~/vimrc # ~/vimconf # ~/.vim.conf # ~/.vim.swp Как включить нумерацию строк в vi/vim? #! set number # set n # set -n # number # numbr # -n # unset non Вы не хотите сохранять сделанные изменения в файле, и хотите выйти так. Нажимаете :q<enter>, но vim вас не выпускает. Как выйти? # wq # qq #! q! # !q # ZZ # ctrl-z Вы не любите vi несмотря ни на что. Вы хотите его не использовать, и прекрасно обходитесь редактором nano. Тем не менее vi подстерегает вас в самых неожиданных местах. Например, вы запустили vipw чтобы отредактировать файл паролей, а там опять этот редактор! Как сделать так чтобы вместо vi в таких случаях вызывался nano? # Никак. Команда называется vipw, потому вызывается и редактор vi # вызвать nanopw # EDITOR=nano # set EDITOR=nano #! export EDITOR=nano # make EDITOR=nano # в файле /etc/editor указать nano <!-- 30 --> С чем программа screen не сможет помочь? #! Перехват сеанса работы на терминале, на котором не запущен screen # Одновременная работа нескольких пользователей в одном терминале # Перекодировка текста на лету # Запуск нескольких терминалов на одном # Отключение от терминала и потом повторное подключение к нему Где находится пользовательский конфигурационный файл screen? # ~/screen # ~/screen.conf #! ~/.screenrc # ~/screenrc # ~/.screen.conf Как отключиться от сеанса screen? # ctrl-a a # ctrl-a c #! ctrl-a d # ctrl-a : # ctrl-a " # screen -d # screen -r # screen -x Как подключиться к активному сеансу screen (то есть к сеансу, в котором сейчас кто-то работает)? # ctrl-a a # ctrl-a c # ctrl-a d # ctrl-a : # ctrl-a " # screen -d # screen -r #! screen -x Как подключиться к ранее отключённому сеансу screen? # ctrl-a a # ctrl-a c # ctrl-a d # ctrl-a : # ctrl-a " # screen -d #! screen -r # screen -x Как в screen переключиться на предыдущий экран (экран, на котором вы только что были)? #! ctrl-a a # ctrl-a c # ctrl-a d # ctrl-a : # ctrl-a " # screen -d # screen -r # screen -x Как в screen посмотреть список открытых экранов? # ctrl-a a # ctrl-a c # ctrl-a d # ctrl-a : #! ctrl-a " # screen -d # screen -r # screen -x Как в screen перейти в его управляющую строку? # ctrl-a a # ctrl-a c # ctrl-a d #! ctrl-a : # ctrl-a " # screen -d # screen -r # screen -x Как завершить screen не получится? # ctrl-a \ # завершить по очереди все программы, запущенные на экранах screen #! закрыть окно терминала, в котором запущен screen # pkill screen # kill $(pgrep screen) Вы хотите подключиться к активному сеансу screen, даёте команду screen -x, но вместо желаемого подключения получаете какой-то странный текст. Что это? #! Это список активных сеансов screen, их больше одного, поэтому при запуске screen нужно указать, к какому подключаться # Это вызвался режим тонкой настройки screen # screen должен быть запущен в multiuser-режиме (multiuser on) # Эта сборка screen не поддерживает несколько одновременных подключений # Для этого необходимо выполнять screen в режиме ядра
#!/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";
1614
#!/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";
Время первой команды журнала | 15:53:01 2009- 5-27 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Время последней команды журнала | 10:13:37 2009- 5-28 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Количество командных строк в журнале | 101 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Процент команд с ненулевым кодом завершения, % | 13.86 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Процент синтаксически неверно набранных команд, % | 2.97 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Суммарное время работы с терминалом *, час | 1.29 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Количество командных строк в единицу времени, команда/мин | 1.30 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Частота использования команд |
|
В журнал автоматически попадают все команды, данные в любом терминале системы.
Для того чтобы убедиться, что журнал на текущем терминале ведётся, и команды записываются, дайте команду w. В поле WHAT, соответствующем текущему терминалу, должна быть указана программа script.
Команды, при наборе которых были допущены синтаксические ошибки, выводятся перечёркнутым текстом:
$ l s-l bash: l: command not found |
Если код завершения команды равен нулю, команда была выполнена без ошибок. Команды, код завершения которых отличен от нуля, выделяются цветом.
$ test 5 -lt 4 |
Команды, ход выполнения которых был прерван пользователем, выделяются цветом.
$ 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 |
Команды, выполненные с привилегиями суперпользователя, выделяются слева красной чертой.
# id uid=0(root) gid=0(root) Gruppen=0(root) |
Изменения, внесённые в текстовый файл с помощью редактора, запоминаются и показываются в журнале в формате ed. Строки, начинающиеся символом "<", удалены, а строки, начинающиеся символом ">" -- добавлены.
$ vi ~/.bashrc
|
Для того чтобы изменить файл в соответствии с показанными в диффшоте изменениями, можно воспользоваться командой patch. Нужно скопировать изменения, запустить программу patch, указав в качестве её аргумента файл, к которому применяются изменения, и всавить скопированный текст:
$ patch ~/.bashrc |
Для того чтобы получить краткую справочную информацию о команде, нужно подвести к ней мышь. Во всплывающей подсказке появится краткое описание команды.
Если справочная информация о команде есть, команда выделяется голубым фоном, например: vi. Если справочная информация отсутствует, команда выделяется розовым фоном, например: notepad.exe. Справочная информация может отсутствовать в том случае, если (1) команда введена неверно; (2) если распознавание команды LiLaLo выполнено неверно; (3) если информация о команде неизвестна LiLaLo. Последнее возможно для редких команд.
Большие, в особенности многострочные, всплывающие подсказки лучше всего показываются браузерами KDE Konqueror, Apple Safari и Microsoft Internet Explorer. В браузерах Mozilla и Firefox они отображаются не полностью, а вместо перевода строки выводится специальный символ.
Время ввода команды, показанное в журнале, соответствует времени начала ввода командной строки, которое равно тому моменту, когда на терминале появилось приглашение интерпретатора
Имя терминала, на котором была введена команда, показано в специальном блоке. Этот блок показывается только в том случае, если терминал текущей команды отличается от терминала предыдущей.
Вывод не интересующих вас в настоящий момент элементов журнала, таких как время, имя терминала и других, можно отключить. Для этого нужно воспользоваться формой управления журналом вверху страницы.
Небольшие комментарии к командам можно вставлять прямо из командной строки. Комментарий вводится прямо в командную строку, после символов #^ или #v. Символы ^ и v показывают направление выбора команды, к которой относится комментарий: ^ - к предыдущей, v - к следующей. Например, если в командной строке было введено:
$ whoami
user
$ #^ Интересно, кто я?в журнале это будет выглядеть так:
$ whoami
user
Интересно, кто я? |
Если комментарий содержит несколько строк, его можно вставить в журнал следующим образом:
$ whoami
user
$ cat > /dev/null #^ Интересно, кто я?
Программа whoami выводит имя пользователя, под которым мы зарегистрировались в системе. - Она не может ответить на вопрос о нашем назначении в этом мире.В журнале это будет выглядеть так:
$ whoami user
|
Комментарии, не относящиеся непосредственно ни к какой из команд, добавляются точно таким же способом, только вместо симолов #^ или #v нужно использовать символы #=
1 2 3 4Группы команд, выполненных на разных терминалах, разделяются специальной линией. Под этой линией в правом углу показано имя терминала, на котором выполнялись команды. Для того чтобы посмотреть команды только одного сенса, нужно щёкнуть по этому названию.
LiLaLo (L3) расшифровывается как Live Lab Log.
Программа разработана для повышения эффективности обучения Unix/Linux-системам.
(c) Игорь Чубин, 2004-2008