Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
-r--r--r-- 1 root root 0 Apr 13 21:59 mounts
lrwxrwxrwx 1 root root 0 Apr 13 21:59 root -> //
-r--r--r-- 1 root root 0 Apr 13 21:59 stat
-r--r--r-- 1 root root 0 Apr 13 21:59 statm
-r--r--r-- 1 root root 0 Apr 13 21:59 status
n cmdline – список аргументов процесса;
n cwd – символическая ссылка на текущий рабочий каталог процесса;
n environ – переменные среды процесса;
n exe – символическая ссылка на исполняемый файл процесса;
n fd – подкаталог, содержащий ссылки на файлы, открытые процессом;
n maps – адресное пространство, выделенное процессу;
n root – символическая ссылка на корневой каталог процесса;
n mounts – информация о точках монтирования и типах файловых систем;
n status – статистическая информация о процессе (имя процесса, идентификационный номер, состояние процесса, идентификатор владельца, группы, статистика использования памяти и т. д.).
Таким образом, при помощи /proc можно получить исчерпывающую информацию об интересующем процессе, используя имеющийся в нашем распоряжении инструментарий – команды shell либо средства языка программирования.
Представление процессов в ядре
Совокупность процессов в ядре Linux представляет собой кольцевой двусвязный список структур struct task_struct. Структура struct task_struct определена в файле <linux/sched.h> и содержит полную информацию о выполняемом процессе. Для нас интерес представляют следующие поля этой структуры:
volatile long state
Статус выполняемого процесса. Может принимать следующие значения:
n TASK_RUNNING – процесс находится в очереди запущенных на выполнение задач;
n TASK_INTERRUPTIBLE – процесс в состоянии «сна», но может быть «разбужен» по сигналу или по истечении таймера;
n TASK_UNINTERRUPTIBLE – состояние процесса схоже с TASK_INTERRUPTIBLE, только он не может быть разбужен;
n TASK_ZOMBIE – процесс-«зомби». Процесс завершил свою работу до того, как родительский процесс выполнил системный вызов wait;
n TASK_STOPPED – выполнение процесса остановлено.
Все эти значения определены в файле <linux/sched.h>:
#define TASK_RUNNING 0
#define TASK_INTERRUPTIBLE 1
#define TASK_UNINTERRUPTIBLE 2
#define TASK_ZOMBIE 4
#define TASK_STOPPED 8
struct mm_struct *mm, struct mm_struct *active_mm
Указатели на адресное пространство, выделенное процессу. В состав структуры struct mm_struct входит структура struct vm_area_struct * mmap, в которой находятся данные об областях памяти, выделенных процессу. Два поля этой структуры, vm_start и vm_end, содержат адреса памяти, которую использует процесс. Детальное рассмотрение структуры struct vm_area_struct выходит за рамки данной статьи, для дальнейшей работы нам достаточно и этой информации.
pid_t pid
Идентификационный номер процесса.
uid_t uid, euid, suid, fsuid
Идентификаторы владельца процесса.
gid_t gid, egid, sgid, fsgid
Идентификаторы группы, к которой принадлежит данный процесс.
char comm[16]
Символьное имя процесса.
struct fs_struct *fs
Информация о файловой системе. Сама структура struct fs_struct определена в файле <linux/fs_struct.h>. Вот как она выглядит:
struct fs_struct {