Рейтинговые книги
Читем онлайн Искусство программирования на языке сценариев командной оболочки - Мендель Купер

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 49 50 51 52 53 54 55 56 57 ... 96

lsof

Выводит детальный список открытых, в настоящий момент времени, файлов в виде таблицы. В таблице указаны -- владелец файла, размер файла, тип файла, процесс, открывший файл, и многое другое. Само собой разумеется, что вывод команды lsof может быть обработан, в конвейере, с помощью утилит grep и/или awk.

bash$ lsof

COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME

init 1 root mem REG 3,5 30748 30303 /sbin/init

init 1 root mem REG 3,5 73120 8069 /lib/ld-2.1.3.so

init 1 root mem REG 3,5 931668 8075 /lib/libc-2.1.3.so

cardmgr 213 root mem REG 3,5 36956 30357 /sbin/cardmgr

...

strace

Диагностическая и отладочная утилита, предназначенная для трассировки системных вызовов и сигналов. В простейшем случае, запускается как: strace COMMAND.

bash$ strace df

execve("/bin/df", ["df"], [/* 45 vars */]) = 0

uname({sys="Linux", node="bozo.localdomain", ...}) = 0

brk(0) = 0x804f5e4

...

Эквивалентна команде truss.

nmap

Сканер сетевых портов. Эта утилита сканирует сервер в поисках открытых портов и сервисов. Это очень важный инструмент, используемый для поиска уязвимостей при настройке системы.

#!/bin/bash

SERVER=$HOST # localhost.localdomain (127.0.0.1).

PORT_NUMBER=25 # порт службы SMTP.

nmap $SERVER | grep -w "$PORT_NUMBER" # Проверить -- открыт ли данный порт?

# grep -w -- поиск только целых слов,

#+ так, например, порт 1025 будет пропущен.

exit 0

# 25/tcp open smtp

free

Показывает информацию об использовании памяти, в табличной форме. Вывод команды может быть проанализирован с помощью grep, awk или Perl. Команда procinfo тоже выводит эту информацию, среди всего прочего.

bash$ free

total used free shared buffers cached

Mem: 30504 28624 1880 15820 1608 16376

-/+ buffers/cache: 10640 19864

Swap: 68540 3128 65412

Показать размер неиспользуемой памяти RAM:

bash$ free | grep Mem | awk '{ print $4 }'

1880

procinfo

Извлекает и выводит информацию из файловой системы /proc.

bash$ procinfo | grep Bootup

Bootup: Wed Mar 21 15:15:50 2001 Load average: 0.04 0.21 0.34 3/47 6829

lsdev

Список аппаратных устройств в системе.

bash$ lsdev

Device DMA IRQ I/O Ports

------------------------------------------------

cascade 4 2

dma 0080-008f

dma1 0000-001f

dma2 00c0-00df

fpu 00f0-00ff

ide0 14 01f0-01f7 03f6-03f6

...

du

Выводит сведения о занимаемом дисковом пространстве в каталоге и вложенных подкаталогах. Если каталог не указан, то по-умолчанию выводятся сведения о текущем каталоге.

bash$ du -ach

1.0k ./wi.sh

1.0k ./tst.sh

1.0k ./random.file

6.0k .

6.0k total

df

Выводит в табличной форме сведения о смонтированных файловых системах.

bash$ df

Filesystem 1k-blocks Used Available Use% Mounted on

/dev/hda5 273262 92607 166547 36% /

/dev/hda8 222525 123951 87085 59% /home

/dev/hda7 1408796 1075744 261488 80% /usr

stat

Дает подробную информацию о заданном файле (каталоге или файле устройства) или наборе файлов.

bash$ stat test.cru

File: "test.cru"

Size: 49970 Allocated Blocks: 100 Filetype: Regular File

Mode: (0664/-rw-rw-r--) Uid: ( 501/ bozo) Gid: ( 501/ bozo)

Device: 3,8 Inode: 18185 Links: 1

Access: Sat Jun 2 16:40:24 2001

Modify: Sat Jun 2 16:40:24 2001

Change: Sat Jun 2 16:40:24 2001

Если заданный файл отсутствует, то stat вернет сообщение об ошибке.

bash$ stat nonexistent-file

nonexistent-file: No such file or directory

vmstat

Выводит информацию о виртуальной памяти.

bash$ vmstat

procs memory swap io system cpu

r b w swpd free buff cache si so bi bo in cs us sy id

0 0 0 0 11040 2636 38952 0 0 33 7 271 88 8 3 89

netstat

Показывает сведения о сетевой подсистеме, такие как: таблицы маршрутизации и активные соединения. Эта утилита получает сведения из /proc/net (Глава 27). См. Пример 27-2.

netstat -r -- эквивалентна команде route.

uptime

Показывает количество времени, прошедшего с момента последней перезагрузки системы.

bash$ uptime

10:28pm up 1:57, 3 users, load average: 0.17, 0.34, 0.27

hostname

Выводит имя узла (сетевое имя системы). С помощью этой команды устанавливается сетевое имя системы в сценарии /etc/rc.d/rc.sysinit. Эквивалентна команде uname -n и внутренней переменной $HOSTNAME.

bash$ hostname

localhost.localdomain

bash$ echo $HOSTNAME

localhost.localdomain

hostid

Выводит 32-битный шестнадцатиричный идентификатор системы.

bash$ hostid

7f0100

Эта команда генерирует "уникальный" числовой идентификатор системы. Некоторые программные продукты используют этот идентификатор в процедуре регистрации. К сожалению, при генерации идентификатора, hostid использует только IP адрес системы, переводя его в шестнадцатиричное представление и переставляя местами пары байт.

Обычно, IP адрес системы можно найти в файле /etc/hosts.

bash$ cat /etc/hosts

127.0.0.1 localhost.localdomain localhost

Переставив местами байты, попарно, в начальном адресе 127.0.0.1, мы получим 0.127.1.0, в шестнадцатиричном представлении это будет 007f0100, что в точности совпадает с приведенным выше результатом выполнения hostid. Наверняка можно найти несколько миллионов компьютеров с таким же "уникальным" идентификатором.

sar

Команда sar (system activity report) выводит очень подробную статистику о функционировании операционной системы. Эту команду можно найти в отдельных коммерческих дистрибутивах UNIX-систем. Она, как правило, не входит в базовый комплект пакетов Linux-систем. Она входит в состав пакета sysstat utilities, автор: Sebastien Godard.

bash$ sar

Linux 2.4.7-10 (localhost.localdomain) 12/31/2001

10:30:01 AM CPU %user %nice %system %idle

10:40:00 AM all 1.39 0.00 0.77 97.84

10:50:00 AM all 76.83 0.00 1.45 21.72

11:00:00 AM all 1.32 0.00 0.69 97.99

11:10:00 AM all 1.17 0.00 0.30 98.53

11:20:00 AM all 0.51 0.00 0.30 99.19

06:30:00 PM all 100.00 0.00 100.01 0.00

Average: all 1.39 0.00 0.66 97.95

readelf

Показывает сведения о заданном бинарном файле формата elf. Входит в состав пакета binutils.

bash$ readelf -h /bin/bash

ELF Header:

Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00

Class: ELF32

Data: 2's complement, little endian

Version: 1 (current)

OS/ABI: UNIX - System V

ABI Version: 0

Type: EXEC (Executable file)

. . .

size

Команда size [/path/to/binary] выведет информацию о размерах различных сегментов в исполняемых или библиотечных файлах. В основном используется программистами.

bash$ size /bin/bash

text data bss dec hex filename

495971 22496 17392 535859 82d33 /bin/bash

Системный журнал

logger

Добавляет в системный журнал (/var/log/messages) сообщение от пользователя. Для добавления сообщения пользователь не должен обладать привилегиями суперпользователя.

logger Experiencing instability in network connection at 23:10, 05/21.

# Теперь попробуйте дать команду 'tail /var/log/messages'.

Встраивая вызов logger в сценарии, вы получаете возможность заносить отладочную информацию в системный журнал /var/log/messages.

logger -t $0 -i Logging at line "$LINENO".

# Ключ "-t" задает тэг записи в журнале.

# Ключ "-i" -- записывает ID процесса.

# tail /var/log/message

# ...

# Jul 7 20:48:58 localhost ./test.sh[1712]: Logging at line 3.

logrotate

Эта утилита производит манипуляции над системным журналом: ротация, сжатие, удаление и/или отправляет его по электронной почте, по мере необходимости. Как правило, утилита logrotate вызывается демоном crond ежедневно.

Добавляя соответствующие строки в /etc/logrotate.conf, можно заставить logrotate обрабатывать не только системный журнал, но и ваш личный.

Управление заданиями

ps

Process Statistics: Список исполняющихся в данный момент процессов. Обычно вызывается с ключами ax, вывод команды может быть обработан командами grep или sed, с целью поиска требуемого процесса (см. Пример 11-10 и Пример 27-1).

bash$ ps ax | grep sendmail

295 ? S 0:00 sendmail: accepting connections on port 25

pstree

Список исполняющихся процессов в виде "дерева". С ключом -p -- вместе с именами процессов отображает их PID.

top

Выводит список наиболее активных процессов. С ключом -b -- отображение ведется в обычном текстовом режиме, что дает возможность анализа вывода от команды внутри сценария.

bash$ top -b

8:30pm up 3 min, 3 users, load average: 0.49, 0.32, 0.13

45 processes: 44 sleeping, 1 running, 0 zombie, 0 stopped

CPU states: 13.6% user, 7.3% system, 0.0% nice, 78.9% idle

Mem: 78396K av, 65468K used, 12928K free, 0K shrd, 2352K buff

Swap: 157208K av, 0K used, 157208K free 37244K cached

PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND

1 ... 49 50 51 52 53 54 55 56 57 ... 96
На этой странице вы можете бесплатно читать книгу Искусство программирования на языке сценариев командной оболочки - Мендель Купер бесплатно.
Похожие на Искусство программирования на языке сценариев командной оболочки - Мендель Купер книги

Оставить комментарий