ВОПРОС: Что делает каждый элемент команды:
pkill -INT -f '^php test_program.php$'
делать, когда я запускаю его в терминале Linux? Я уже знаю, что команда убивает процесс под названием test_program.php, но я не знаю, что делают все различные элементы команды. Пожалуйста, объясните в максимально простой терминологии! Я новичок в командах Linux, и я предпочитаю Baby Lingo техническому Lingo в настоящее время 🙂
МОЕ ИССЛЕДОВАНИЕ: Запустив man pkill
в терминале linux появляется руководство со следующим pkill
определение:
что заставляет меня верить, что pkill
не только убивает процесс, но и может посылать много разных сигналов, один из которых может убить процесс. Структура / краткий обзор pkill
Команда отображалась как: pkill [option] pattern
Из списка опций в том же руководстве, -f, -full
имел следующее определение:
Я не совсем понял, что это значит. Также есть -INT
перед -f
в команде, так что это наводит меня на мысль, что несколько вариантов могут быть объединены вместе, однако -INT
не был отображен в руководстве.
Другие части команды, кажется, идентифицируют программу, которая выполняется: '^php test_program.php$'
но почему эта часть команды не 'test_program.php'
? Что значит ^php
в начале и $
а конец делать?
Вы смотрите на регулярное выражение. Это выражение ищет строку test_program.php
где-нибудь в имени процесса. Так что, если имя процесса будет что-то вроде
/var/php -runcommand test_program.php
он найдет процесс и убьет его.
Это также объясняет -f, -full
вариант. Если вы не используете регулярное выражение, вам потребуется полное имя процесса (предыдущая строка), чтобы соответствовать процессу.
Наконец, -INT
обычно используется для отправки уровня выполнения задачи.
РЕДАКТИРОВАТЬ
Я был неправ -INT
опция не используется для уровней запуска (которые для ядра Linux), но для отправки сигналы к задаче. Это может быть что-то вроде Term
(Прервать), Stop
(выключить) или Cont
(продолжить процесс). pkill
по умолчанию отправляет сигнал завершения в процесс.
/var/php -runcommand test_program.php
был примером для процесса. Если вы используете команду ps ax
, вы получаете список всех процессов и программ, которые их выполняют. Так что я просто предположил, что интерпретатор PHP находится в /var/php/
и выполнение файла php является командой.
Других решений пока нет …