Чтение онлайн

ЖАНРЫ

Основы программирования в Linux
Шрифт:

NFS_Unstable: 0 kB

Bounce: 0 kB

CommitLimit: 1552748 kB

Committed_AS: 189680 kB

VmallocTotal: 245752 kB

VmallocUsed: 10572 kB

VmallocChunk: 234556 kB

HugePages_Total: 0

HugePages_Free: 0

HugePages_Rsvd: 0

Hugepagesize: 4096 kB

$ cat /proc/version

Linux version 2.6.20.2-2-default (geeko@buildhost) (gcc version 4.1.3 20070218 (prerelease) (SUSE Linux)) #1 SMP Fri Mar 9 21:54:10 UTC 2007

Информация,

выводимая этими файлами, генерируется при каждом чтении файла. Поэтому повторное чтение файла meminfo в более поздний момент времени даст результаты с точностью до секунд.

Получить дополнительную информацию от специальных функций ядра можно в подкаталогах каталога /proc. Например, статистику использования сетевых сокетов вы можете узнать из /proc/net/sockstat:

$ cat /proc/net/sockstat

sockets: used 285

TCP: inuse 4 orphan 0 tw 0 alloc 7 mem 1

UDP: inuse 3

UDPLITE: inuse 0

RAW: inuse 0

FRAG: inuse 0 memory 0

В некоторые элементы каталога /proc можно производить запись, а не только читать их. Например, общее количество файлов, которые могут быть открыты одновременно всеми выполняющимися программами, — это параметр ядра Linux. Текущее значение можно прочитать из /proc/sys/fs/file-max:

$ cat /proc/sys/fs/file-max

76593

В данном случае задана величина

76593
. Если вам нужно увеличить это значение, вы можете сделать это, записав его в тот же файл. Это действие может потребоваться при выполнении специального комплекса программ, например, системы управления базой данных, которая использует много таблиц, что потребует одновременного открытия большого числа файлов.

Примечание

Для записи в файлы /proc требуются права доступа суперпользователя. При записи в эти файлы нужно быть предельно внимательным; при записи неподходящих данных возможно возникновение серьезных проблем, включая крах системы и потерю данных.

Для увеличения предельного значения одновременно обрабатываемых в системе файлов до 80000 вы можете просто записать новое предельное значение в файл file-max.

# echo 80000 >/proc/sys/fs/file-max

Теперь, повторно прочитав файл, вы увидите новое значение:

$ cat /proc/sys/fs/file-max

80000

Подкаталоги каталога /proc с числовыми именами применяются для обеспечения доступа к информации о выполняющихся программах. В главе 11 вы узнаете больше о том, что программы выполняются как процессы.

Сейчас только отметьте, что у каждого процесса есть уникальный идентификатор: число в диапазоне от 1 до почти 32 000. Команда ps предоставляет список выполняющихся в данный момент процессов. Например, когда писалась эта глава:

neil@susel03:~/BLP4e/chapter03> ps -а

PID TTY TIME CMD

 9118 pts/1 00:00:00 ftp

 9230 pts/1 00:00:00 ps

10689 pts/1 00:00:01

bash neil@susel03:~/BLP4e/chapter03>

Вы

видите несколько сеансов терминалов, запустивших командную оболочку bash и сеанс передачи файла, выполняющий программу
ftp
. Просмотрев каталог /proc, вы получите более подробную информацию о сеансе
ftp
.

В данном случае для ftp задан идентификатор процесса

9118
, поэтому вы должны заглянуть в каталог /proc/9118 для получения подробной информации о нем:

$ ls -l /proc/9118

total 0

0 dr-xr-xr-x 2 neil users 0 2007-05-20 07:43 attr

0 -r-------- 1 neil users 0 2007-05-20 07:43 auxv

0 -r--r--r-- 1 neil users 0 2007-05-20 07:35 cmdline

0 -r--r--r-- 1 neil users 0 2007-05-20 07:43 cpuset

0 lrvxrwxrwx 1 neil users 0 2007-05-20 07:43 cwd -> /home/neil/BLP4e/chapter03

0 -r-------- 1 neil users 0 2007-05-20 07:43 environ

0 lrwxrwxrwx 1 neil users 0 2007-05-20 07:43 exe -> /usr/bin/pftp

0 dr-x------ 2 neil users 0 2007-05-20 07:19 fd

0 -rw-r--r-- 1 neil users 0 2007-05-20 07:43 loginuid

0 -r--r--r-- 1 neil users 0 2007-05-20 07:43 maps

0 -rw------- 1 neil users 0 2007-05-20 07:43 mem

0 -r--r--r-- 1 neil users 0 2007-05-20 07:43 mounts

0 -r-------- 1 neil users 0 2007-05-20 07:43 mountstats

0 -rw-r--r-- 1 neil users 0 2007-05-20 07:43 oom_adj

0 -r--r--r-- 1 neil users 0 2007-05-20 07:43 oom_score

0 lrwxrwxrwx 1 neil users 0 2007-05-20 07:43 root -> /

0 -rw------- 1 neil users 0 2007-05-20 07:43 seccomp

0 -r--r--r-- 1 neil users 0 2007-05-20 07:43 smaps

0 -r--r--r-- 1 neil users 0 2007-05-20 07:33 stat

0 -r--r--r-- 1 neil users 0 2007-05-20 07:43 statm

0 -r--r--r-- 1 neil users 0 2007-05-20 07:33 status

0 dr-xr-xr-x 3 neil users 0 2007-05-20 07:43 task

0 -r--r--r-- 1 neil users 0 2007-05-20 07:43 wchan

В данном перечне вы видите разные специальные файлы, способные сообщить вам, что происходит с процессом.

Можно сказать, что выполняется программа /usr/bin/pftp, и ее текущий рабочий каталог — home/neil/BLP4e/chapter03. Есть возможность прочитать другие файлы из этого каталога, чтобы увидеть командную строку, применяемую для запуска программы, а также ее окружение. Файлы cmdline и environ предоставляют эту информацию в виде последовательности нуль-терминированных строк, поэтому вам следует соблюдать осторожность при их просмотре. Более подробно окружение ОС Linux мы обсудим в главе 4.

Поделиться с друзьями: