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

Содержание

Журнал

Вторник (03/27/18)

/dev/pts/2
14:05:02
#cd

14:11:17
#ls
d1  d2  d3  install  ip.txt
14:11:19
#cp /etc/passwd
cp: после «/etc/passwd» пропущен операнд, задающий целевой файл
Попробуйте «cp --help» для получения более подробного описания.
14:11:59
#cp /etc/passwd pwrd

14:17:06
#ls
d1  d2  d3  install  ip.txt  pwrd
14:17:22
#cat pwrd | sed -n -r '/:1[0-9]{2}:/p'
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
Debian-exim:x:101:103::/var/spool/exim4:/bin/false
sshd:x:102:65534::/var/run/sshd:/usr/sbin/nologin
14:21:09
#cat pwrd | sed -n -r '/:1[0-9]{3}:/p'
user:x:1000:1000:user,,,:/home/user:/bin/bash
ivan:x:1001:1001::/home/ivan:/bin/bash
petr:x:1002:1002::/home/petr:/bin/bash
14:21:20
#locate ip.txt
/usr/share/vim/vim73/doc/pi_gzip.txt
/usr/share/vim/vim73/doc/pi_zip.txt
прошло 68 минут
15:30:01
#cd /etc/cron.daily/

15:31:56
#ls
apt       bsdmainutils  exim4-base  logrotate  passwd
aptitude  dpkg          locate      man-db
15:32:10
#./locate

15:32:36
#cat locate
#! /bin/sh
set -e
# cron script to update the `locatedb' database.
#
# Written by Ian A. Murdock <imurdock@debian.org> and
#            Kevin Dalley <kevin@aimnet.com>
# Please consult updatedb(1) and /usr/share/doc/locate/README.Debian
[ -e /usr/bin/updatedb.findutils ] || exit 0
if [ "$(id -u)" != "0" ]; then
        echo "You must be root."
...
                ionice -c $IONICE_CLASS $priority -p $$ > /dev/null 2>&1 || true
                ;;
        esac
fi
if getent passwd $LOCALUSER > /dev/null ; then
  cd / && nice -n ${NICE:-10} updatedb.findutils 2>/dev/null
else
  echo "User $LOCALUSER does not exist."
  exit 1
fi
15:33:27
#cd

15:36:08
#find -user ivan -mtime -1 -type f

15:39:52
#cd

15:40:17
#find -user ivan -mtime -1 -type f

15:41:06
#find /home -user ivan -mtime -1 -type f
/home/ivan/cat tuchlist
/home/ivan/file
/home/ivan/.bashrc
/home/ivan/o'Reilly
/home/ivan/.bash_history
/home/ivan/cat3
/home/ivan/one space
/home/ivan/file with
/home/ivan/newfile
/home/ivan/asd
/home/ivan/cat1
/home/ivan/cat2
/home/ivan/.viminfo
/home/ivan/A:\windows\sys
/home/ivan/errlog
/home/ivan/d$
/home/ivan/touchlist
/home/ivan/cat touchlist
15:48:08
#find / -name find*
/lib/udev/findkeyboards
/usr/bin/find2perl
/usr/bin/find
/usr/share/man/man1/find2perl.1.gz
/usr/share/man/man1/find.1.gz
/usr/share/man/man8/findfs.8.gz
/usr/share/man/man8/findmnt.8.gz
/usr/share/info/find.info.gz
/usr/share/bash-completion/completions/find_member
/usr/share/bash-completion/completions/find
...
/usr/share/locale/tr/LC_MESSAGES/findutils.mo
/usr/share/locale/pt_BR/LC_MESSAGES/findutils.mo
/usr/share/locale/sl/LC_MESSAGES/findutils.mo
/usr/share/doc-base/findutils
/bin/findmnt
/var/lib/dpkg/info/findutils.md5sums
/var/lib/dpkg/info/findutils.postinst
/var/lib/dpkg/info/findutils.list
/var/lib/dpkg/info/findutils.preinst
/sbin/findfs
15:48:24
#find -name find*

15:48:35
#find \-name find*

15:48:39
#find /-name find*
find: `/-name': Нет такого файла или каталога
find: `find*': Нет такого файла или каталога
15:48:47
#ls
d1  d2  d3  install  ip.txt  pwrd
15:54:03
#mkdir soft

15:54:16
#ls
d1  d2  d3  install  ip.txt  pwrd  soft
15:54:18
#touch erwewr.txt

15:55:01
#touch erwewegfwr.txt

15:55:04
#find -regex '*.txt'

15:55:42
#find -regex '\.txt'

15:55:59
#find -regex '.*txt'
./erwewegfwr.txt
./erwewr.txt
./ip.txt
15:56:35
#find -regex '.txt'

15:56:41
#find -regex '*\.txt'

15:57:39
#find -regex '\*txt'

15:57:45
#find -regex 'txt'

15:57:51
#find -regex '\txt'

15:57:55
#find -regex '.txt'

15:57:58
#find -regex '\.txt'

15:58:01
#find -regex '.\txt'

15:58:09
#find -regex '.*txt'
./erwewegfwr.txt
./erwewr.txt
./ip.txt
15:58:21
#find -regex '.*xt'
./erwewegfwr.txt
./erwewr.txt
./ip.txt
15:58:27
#find -regex '.*txt'
./erwewegfwr.txt
./erwewr.txt
./ip.txt
15:58:31
#find -regex '.txt'

15:58:39
#find -regex '.*txt'
./erwewegfwr.txt
./erwewr.txt
./ip.txt
15:58:59
#ls
d1  d2  d3  erwewegfwr.txt  erwewr.txt  install  ip.txt  pwrd  soft
15:59:12
#find -regex '.*txt' -exec mv {} /soft
find: отсутствует аргумент у `-exec'
15:59:49
#find -regex '.*txt' -exec mv {} /soft ;
find: отсутствует аргумент у `-exec'
15:59:53
#find -regex '.*txt' -exec mv {} /soft \;

16:00:02
#ls
d1  d2  d3  install  pwrd  soft
16:00:05
#cat soft
cat: soft: Это каталог
16:00:11
#ls soft

16:00:16
#cd soft

16:00:20
#ls

16:00:21
#cd..
l3script: cd..: команда не найдена
16:00:32
#cd ..

16:00:34
#cd ..

16:00:39
#ls
bin   etc         lib    lost+found  opt   run      soft  tmp  vmlinuz
boot  home        lib32  media       proc  sbin     srv   usr
dev   initrd.img  lib64  mnt         root  selinux  sys   var
16:00:41
#find -type d soft
find: paths must precede expression: soft
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
16:01:01
#find -type P soft
find: Unknown argument to -type: P
16:01:05
#find -type -P soft
find: Arguments to -type should contain only one letter
16:01:13
#find -type P soft
find: Unknown argument to -type: P
16:01:20
#find -type F soft
find: Unknown argument to -type: F
16:01:39
#find soft -tepe F
find: unknown predicate `-tepe'
16:01:56
#find soft -type F
find: Unknown argument to -type: F
16:02:00
#find soft -type F:
find: Arguments to -type should contain only one letter
16:02:08
#cd ..

16:02:49
#ls
bin   etc         lib    lost+found  opt   run      soft  tmp  vmlinuz
boot  home        lib32  media       proc  sbin     srv   usr
dev   initrd.img  lib64  mnt         root  selinux  sys   var
16:02:51
#cd

16:02:57
#lsa
l3script: lsa: команда не найдена
16:03:00
#ls
d1  d2  d3  install  pwrd  soft
16:03:02
#ls soft

16:03:11
#find /home soft
/home
/home/petr
/home/petr/.bashrc
/home/petr/.bash_history
/home/petr/.profile
/home/petr/.bash_logout
/home/ivan
/home/ivan/cat tuchlist
/home/ivan/file
/home/ivan/.bashrc
...
/home/user/names/.passwd
/home/user/.bash_logout
/home/user/sh
/home/user/sh/file.Cs
/home/user/sh/C.C
/home/user/sh/rn
/home/user/sh/file.C
/home/user/.bash_profile
/home/user/touchlist
soft
16:04:12
#find /home soft -type -f
find: Arguments to -type should contain only one letter
16:04:22
#find /home soft -type f
/home/petr/.bashrc
/home/petr/.bash_history
/home/petr/.profile
/home/petr/.bash_logout
/home/ivan/cat tuchlist
/home/ivan/file
/home/ivan/.bashrc
/home/ivan/o'Reilly
/home/ivan/.bash_history
/home/ivan/cat3
...
/home/user/names/term.h
/home/user/names/_hrypun
/home/user/names/.passwd
/home/user/.bash_logout
/home/user/sh/file.Cs
/home/user/sh/C.C
/home/user/sh/rn
/home/user/sh/file.C
/home/user/.bash_profile
/home/user/touchlist
16:04:24
#find /home soft -type p

16:04:28
#find /home soft -type o
find: Unknown argument to -type: o
16:04:43
#find . soft -type o
find: Unknown argument to -type: o
16:04:51
#find . soft -type p

16:04:54
#find ~ soft -type p

Среда (03/28/18)

/dev/pts/2
08:12:35
#a=ls

08:13:38
#a$
l3script: a$: команда не найдена
08:13:41
#a=1

08:14:37
#a$
l3script: a$: команда не найдена
08:14:41
#bash
root@debian2:~# l3script
/dev/pts/3
08:16:32
#a=ls

/dev/pts/2
08:16:32
#a=ls

/dev/pts/3
08:16:39
#$a
d1  d2  d3  install  pwrd  soft
/dev/pts/2
08:16:39
#$a
d1  d2  d3  install  pwrd  soft
08:16:41
#exit
exit
root@debian2:~# l3script
/dev/pts/3
08:17:24
#export a

/dev/pts/2
08:17:24
#export a

/dev/pts/3
08:17:40
#a$
l3script: a$: команда не найдена
/dev/pts/2
08:17:40
#a$
l3script: a$: команда не найдена
/dev/pts/3
08:17:47
#$a

/dev/pts/2
08:17:47
#$a

/dev/pts/3
08:17:56
#bash
root@debian2:~# $a
root@debian2:~# exit
exit
/dev/pts/2
08:17:56
#bash
root@debian2:~# $a
root@debian2:~# exit
exit
/dev/pts/3
08:18:06
#a=1

/dev/pts/2
08:18:06
#a=1

/dev/pts/3
08:18:09
#$a
l3script: 1: команда не найдена
/dev/pts/2
08:18:09
#$a
l3script: 1: команда не найдена
/dev/pts/3
08:18:12
#export a

/dev/pts/2
08:18:12
#export a

Файлы

  • locate
  • locate
    >
    #! /bin/sh
    set -e
    # cron script to update the `locatedb' database.
    #
    # Written by Ian A. Murdock <imurdock@debian.org> and
    #            Kevin Dalley <kevin@aimnet.com>
    # Please consult updatedb(1) and /usr/share/doc/locate/README.Debian
    [ -e /usr/bin/updatedb.findutils ] || exit 0
    if [ "$(id -u)" != "0" ]; then
            echo "You must be root."
            exit 1
    fi
    # Global options for invocations of find(1)
    FINDOPTIONS='-ignore_readdir_race'
    # filesystems which are pruned from updatedb database
    PRUNEFS="NFS nfs nfs4 afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs sysfs cifs lustre_lite tmpfs usbfs udf ocfs2"
    # paths which are pruned from updatedb database
    PRUNEPATHS="/tmp /usr/tmp /var/tmp /afs /amd /alex /var/spool /sfs /media /var/lib/schroot/mount"
    # netpaths which are added
    NETPATHS=""
    # run find as this user
    LOCALUSER="nobody"
    # cron.daily/find: run at this priority -- higher number means lower priority
    # (this is relative to the default which cron sets, which is usually +5)
    NICE=10
    # I/O priority
    # 1 for real time, 2 for best-effort, 3 for idle ("3" only allowed for root)
    IONICE_CLASS=3
    # 0-7 (only valid for IONICE_CLASS 1 and 2), 0=highest, 7=lowest
    IONICE_PRIORITY=7
    # allow keeping local customizations in a separate file
    if [ -r /etc/updatedb.findutils.cron.local ] ; then
            . /etc/updatedb.findutils.cron.local
    fi
    export FINDOPTIONS PRUNEFS PRUNEPATHS NETPATHS LOCALUSER
    # Set the task to run with desired I/O priority if possible
    # Linux supports io scheduling priorities and classes since
    # 2.6.13 with the CFQ io scheduler
    if [ -x /usr/bin/ionice ] && [ "${UPDATDB_NO_IONICE}" = "" ]; then
            # don't run ionice if kernel version < 2.6.13
            KVER=$(uname -r)
            case "$KVER" in
                    2.[012345]*) ;;
                    2.6.[0-9]) ;;
                    2.6.[0-9].*) ;;
                    2.6.1[012]*) ;;
                    *)
                    # Avoid providing "-n" when IONICE_CLASS isn't 1 or 2
                    case "$IONICE_CLASS" in
                            1|2) priority="-n ${IONICE_PRIORITY:-7}" ;;
                            *) priority="" ;;
                    esac
                    ionice -c $IONICE_CLASS $priority -p $$ > /dev/null 2>&1 || true
                    ;;
            esac
    fi
    if getent passwd $LOCALUSER > /dev/null ; then
      cd / && nice -n ${NICE:-10} updatedb.findutils 2>/dev/null
    else
      echo "User $LOCALUSER does not exist."
      exit 1
    fi
    

    Статистика

    Время первой команды журнала14:05:02 2018- 3-27
    Время последней команды журнала08:18:12 2018- 3-28
    Количество командных строк в журнале101
    Процент команд с ненулевым кодом завершения, %15.84
    Процент синтаксически неверно набранных команд, % 7.92
    Суммарное время работы с терминалом *, час 0.95
    Количество командных строк в единицу времени, команда/мин 1.78
    Частота использования команд
    find42|========================================| 40.78%
    ls13|============| 12.62%
    cd9|========| 8.74%
    $a6|=====| 5.83%
    a$4|===| 3.88%
    export4|===| 3.88%
    cat4|===| 3.88%
    a=13|==| 2.91%
    bash3|==| 2.91%
    a=ls3|==| 2.91%
    touch2|=| 1.94%
    cp2|=| 1.94%
    locate2|=| 1.94%
    sed2|=| 1.94%
    mkdir1|| 0.97%
    cd..1|| 0.97%
    lsa1|| 0.97%
    exit1|| 0.97%
    ____
    *) Интервалы неактивности длительностью 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$