Команда Linux для вывода каждого нового PID процесса

Команда Linux для вывода каждого нового PID процесса

Есть ли команда Linux, которая будет следить за новыми процессами?

Моя цель — увидеть, когда gulpвызывается новая команда, выполнить командную строку с помощью чего-то вроде ps, а затем отфильтровать ее с помощью sed.

Важной частью является наблюдение за новыми процессами, поскольку я не могу посмотреть PID после его завершения.

решение1

Вы можете использовать auditdподсистему для регистрации команд, запущенных в вашей системе. Она подключена к ядру, поэтому очень надежно регистрировать все, что выполняется.

Мои примеры приведены для Fedora Linux, вы можете заметить небольшие различия в зависимости от вашего дистрибутива. (Подсистема auditdдовольно сложная, поэтому может быть сложно сделать все правильно.)

Сначала проверьте, что у вас уже установлен и запущен Auditd, выполнив:

$ systemctl status auditd.service

Затем вы можете проверить, какие правила загружены. По умолчанию в Fedora вы получаете:

$ sudo auditctl -l
-a never,task

Поэтому нам нужно удалить этот список «задач» (который подавляет системные вызовы) и добавить тот, который регистрирует «execve» (системный вызов, который выполняет команды).

$ sudo auditctl -d never,task
$ sudo auditctl -a always,exit -F arch=b64 -S execve

После этого все команды будут регистрироваться в системе аудита.

Затем вы можете выполнить поиск, используя ausearchкоманду. Например, чтобы найти все выполнения, которые вызывают "gulp", вы можете использовать:

$ sudo ausearch -c gulp

Вывод будет довольно подробным... Сосредоточьтесь на строке type=EXECVE. Аргументы будут перечислены какa0="gulp" a1="first_argument" a2="second_argument" ...

Если вместо строки в кавычках вы получили длинную последовательность чисел, используйте -iдля ее интерпретации.

Регистрация каждой команды, которая выполняется в вашей системе, может быть очень затратной и занимать много места на диске! Возможно, это также влияет на производительность. Если вы хотите отменить эти изменения, вы можете перезагрузить набор правил по умолчанию с помощью этой команды:

$ sudo augenrules --load

Вы также можете применить фильтр к правилу ведения журнала, например, регистрировать только выполнения /usr/bin/gulp:

$ sudo auditctl -a always,exit -F arch=b64 -F exe=/usr/bin/gulp -S execve

Так что, возможно, это излишество... Но это настолько надежно, насколько это возможно. Надеюсь, вы сможете разобраться в auditdподсистеме, и она даст вам информацию, которую вы ищете!

Связанный контент