Как получить идентификатор процесса (PID) Bash сценария

Bash logo Scripts

При выполнении сценария оболочки запускается процесс, называемый подоболочкой. Являясь дочерним процессом основной оболочки, подоболочка выполняет список команд сценария оболочки в пакетном режиме (так называемая "пакетная обработка").

В некоторых случаях необходимо знать идентификатор процесса (PID) под-оболочки, в которой запущен сценарий. Эта информация о PID может быть использована при различных обстоятельствах. Например, можно создать уникальный временный файл в каталоге /tmp, назвав его PID сценария оболочки. В случае если сценарию необходимо просмотреть все запущенные процессы, он может исключить из списка процессов свою собственную оболочку.

В bash PID подпроцесса сценария оболочки хранится в специальной переменной $$. Эта переменная доступна только для чтения, и изменить ее в сценарии оболочки нельзя. Например:

Приведенный выше сценарий покажет следующий результат.

Как получить идентификатор процесса (PID) Bash сценария

Кроме $$, оболочка bash экспортирует еще несколько переменных, доступных только для чтения. Например, PPID хранит идентификатор процесса родительского процесса подоболочки (т.е. основной оболочки). UID хранит идентификатор пользователя, выполняющего скрипт. Например:

Его вывод будет следующим:

получить идентификатор процесса (PID) Bash сценария

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

идентификатор процесса (PID) Bash сценария

Полный список встроенных переменных bash приведен на его man-странице.

Avatar for Gnostis
Gnostis
Добавить комментарий