/l3/users/eb/2009/linux14/user :1 |
|
$su -s
su: option requires an argument -- 's' Использование: su [параметры] [имя пользователя] Параметры: -c, --command COMMAND передать команду COMMAND вызываемой оболочке -h, --help показать данное сообщение и закончить работу -, -l, --login запускать оболочку как регистрационную -m, -p, --preserve-environment не сбрасывать переменные окружения и сохранить запустившую оболочку -s, --shell SHELL использовать значение переменной SHELL вместо значения из файла passwd |
$su -
Пароль: l3-agent is already running: pid=3856; pidfile=/root/.lilalo/l3-agent.pid |
#cd /tmp
|
#tail -f date2.log
Wed May 27 10:06:01 EEST 2009 Wed May 27 10:08:01 EEST 2009 Wed May 27 10:10:01 EEST 2009 Wed May 27 10:12:01 EEST 2009 Wed May 27 10:14:01 EEST 2009 Wed May 27 10:16:01 EEST 2009 Wed May 27 10:18:01 EEST 2009 Wed May 27 10:20:01 EEST 2009 ^C |
#cd /var/log
|
#ls |grep cron
|
#ls
apt daemon.log exim4 lp-errs samba atop debug faillog lpr.log syslog atop.log dmesg fontconfig.log mail.err user.log atop.log.1 dmesg.0 fsck mail.info wtmp auth.log dmesg.1.gz gdm mail.log Xorg.0.log boot dmesg.2.gz gidentd.log mail.warn Xorg.0.log.old bootstrap.log dmesg.3.gz kern.log messages btmp dmesg.4.gz lastlog news ConsoleKit dpkg.log lp-acct pycentral.log |
#dmesg
[ 1.460938] hub 4-0:1.0: 2 ports detected [ 1.461074] uhci_hcd 0000:00:1d.0: PCI INT A -> GSI 23 (level, low) -> IRQ 23 [ 1.461129] uhci_hcd 0000:00:1d.0: setting latency timer to 64 [ 1.461132] uhci_hcd 0000:00:1d.0: UHCI Host Controller [ 1.461199] uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 5 [ 1.461284] uhci_hcd 0000:00:1d.0: irq 23, io base 0x0000d080 [ 1.461360] usb usb5: New USB device found, idVendor=1d6b, idProduct=0001 [ 1.461411] usb usb5: New USB device strings: Mfr=3, Product=2, SerialNumber=1 [ 1.461477] usb usb5: Product: UHCI Host Controller [ 1.461523] usb usb5: Manufacturer: Linux 2.6.29-2-686 uhci_hcd ... [ 23.250997] atl1 0000:02:00.0: eth0 link is up 100 Mbps full duplex [ 23.251257] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready [ 31.913294] [drm] Initialized drm 1.1.0 20060810 [ 31.922025] pci 0000:00:02.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 31.922030] pci 0000:00:02.0: setting latency timer to 64 [ 31.923063] mtrr: type mismatch for c0000000,10000000 old: write-back new: write-combining [ 31.923067] [drm] MTRR allocation failed. Graphics performance may suffer. [ 31.923088] pci 0000:00:02.0: irq 27 for MSI/MSI-X [ 31.923104] [drm] Initialized i915 1.6.0 20080730 on minor 0 [ 33.592031] eth0: no IPv6 routers present |
#echo 'test test test' |logger
|
#echo 'test test test' |logger
|
#echo 'test test test' |logger
|
#echo 'test test test' |logger
|
#echo 'test test test' |logger
|
#echo 'test test test' |logger
|
#echo 'test test test' |logger
|
#echo 'test test test' |logger
|
#echo 'test test test' |logger
|
#echo 'test test test' |logger
|
#echo 'test test test' |logger
|
#echo 'test test test' |logger
|
#echo 'test test test' |logger
|
#echo 'test test test' |logger
|
#echo 'test test test' |logger
|
#echo 'test test test' |logger
|
#echo 'test test test' |logger
|
#echo 'test test test' |logger
|
#echo 'test test test' |logger
|
#echo 'test test test' |logger
|
#echo 'test test test' |logger
|
#echo 'test test test' |logger
|
#echo 'test test test' |logger
|
#echo 'test test test' |logger
|
#echo 'test test test' |logger
|
#echo 'test test test' |logger
|
#echo 'test test test' |logger
|
#echo 'test test test' |logger
|
#echo 'test test test' |logger
|
#echo 'test test test' |logger
|
#echo 'test test test' |logger
|
#echo test |logger
|
#echo test |logger
|
#echo test |logger
|
#echo test |logger
|
#kill -9 4276
bash: kill: (4276) - Нет такого процесса |
#ps aux |grep cron
root 10112 0.0 0.0 4076 952 pts/4 S+ 16:49 0:00 watch ps aux | grep cron root 10292 0.0 0.0 4276 1020 ? Ss 16:50 0:00 /usr/sbin/cron root 11073 0.0 0.0 3972 772 pts/13 R+ 16:51 0:00 grep cron |
#kill -9 10292
|
#vi /etc/monit/monit.rc
|
#~
160 # check device datafs with path /dev/sdb1 161 # start program = "/bin/mount /data" 162 # stop program = "/bin/umount /data" 163 # if failed permission 660 then unmonitor 164 # if failed uid root then unmonitor 165 # if failed gid disk then unmonitor 166 # if space usage > 80% for 5 times within 15 cycles then alert 167 # if space usage > 99% then stop 168 # if inode usage > 30000 then alert 169 # if inode usage > 99% then stop 170 # group server |
#monit stop
monit: please specify the configured service name or 'all' after stop |
#monit
monit daemon at 5872 awakened |
#monit restart
monit: please specify the configured service name or 'all' after restart |
#ps aux |grep monit
root 5872 0.0 0.0 21108 1268 ? Sl 16:42 0:00 monit root 14108 0.0 0.0 3972 756 pts/13 R+ 16:56 0:00 grep monit |
#kill 5872
|
#ps aux |grep monit
root 14144 0.0 0.0 3972 756 pts/13 R+ 16:56 0:00 grep monit |
#monit
Starting monit daemon |
#cd /etc/syslog-ng
|
#ls
syslog-ng.conf |
#vi syslog-ng.conf
|
#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/* # # |
#vi /etc/monit/monitrc
|
#vi syslog-ng.conf
|
#kill -9 17786
|
#monit stop
monit: please specify the configured service name or 'all' after stop |
#monit
monit daemon at 14170 awakened |
#ps aux |grep monit
root 14170 0.0 0.0 22132 1300 ? Sl 16:56 0:00 monit |
#kill 14170
|
#monit
Starting monit daemon |
#kill 28620
|
#ssh quiz@10.0.35.100
quiz@10.0.35.100's password: +---------------------------------- | ТЕМЫ ПЕРВОГО ДНЯ | man, shell, vi, screen | Общее количество вопросов: 40 | | Вам будут заданы вопросы и показаны варианты ответа на них. | После каждого вопроса вы должны вводить номер варианта ответа, который вы считаете наиболее правильным. | После ввода номера нужно нажимать <ENTER>. | Возвращаться назад и менять ответ, после того как вы нажали <ENTER>, нельзя. ... 4 Каким символом разделяются аргументы командной строки в UNIX? 1 ; 2 , 3 . 4 & 5 пробел 6 табуляция 7 разделять их нельзя Connection to 10.0.35.100 closed. |
#ssh quiz@10.0.35.100
3 Вы не любите vi несмотря ни на что. Вы хотите его не использовать, и прекрасно обходитесь редактором nano. Тем не менее vi подстерегает вас в самых неожиданных местах. Например, вы запустили vipw чтобы отредактировать файл паролей, а там опять этот редактор! Как сделать так чтобы вместо vi в таких случаях вызывался nano? 1 Никак. Команда называется vipw, потому вызывается и редактор vi 2 вызвать nanopw 3 EDITOR=nano 4 set EDITOR=nano 5 export EDITOR=nano ... но вместо желаемого подключения получаете какой-то странный текст. Что это? 1 Это список активных сеансов screen, их больше одного, поэтому при запуске screen нужно указать, к какому подключаться 2 Это вызвался режим тонкой настройки screen 3 screen должен быть запущен в multiuser-режиме (multiuser on) 4 Эта сборка screen не поддерживает несколько одновременных подключений 5 Для этого необходимо выполнять screen в режиме ядра 1 Your score: 32 Connection to 10.0.35.100 closed. |
#ssh 10.0.35.100
root@10.0.35.100's password: Linux linux0 2.6.18-6-xen-686 #1 SMP Sun Feb 10 22:43:13 UTC 2008 i686 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Wed May 27 19:29:45 2009 from 192.168.15.253 |
#ifconfig
eth0 Link encap:Ethernet HWaddr 00:1b:fc:7d:bd:0e inet addr:192.168.15.14 Bcast:192.168.15.255 Mask:255.255.255.0 inet6 addr: fe80::21b:fcff:fe7d:bd0e/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:67513 errors:0 dropped:0 overruns:0 frame:0 TX packets:59091 errors:0 dropped:0 overruns:0 carrier:3 collisions:0 txqueuelen:1000 RX bytes:53297008 (50.8 MiB) TX bytes:5952025 (5.6 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:7070 errors:0 dropped:0 overruns:0 frame:0 TX packets:7070 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:616008 (601.5 KiB) TX bytes:616008 (601.5 KiB) |
#cd /home
|
#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 |
#exit
exit Connection to 10.0.35.100 closed. |
#l3
l3 [command]: cd new_context - change current lilalo context pwd - show current lilalo context on - switch writing on (NOT IMPLEMENTED YET) off - switch writing off (NOT IMPLEMENTED YET) |
$ls /darkroom
ls: невозможно получить доступ к /darkroom: Нет такого файла или каталога |
$cd ..
|
$ls darkroom/
ls: невозможно получить доступ к darkroom/secret: Отказано в доступе secret |
$chfn /etc/shadow
proxy:*:14388:0:99999:7::: "/etc/shadow" [только для чтения] 26L, 775C www-data:*:14388:0:99999:7::: backup:*:14388:0:99999:7::: list:*:14388:0:99999:7::: irc:*:14388:0:99999:7::: gnats:*:14388:0:99999:7::: nobody:*:14388:0:99999:7::: libuuid:!:14388:0:99999:7::: sshd:*:14388:0:99999:7::: messagebus:*:14389:0:99999:7::: polkituser:*:14389:0:99999:7::: |
#ls
syslog-ng.conf |
#ps
PID TTY TIME CMD 6603 pts/13 00:00:00 bash 11716 pts/13 00:00:00 ps |
#ls
syslog-ng.conf |
#pwd
/etc/syslog-ng |
#less
|
#usr/share/dict/propernames.gz | tr A-Z a-z | head
gzip: usr/share/dict/propernames.gz: No such file or directory |
#cd ~/
|
#zcat usr/share/dict/propernames.gz | tr A-Z a-z | head -200
gzip: usr/share/dict/propernames.gz: No such file or directory |
#userdel
Использование: userdel [параметры] имя пользователя Параметры: -f, --force удалять файлы, даже если они не принадлежат пользователю -h, --help показать данное сообщение и закончить работу -r, --remove удалить домашний каталог и почтовый ящик |
#useradd -s /bin/bash -m -p 'echo $RANDOM$RANDOM' test
|
#ls /home
test user user1 |
#userdel -r test
|
#cat listus
|
## 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 cron with pidfile /var/run/crondd.pid start program = "/etc/init.d/cron start" stop program = "/etc/init.d/cron 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/* # #
#!/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";
Время первой команды журнала | 09:37:42 2009- 5-27 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Время последней команды журнала | 14:02:42 2009- 5-28 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Количество командных строк в журнале | 100 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Процент команд с ненулевым кодом завершения, % | 12.00 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Процент синтаксически неверно набранных команд, % | 0.00 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Суммарное время работы с терминалом *, час | 3.81 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Количество командных строк в единицу времени, команда/мин | 0.44 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Частота использования команд |
|
В журнал автоматически попадают все команды, данные в любом терминале системы.
Для того чтобы убедиться, что журнал на текущем терминале ведётся, и команды записываются, дайте команду 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