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

Содержание

Журнал

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

/dev/pts/0
19:26:36
#ls /mnt/

19:26:42
#ls -l /mnt/
total 0
19:26:47
#umount /mnt

19:27:00
#ls /mnt

19:27:05
#touch /mnt/f

19:27:10
#ls /mnt/

19:27:16
#mount
/dev/sda1 on / type ext3 (rw)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
procbususb on /proc/bus/usb type usbfs (rw)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
python on /mnt type fuse.python (rw,nosuid,nodev)
19:27:22
#umount /mnt

19:27:31
#rmmod fuse
ERROR: Module fuse is in use
19:27:40
#fuser
fuser       fusermount
19:27:40
#lsmod | less
19:27:53
#dpkg -L fuse
Package `fuse' is not installed.
Use dpkg --info (= dpkg-deb --info) to examine archive files,
and dpkg --contents (= dpkg-deb --contents) to list their contents.
19:28:00
#find /lib/modules/ -name \*fuse\*
/lib/modules/2.6.26-1-686/kernel/fs/fuse
/lib/modules/2.6.26-1-686/kernel/fs/fuse/fuse.ko
19:28:15
#dpkg -S /lib/modules/2.6.26-1-686/kernel/fs/fuse/fuse.ko
linux-image-2.6.26-1-686: /lib/modules/2.6.26-1-686/kernel/fs/fuse/fuse.ko
19:28:27
#ps aux | less
19:30:28
#aide --compare
Must have both input databases defined for database compare.
19:30:31
#vi /etc/aide/aide.conf
19:31:16
#Files that stay static but are copied to a ram disk on startup
user     23339  0.0  0.1  22756  5104 ?        S    11:45   0:00 /usr/bin/python /usr/bin/system-config-printer-applet
root     31125  0.0  0.0   1832   528 pts/4    S+   16:31   0:00 grep pyth
19:31:24
#man aide
19:32:40
#dpkg -L gmailfs
/.
/sbin
/usr
/usr/bin
/usr/bin/mount.gmailfs
/usr/share
/usr/share/pyshared
/usr/share/pyshared/gmailfs.py
/usr/share/pyshared-data
/usr/share/pyshared-data/gmailfs
...
/usr/share/doc/gmailfs/examples/tests.py.gz
/usr/share/doc/gmailfs/NEWS.Debian.gz
/usr/share/doc/gmailfs/changelog.Debian.gz
/usr/share/man
/usr/share/man/man8
/usr/share/man/man8/mount.gmailfs.8.gz
/etc
/etc/gmailfs
/etc/gmailfs/gmailfs.conf
/sbin/mount.gmailfs
19:32:43
#ps aux | grep gmail
root     31169  0.0  0.0   1832   520 pts/4    R+   16:33   0:00 grep gmail
19:33:10
#vi /etc/cron
19:33:33
#~
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
t /etc/cron.daily )
t /etc/cron.weekly )    test -x /usr/sbin/anacron || ( cd / && run-parts --reporr
t /etc/cron.monthly )   test -x /usr/sbin/anacron || ( cd / && run-parts --reporr
* m*h*d*m*mrootoecho privet
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
~
~                                                                               r
~
"/etc/crontab" 17L, 751C written
19:34:12
#vi /etc/aide/aide.conf
19:34:43
#Files that stay static but are copied to a ram disk on startup
No manual entry for ide
19:34:50
#man aide
19:34:57
#vi /etc/aide/aide.conf
19:35:07
#Files that stay static but are copied to a ram disk on startup
Must have both input databases defined for database compare.
19:35:14
#ls /var/lib/aide/
aide.conf.autogenerated  aide.db  aide.db.new
19:35:21
#ls -l /var/lib/aide/
total 41372
-rw-r--r-- 1 root root    72422 Sep  3 15:41 aide.conf.autogenerated
-rw------- 1 root root 21110995 Sep  3 15:52 aide.db
-rw------- 1 root root 21110995 Sep  3 15:52 aide.db.new
19:35:45
#aide --compare /var/lib/aide/aide.db

19:35:45
#aide --compare
Must have both input databases defined for database compare.
19:35:47
#ls -l /var/lib/aide/

19:35:47
#vi /etc/aide/aide.conf
19:36:03
#Files that stay static but are copied to a ram disk on startup
/usr/bin/aide
19:36:05
#less /usr/bin/aide
19:36:10
#vi /etc/aide/aide.conf
19:36:24
#Files that stay static but are copied to a ram disk on startup
              Checks the database and updates the database  non-interactively.
              The input and output databases must be different.
       --compare
              Compares  two databases. They must be defined in configfile with
              database=<url> and database_new=<url>.
       --config-check, -D
              Stops after reading in the configuration file. Any  errors  will
              be  reported.   If aide was compiled with the "--with-dbhmackey"
              option, a hash for the config file will be calculated.  See  the
              aide manual for more information.
...
       conditions:
       14 Error writing error
       15 Invalid argument error
       16 Unimplemented function error
       17 Invalid configureline error
       18 IO error
NOTES
       Please note that due to mmap issues, aide  cannot  be  terminated  with
       SIGTERM. Use SIGKILL to terminate.
FILES
19:36:43
#Files that stay static but are copied to a ram disk on startup
Must have both input databases defined for database compare.
19:36:56
#vi /etc/ap
19:36:56
#vi /etc/apt/sources.list
--- /tmp/l3-saved-18306.7260.18931	2008-09-03 16:37:15.000000000 +0000
+++ /etc/apt/sources.list	2008-09-03 16:37:22.000000000 +0000
@@ -1 +1,2 @@
 deb http://192.168.15.254:9999/debian sid main
+deb-src http://192.168.15.254:9999/debian sid main
19:37:22
#apt-get update
Hit http://192.168.15.254 sid Release.gpg
Hit http://192.168.15.254 sid Release
Hit http://192.168.15.254 sid/main Packages/DiffIndex
Ign http://192.168.15.254 sid/main Sources
Get:1 http://192.168.15.254 sid/main Sources [3121kB]
Fetched 3121kB in 4s (680kB/s)
Reading package lists... Done
19:37:31
#apt-get source aide
Reading package lists... Done
Building dependency tree
Reading state information... Done
Need to get 347kB of source archives.
Get:1 http://192.168.15.254 sid/main aide 0.13.1-10 (dsc) [1235B]
Get:2 http://192.168.15.254 sid/main aide 0.13.1-10 (tar) [285kB]
Get:3 http://192.168.15.254 sid/main aide 0.13.1-10 (diff) [60.2kB]
Fetched 347kB in 0s (439kB/s)
sh: dpkg-source: command not found
Unpack command 'dpkg-source -x aide_0.13.1-10.dsc' failed.
Check if the 'dpkg-dev' package is installed.
E: Child process failed
19:37:37
#ls
aide_0.13.1-10.diff.gz  aide_0.13.1.orig.tar.gz  megascript  script
aide_0.13.1-10.dsc      gmailfs.log              nohup.out
19:37:39
#tar xvfz aide_0.13.1
tar: aide_0.13.1: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error exit delayed from previous errors
19:37:46
#tar xvfz aide_0.13.1.orig.tar.gz
aide-0.13.1/
aide-0.13.1/doc/
aide-0.13.1/doc/Makefile.in
aide-0.13.1/doc/Makefile.am
aide-0.13.1/doc/aide.1.in
aide-0.13.1/doc/aide.conf.5.in
aide-0.13.1/doc/aide.conf.in
aide-0.13.1/doc/aide.1
aide-0.13.1/doc/aide.conf.5
aide-0.13.1/doc/manual.html
...
aide-0.13.1/include/types.h
aide-0.13.1/include/url.h
aide-0.13.1/include/util.h
aide-0.13.1/contrib/
aide-0.13.1/contrib/bzip2.sh
aide-0.13.1/contrib/gpg2_check.sh
aide-0.13.1/contrib/gpg2_update.sh
aide-0.13.1/contrib/gpg_check.sh
aide-0.13.1/contrib/gpg_update.sh
aide-0.13.1/contrib/sshaide.sh
19:37:48
#cd aide-0.13.1/

19:37:51
#ls
AUTHORS               Makefile.in      aclocal.m4    depcomp        src
COPYING               NEWS             aide.spec.in  doc            version.m4
ChangeLog             README           config.h.in   include        ylwrap
INSTALL               README-snprintf  configure     install-sh
LICENSE-snprintf.txt  Todo             configure.in  missing
Makefile.am           acinclude.m4     contrib       mkinstalldirs
19:37:52
#cd src

19:38:02
#ls
Makefile.am  commandconf.c  db.c       db_sql.c    getopt.c     snprintf.c
Makefile.in  compare_db.c   db_disk.c  do_md.c     getopt1.c    symboltable.c
aide.c       conf_lex.l     db_file.c  error.c     gnu_regex.c  util.c
base64.c     conf_lex2.c    db_lex.l   fopen.c     list.c
be.c         conf_yacc.y    db_lex2.c  gen_list.c  md.c
19:38:03
#less aide.c
19:38:08
#grep comapre *

19:38:10
#grep compare *
Makefile.am:            compare_db.c    \
Makefile.in:            compare_db.c    \
Makefile.in:    compare_db.$(OBJEXT) be.$(OBJEXT) util.$(OBJEXT) \
Makefile.in:@AMDEP_TRUE@        ./$(DEPDIR)/compare_db.Po ./$(DEPDIR)/conf_lex2.Po \
Makefile.in:@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/compare_db.Po@am__quote@
aide.c:#include "compare_db.h"
aide.c:     "      --compare\t\tCompare two databases\n\n"
aide.c:    { "compare", no_argument, NULL, 'E'},
aide.c:         "when doing database compare\n"));
aide.c:       "database compare.\n"));
...
compare_db.c:  error(200,_("compare_db()\n"));
compare_db.c:      if(compare_dbline(old,(db_line*)r->data,localignorelist)!=0){
gen_list.c:#include "compare_db.h"
gen_list.c:     compare
gen_list.c:    if(compare_dbline(node->old_data,node->new_data,localignorelist)==RETOK){
gen_list.c:         * In first case we don't have a match to compare with.
gen_list.c:         * In the second - we already compared those files. */
gen_list.c:      if(compare_dbline(oldData, newData, localignorelist)==RETOK){
getopt.c:     that we can compare them later.  But we must not use malloc(3).  */
util.c:   needle has to be NULL terminated. NULL in needle is not used in compare.
19:38:13
#grep compare * | less
19:38:29
#aide --compare
Must have both input databases defined for database compare.
19:38:35
#grep 'Must have both input' *
aide.c:    error(0,_("Must have both input databases defined for "
19:38:48
#vi aide.c
19:39:29
# conf->db_out_url=u;
aide.c:  conf->db_in_url=NULL;
aide.c:  if(conf->db_in_url==NULL){
aide.c:    conf->db_in_url=u;
aide.c:  if(cmpurl(conf->db_in_url,conf->db_out_url)==RETOK){
aide.c:  if((conf->action&DO_DIFF)&&(!(conf->db_new_url)||!(conf->db_in_url))){
commandconf.c:    db_url=conf->db_in_url;
commandconf.c:    conf_db_url=&(conf->db_in_url);
commandconf.c:  if(conf->db_in_url==NULL){
commandconf.c:      conf->db_in_url=u;
db.c:    rv=be_init(1,conf->db_in_url,0);
db.c:    db_url=conf->db_in_url;
db.c:    db_url=conf->db_in_url;
db_file.c:    db_url=conf->db_in_url;
db_file.c:    db_url=conf->db_in_url;
db_sql.c:    db_url=conf->db_in_url;
19:39:32
#vi commandconf.c
19:39:55
# break;
aide.c:  conf->db_in_url=NULL;
aide.c:  if(conf->db_in_url==NULL){
aide.c:    conf->db_in_url=u;
aide.c:  if(cmpurl(conf->db_in_url,conf->db_out_url)==RETOK){
aide.c:  if((conf->action&DO_DIFF)&&(!(conf->db_new_url)||!(conf->db_in_url))){
commandconf.c:    db_url=conf->db_in_url;
commandconf.c:    conf_db_url=&(conf->db_in_url);
commandconf.c:  if(conf->db_in_url==NULL){
commandconf.c:      conf->db_in_url=u;
db.c:    rv=be_init(1,conf->db_in_url,0);
db.c:    db_url=conf->db_in_url;
db.c:    db_url=conf->db_in_url;
db_file.c:    db_url=conf->db_in_url;
db_file.c:    db_url=conf->db_in_url;
db_sql.c:    db_url=conf->db_in_url;
19:39:55
#vi commandconf.c
19:40:52
# }
commandconf.c:void do_dbindef(char* val)
19:40:55
#grep -r do_dbindef *
commandconf.c:void do_dbindef(char* val)
19:41:00
#ls
Makefile.am  commandconf.c  db.c       db_sql.c    getopt.c     snprintf.c
Makefile.in  compare_db.c   db_disk.c  do_md.c     getopt1.c    symboltable.c
aide.c       conf_lex.l     db_file.c  error.c     gnu_regex.c  util.c
base64.c     conf_lex2.c    db_lex.l   fopen.c     list.c
be.c         conf_yacc.y    db_lex2.c  gen_list.c  md.c
19:41:02
#vi commandconf.c
19:41:34
# }
Checksums = md5+sha1+rmd160+haval+gost+crc32+tiger+whirlpool
"/etc/aide/aide.conf" 156L, 5826C
# check Permissions, Owner and Group
OwnerMode = p+u+g
# Check size and block count
Size = s+b
# Files that stay static
InodeData = OwnerMode+n+i+Size
StaticFile = m+c+Checksums
19:41:44
#Files that stay static but are copied to a ram disk on startup
conf_lex.l:^[\t\ ]*"database_new"{E}  {
conf_lex.l:  error(230,"%i:database_new =\n",conf_lineno);
19:41:49
#vi conf_lex.l
19:42:42
#/database
conf_lex.l:^[\t\ ]*"database_new"{E}  {
conf_lex.l:  error(230,"%i:database_new =\n",conf_lineno);
19:42:46
#grep database_out *
conf_lex.l:^[\t\ ]*"database_out"{E}  {
conf_lex.l:  error(230,"%i:database_out =\n",conf_lineno);
19:42:50
#grep database_in *

19:42:53
#vi aide.c
19:43:14
# /* The patch automatically adds a newline so will also have to add it. */
aide.c:  conf->db_new_url=NULL;
aide.c:  if((conf->action&DO_DIFF)&&(!(conf->db_new_url)||!(conf->db_in_url))){
commandconf.c:    db_url=conf->db_new_url;
commandconf.c:    conf_db_url=&(conf->db_new_url);
db.c:    rv=be_init(1,conf->db_new_url,0);
db.c:    db_url=conf->db_new_url;
db.c:    db_url=conf->db_new_url;
db_file.c:    db_url=conf->db_new_url;
db_file.c:    db_url=conf->db_new_url;
db_sql.c:    db_url=conf->db_new_url;
19:43:18
#grep db_in_url *
aide.c:  conf->db_in_url=NULL;
aide.c:  if(conf->db_in_url==NULL){
aide.c:    conf->db_in_url=u;
aide.c:  if(cmpurl(conf->db_in_url,conf->db_out_url)==RETOK){
aide.c:  if((conf->action&DO_DIFF)&&(!(conf->db_new_url)||!(conf->db_in_url))){
commandconf.c:    db_url=conf->db_in_url;
commandconf.c:    conf_db_url=&(conf->db_in_url);
commandconf.c:  if(conf->db_in_url==NULL){
commandconf.c:      conf->db_in_url=u;
db.c:    rv=be_init(1,conf->db_in_url,0);
db.c:    db_url=conf->db_in_url;
db.c:    db_url=conf->db_in_url;
db_file.c:    db_url=conf->db_in_url;
db_file.c:    db_url=conf->db_in_url;
db_sql.c:    db_url=conf->db_in_url;
19:43:28
#grep database_out *
conf_lex.l:^[\t\ ]*"database_out"{E}  {
conf_lex.l:  error(230,"%i:database_out =\n",conf_lineno);
19:43:36
#vi conf_lex.l
19:43:51
# * License, or (at your option) any later version.
Password:
19:44:07
#ssh user@192.168.15.3
database=file:///var/db/aide/databases/aide.db
database_out=file:///var/db/aide/databases/aide.db.new
database_new=file:///var/db/aide/databases/aide.db.new
#  First, root's traditional "home".  Note that FreeBSD's root's home (/root)
#  is protected by R-tiger-rmd160-sha1 protections in the default config file.
=/$             L
/.rhosts        R
/.profile       R
/.cshrc         R
/.login         R
/.exrc          R
/.logout        R
/.forward       R
# Unix itself
[user@fbsd3 ~]$ exit
logout
Connection to 192.168.15.3 closed.
19:44:32
#vi /etc/aide/aide.conf
--- /tmp/l3-saved-18306.27273.22515	2008-09-03 16:44:35.000000000 +0000
+++ /etc/aide/aide.conf	2008-09-03 16:44:46.000000000 +0000
@@ -1,9 +1,9 @@
 # AIDE conf
 
 # The daily cron job depends on these paths
-database=file:/var/lib/aide/aide.db
-database_out=file:/var/lib/aide/aide.db.new
-database_new=file:/var/lib/aide/aide.db.new
+database=file:///var/lib/aide/aide.db
+database_out=file:///var/lib/aide/aide.db.new
+database_new=file:///var/lib/aide/aide.db.new
 gzip_dbout=yes
 
 # if you want to sacrifice security for speed, remove some of these
19:44:46
#aide --compare
Must have both input databases defined for database compare.
19:44:54
#vi /etc/aide/aide.conf
19:45:27
#cd ..

19:45:29
#which aide.spec.in

19:45:31
#cd

19:45:32
#which aide
/usr/bin/aide
19:45:35
#strings `!!` | grep /etc
strings `which aide` | grep /etc
/etc/localtime
/etc/suid-debug
/etc/ld.so.cache
/etc/ld.so.nohwcap
19:45:41
#strings `which aide.wrapper` | grep /etc

19:45:54
#aide
aide          aide.wrapper  aideinit
19:45:54
#aide
aide          aide.wrapper  aideinit
19:45:54
#which aide.wrapper
/usr/bin/aide.wrapper
19:45:59
#strings `which aide.wrapper ` | grep /etc

19:46:05
#ldd /usr/bin/aide
aide          aide.wrapper
19:46:05
#ldd /usr/bin/aide
        not a dynamic executable
19:46:19
#strings /usr/sbin/aideinit
#!/bin/sh
# $Id: aideinit 648 2007-05-24 12:43:04Z zugschlus $
# Copyright 2003 Mike Markley <mike@markley.org>
# This script is free for any purpose whatseoever so long as the above
# copyright notice remains in place.
if [ -f /etc/default/aide ]; then
        . /etc/default/aide
# Defaults
MAILTO="${MAILTO:-root}"
# Options
...
if [ -f "$dbfile" -a $opt_f -eq 0 ]; then
        echo -n "Overwrite $dbfile [yN]? "
        read yn
        case "$yn" in
            [yY]*)
                cp -f $outfile $dbfile
                ;;
        esac
else
        cp -f $outfile $dbfile
19:46:28
#ls
aide-0.13.1             aide_0.13.1-10.dsc       gmailfs.log  nohup.out
aide_0.13.1-10.diff.gz  aide_0.13.1.orig.tar.gz  megascript   script
19:46:31
#cd aide-0.13.1/

19:46:39
#grep -r aide.conf .
./configure.in:    config_file=`eval echo "$sysconfdir/aide.conf"`
./configure.in:    config_file="$prefix/etc/aide.conf"
./configure.in:    config_file="$ac_default_prefix/etc/aide.conf"
./configure.in:AC_CONFIG_FILES(Makefile src/Makefile doc/Makefile doc/aide.conf doc/aide.1 doc/aide.conf.5 aide.spec)
./ChangeLog:    * Explain aide.conf and aide.db signing
./ChangeLog:    * Fix layout of aide.conf.5 by Vincent Danen <vdanen@linsec.ca>
./ChangeLog:    * Mention in aide.conf.5 that 'c' and 'I' are incompatible
./ChangeLog:    * Created aide.conf.5.in and aide.conf.5.ru.in as per bug #1103719
./ChangeLog:    * Allow @@{HOSTNAME} usage in aide.conf (Virolainen Pablo <pablo@cs.tut.fi>)
./ChangeLog:Changed: configure aide.conf.5 compare_db.c,gen_list.c,util.c
...
./configure:       config_file="$prefix/etc/aide.conf"
./configure:       config_file="$ac_default_prefix/etc/aide.conf"
./configure:ac_config_files="$ac_config_files Makefile src/Makefile doc/Makefile doc/aide.conf doc/aide.1 doc/aide.conf.5 aide.spec"
./configure:aide config.status 0.13.1
./configure:    "doc/aide.conf") CONFIG_FILES="$CONFIG_FILES doc/aide.conf" ;;
./configure:    "doc/aide.conf.5") CONFIG_FILES="$CONFIG_FILES doc/aide.conf.5" ;;
./Makefile.in:  src/aide -c doc/aide.conf -V20
./Makefile.in:  src/aide -B "database_out=file://$(top_srcdir)/doc/aide.db" -c doc/aide.conf -i
./aide.spec.in:CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%prefix --sysconfdir=/etc --with-config-file=/etc/aide.conf
./aide.spec.in:%{prefix}/man/man5/aide.conf.5.gz
19:46:45
#grep -r aide.conf . | less
19:47:03
#apt-get install strace
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  strace
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 160kB of archives.
After this operation, 287kB of additional disk space will be used.
Get:1 http://192.168.15.254 sid/main strace 4.5.17+cvs080723-2 [160kB]
Fetched 160kB in 0s (3228kB/s)
Selecting previously deselected package strace.
(Reading database ... 94285 files and directories currently installed.)
Unpacking strace (from .../strace_4.5.17+cvs080723-2_i386.deb) ...
Processing triggers for man-db ...
Setting up strace (4.5.17+cvs080723-2) ...
19:47:13
#strace aide --compare 2>&1 | less
19:47:45
#cd /etc/

Статистика

Время первой команды журнала19:26:36 2008- 9- 3
Время последней команды журнала19:47:45 2008- 9- 3
Количество командных строк в журнале101
Процент команд с ненулевым кодом завершения, %25.74
Процент синтаксически неверно набранных команд, % 0.00
Суммарное время работы с терминалом *, час 0.35
Количество командных строк в единицу времени, команда/мин 4.78
Частота использования команд
vi17|===============| 15.04%
grep15|=============| 13.27%
ls12|==========| 10.62%
aide7|======| 6.19%
Files7|======| 6.19%
less7|======| 6.19%
cd6|=====| 5.31%
strings4|===| 3.54%
dpkg3|==| 2.65%
apt-get3|==| 2.65%
which3|==| 2.65%
}2|=| 1.77%
umount2|=| 1.77%
man2|=| 1.77%
tar2|=| 1.77%
ps2|=| 1.77%
ldd2|=| 1.77%
db_out_url=u1|| 0.88%
fuser1|| 0.88%
&1|| 0.88%
/database1|| 0.88%
conf->1|| 0.88%
~1|| 0.88%
find1|| 0.88%
*1|| 0.88%
strace1|| 0.88%
lsmod1|| 0.88%
/*1|| 0.88%
touch1|| 0.88%
mount1|| 0.88%
rmmod1|| 0.88%
break1|| 0.88%
11|| 0.88%
ssh1|| 0.88%
____
*) Интервалы неактивности длительностью 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$