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

Содержание

Журнал

Понедельник (08/13/12)

/dev/pts/6
10:05:50
$./who1
                  1344693553
reboot   ~        1344693553
runlevel ~        1344693553
                  1344693683
LOGIN    tty6     1344693683
LOGIN    tty4     1344693683
LOGIN    tty2     1344693683
LOGIN    tty5     1344693683
LOGIN    tty3     1344693683
LOGIN    tty1     1344693683
ol14     tty7     1344826101 :0
ol14     pts/0    1344844891 :0.0
ol14     pts/2    1344827648 :0.0
ol14     pts/4    1344829989 :0.0
ol14     pts/6    1344830680 :0.0
ol14     pts/10   1344831878 :0.0
ol14     pts/12   1344831884 :0.0
ol14     pts/14   1344834060 :0.0
10:05:52
$cd ~/C/who2

10:08:51
$gcc -o who1 who1.c
who1.c: In function ‘show_info’:
who1.c:36: error: ‘utbofp’ undeclared (first use in this function)
who1.c:36: error: (Each undeclared identifier is reported only once
who1.c:36: error: for each function it appears in.)
10:15:40
$gcc -o who1 who1.c

10:16:03
$./who1
ol14     tty7     1344826101 :0
ol14     pts/0    1344844891 :0.0
ol14     pts/2    1344827648 :0.0
ol14     pts/4    1344829989 :0.0
ol14     pts/6    1344830680 :0.0
ol14     pts/10   1344831878 :0.0
ol14     pts/12   1344831884 :0.0
ol14     pts/14   1344834060 :0.0
10:16:07
$gcc -o who1 who1.c
who1.c:35: warning: conflicting types for ‘show_info’
who1.c:19: note: previous declaration of ‘show_info’ was here
/dev/pts/12
10:17:24
$man -k time |grep transform
asctime (3)          - transform date and time to broken-down time or ASCII
asctime_r (3)        - transform date and time to broken-down time or ASCII
ctime (3)            - transform date and time to broken-down time or ASCII
ctime_r (3)          - transform date and time to broken-down time or ASCII
gmtime (3)           - transform date and time to broken-down time or ASCII
gmtime_r (3)         - transform date and time to broken-down time or ASCII
localtime (3)        - transform date and time to broken-down time or ASCII
localtime_r (3)      - transform date and time to broken-down time or ASCII
mktime (3)           - transform date and time to broken-down time or ASCII
10:17:39
$man 3 ctime
прошло 10 минут
/dev/pts/6
10:28:19
$gcc -o who1 who1.c

10:28:40
$./who1
ol14     tty7     1344826101 :0
ol14     pts/0    1344844891 :0.0
ol14     pts/2    1344827648 :0.0
ol14     pts/4    1344829989 :0.0
ol14     pts/6    1344830680 :0.0
ol14     pts/10   1344831878 :0.0
ol14     pts/12   1344831884 :0.0
ol14     pts/14   1344834060 :0.0
10:28:49
$gcc -o who1 who1.c
who1.c: In function ‘showtime’:
who1.c:51: error: parameter name omitted
who1.c:54: error: ‘timeval’ undeclared (first use in this function)
who1.c:54: error: (Each undeclared identifier is reported only once
who1.c:54: error: for each function it appears in.)
10:35:07
$gcc -o who1 who1.c

10:35:46
$gcc -o who1 who1.c
who1.c: In function ‘show_info’:
who1.c:47: error: ‘upbufp’ undeclared (first use in this function)
who1.c:47: error: (Each undeclared identifier is reported only once
who1.c:47: error: for each function it appears in.)
10:37:52
$gcc -o who1 who1.c

10:38:15
$./who1
ol14     tty7     1344826101 :0
ol14     pts/0    1344844891 :0.0
ol14     pts/2    1344827648 :0.0
ol14     pts/4    1344829989 :0.0
ol14     pts/6    1344830680 :0.0
ol14     pts/10   1344831878 :0.0
ol14     pts/12   1344831884 :0.0
ol14     pts/14   1344834060 :0.0
10:38:18
$gcc -o who1 who1.c

10:39:58
$./who1
ol14     tty7     Aug 13 08:48:0
ol14     pts/0    Aug 13 14:01:0.0
ol14     pts/2    Aug 13 09:14:0.0
ol14     pts/4    Aug 13 09:53:0.0
ol14     pts/6    Aug 13 10:04:0.0
ol14     pts/10   Aug 13 10:24:0.0
ol14     pts/12   Aug 13 10:24:0.0
ol14     pts/14   Aug 13 11:01:0.0
10:40:00
$./who1
ol14     tty7     Aug 13 08:48:0
ol14     pts/0    Aug 13 14:01:0.0
ol14     pts/2    Aug 13 09:14:0.0
ol14     pts/4    Aug 13 09:53:0.0
ol14     pts/6    Aug 13 10:04:0.0
ol14     pts/10   Aug 13 10:24:0.0
ol14     pts/12   Aug 13 10:24:0.0
ol14     pts/14   Aug 13 11:01:0.0
root     pts/17   Aug 13 14:40:0.0
10:40:29
$cd ~/C/cp

10:48:53
$gcc -o cp1 cp.c

10:49:03
$./cp1

10:49:14
$./cp1

прошло 11 минут
11:00:18
$gcc -o cp1 cp.c
cp.c: In function ‘main’:
cp.c:15: warning: comparison between pointer and integer
11:00:20
$gcc -o cp1 cp.c

11:02:50
$gcc -o cp1 cp.c
cp.c: In function ‘main’:
cp.c:21: warning: assignment makes integer from pointer without a cast
11:05:30
$gcc -o cp1 cp.c

11:05:45
$gcc -o cp1 cp.c

11:07:02
$./cp1 www rrr
Ошибка сегментирования
11:07:10
$gcc -o cp1 cp.c

11:08:14
$./cp1 www rrr
Ошибка сегментирования
11:08:16
$./cp1 www
Ошибка сегментирования
11:08:21
$gcc -o cp1 cp.c

11:08:38
$./cp1 www rrr

11:08:40
$gcc -o cp1 cp.c

11:11:33
$./cp1 www rrr

11:11:34
$./cp1 www rrr

11:11:42
$gcc -o cp1 cp.c

11:12:00
$./cp1 www rrr

11:12:01
$gcc -o cp1 cp.c

11:16:38
$./cp1 www rrr

11:16:39
$./cp1 www rrr

11:17:33
$gcc -o cp1 cp.c
cp.c: In function ‘main’:
cp.c:17: error: array size missing in ‘copyfile’
cp.c:18: error: array size missing in ‘tocopyfile’
cp.c:21: error: incompatible types when assigning to type ‘char[1]’ from type ‘char’
cp.c:22: error: incompatible types when assigning to type ‘char[1]’ from type ‘char’
cp.c:24: error: ‘copyfile1’ undeclared (first use in this function)
cp.c:24: error: (Each undeclared identifier is reported only once
cp.c:24: error: for each function it appears in.)
11:17:34
$gcc -o cp1 cp.c
cp.c: In function ‘main’:
cp.c:17: error: array size missing in ‘copyfile’
cp.c:18: error: array size missing in ‘tocopyfile’
11:17:57
$gcc -o cp1 cp.c
cp.c: In function ‘main’:
cp.c:24: error: ‘copyfile1’ undeclared (first use in this function)
cp.c:24: error: (Each undeclared identifier is reported only once
cp.c:24: error: for each function it appears in.)
11:24:58
$./cp1 www rrr

11:25:08
$gcc -o cp1 cp.c

11:25:10
$./cp1 www rrr

11:25:11
$gcc -o cp1 cp.c

прошло 47 минут
/dev/pts/18
12:12:42
$ping sec
ping: unknown host sec
12:12:48
$ping 192.168.0.28
PING 192.168.0.28 (192.168.0.28) 56(84) bytes of data.
From 192.168.0.127 icmp_seq=9 Destination Host Unreachable
From 192.168.0.127 icmp_seq=10 Destination Host Unreachable
From 192.168.0.127 icmp_seq=11 Destination Host Unreachable
From 192.168.0.127 icmp_seq=12 Destination Host Unreachable
From 192.168.0.127 icmp_seq=13 Destination Host Unreachable
From 192.168.0.127 icmp_seq=14 Destination Host Unreachable
From 192.168.0.127 icmp_seq=15 Destination Host Unreachable
From 192.168.0.127 icmp_seq=16 Destination Host Unreachable
From 192.168.0.127 icmp_seq=17 Destination Host Unreachable
^Z
[1]+  Stopped                 ping 192.168.0.28

Вторник (08/14/12)

/dev/pts/6
05:29:34
$./cp1 www rrr
Ошибка сегментирования
05:29:35
$gcc -o cp1 cp.c

05:30:44
$./cp1 www rrr
Ошибка сегментирования
05:30:45
$gcc -o cp1 cp.c

05:30:59
$./cp1 www rrr

05:31:01
$gcc -o cp1 cp.c

05:32:47
$./cp1 www rrr

05:32:49
$gcc -o cp1 cp.c

05:33:34
$./cp1 www rrr

05:33:53
$gcc -o cp1 cp.c

05:35:26
$./cp1 www rrr

05:35:29
$./cp1

05:35:38
$ls
cp1  cp.c
05:35:39
$gcc -o cp1 cp.c

05:37:01
$./cp1

05:37:04
$./cp1 www rrr

05:38:17
$cd ~/C/K&R/Helloworld
[1] 18791
bash: cd: /home/ol14/C/K: Нет такого файла или каталога
bash: R/Helloworld: Нет такого файла или каталога
[1]+  Exit 1                  cd ~/C/K
05:45:10
$cd ~/C/

05:45:30
$ls
1.deb  C.zip  l1        more    more01.zip  RT-N13U.RB_9.2.5.4.trx  who2
cp     K&R    Makefile  more01  more02      who1
05:45:32
$cd ~/C/K&R/
[1] 18881
bash: R/: Нет такого файла или каталога
bash: cd: /home/ol14/C/K: Нет такого файла или каталога
[1]+  Exit 1                  cd ~/C/K
05:45:46
$cd ~/C/KandR/Helloworld

05:46:42
$ls
hello.c
05:46:46
$gcc -o hello hello.c
/usr/lib/gcc/i486-linux-gnu/4.4.5/../../../../lib/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status
05:47:06
$gcc -o hello hello.c

05:50:26
$./hello

05:50:35
$cd ~/C/KandR/Helloworld

05:51:30
$gcc -o hello hello.c

05:51:34
$./hello

05:51:37
$ls
hello  hello.c
05:51:41
$gcc -o hello hello.c

/dev/pts/12
05:52:06
$ described. The value is positive if daylight saving time is in effect, zero
asprintf (3)         - print to allocated string
dprintf (3)          - print to a file descriptor
fprintf (3)          - formatted output conversion
fwprintf (3)         - formatted wide-character output conversion
printf (1)           - format and print data
printf (3)           - formatted output conversion
snprintf (3)         - formatted output conversion
sprintf (3)          - formatted output conversion
swprintf (3)         - formatted wide-character output conversion
vasprintf (3)        - print to allocated string
vdprintf (3)         - print to a file descriptor
vfprintf (3)         - formatted output conversion
vfwprintf (3)        - formatted wide-character output conversion
vprintf (3)          - formatted output conversion
vsnprintf (3)        - formatted output conversion
vsprintf (3)         - formatted output conversion
vswprintf (3)        - formatted wide-character output conversion
vwprintf (3)         - formatted wide-character output conversion
wprintf (3)          - formatted wide-character output conversion
05:52:18
$man 1 printf
05:53:58
$Press `Q' to quit, `H' for help, and SPACE to scroll.

/dev/pts/6
05:55:52
$./hello

05:55:54
$./hello
bash: ./hello: Нет такого файла или каталога
05:56:36
$gcc -o hello hello.c

05:56:38
$./hello

05:56:39
$gcc -o hello hello.c

06:01:28
$./hello

06:01:33
$gcc -o hello hello.c
hello.c:13:13: warning: character constant too long for its type
06:02:04
$gcc -o hello hello.c
hello.c: In function ‘main’:
hello.c:13: error: expected expression before ‘)’ token
06:04:03
$gcc -o hello hello.c

06:04:41
$./hello

06:04:42
$gc -o hello hello.c
bash: gc: команда не найдена
06:07:05
$gcc -o hello hello.c

06:07:12
$./hello

06:07:17
$gcc -o hello hello.c

прошло 14 минут
06:21:57
$./hello

06:21:58
$gcc -o hello hello.c
hello.c: In function ‘main’:
hello.c:13: warning: initialization makes integer from pointer without a cast
06:22:53
$gcc -o hello hello.c
hello.c: In function ‘main’:
hello.c:13: warning: initialization makes integer from pointer without a cast
hello.c:14: error: invalid type argument of ‘unary *’ (have ‘int’)
06:23:38
$gcc -o hello hello.c
hello.c: In function ‘main’:
hello.c:13: warning: initialization makes integer from pointer without a cast
hello.c:14: error: invalid type argument of ‘unary *’ (have ‘int’)

Статистика

Время первой команды журнала10:05:50 2012- 8-13
Время последней команды журнала06:23:38 2012- 8-14
Количество командных строк в журнале101
Процент команд с ненулевым кодом завершения, %20.79
Процент синтаксически неверно набранных команд, % 3.96
Суммарное время работы с терминалом *, час 2.23
Количество командных строк в единицу времени, команда/мин 0.76
Частота использования команд
gcc45|===========================================| 43.27%
cp122|=====================| 21.15%
hello9|========| 8.65%
cd7|======| 6.73%
who16|=====| 5.77%
ls4|===| 3.85%
man3|==| 2.88%
ping2|=| 1.92%
gc1|| 0.96%
grep1|| 0.96%
R/1|| 0.96%
Helloworld1|| 0.96%
Press1|| 0.96%
described.1|| 0.96%
____
*) Интервалы неактивности длительностью 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$