1

Я выполняю скрипт bash через cron. Я хочу записать идентификатор процесса (PID) сценария в файл /tmp/ для справки, на случай, если позже мне потребуется его уничтожить (выполнение этого сценария может занять 6-10 часов).

Можно ли сделать что-то вроде этого:

#!/bin/sh

echo ${PID} > /tmp/backup_pid
...
rest of the script

Каждый раз, когда скрипт выполняет tar или rsync , они запускаются как независимые процессы, поэтому мне нужна эта функция PID.

Этот ответ (https://superuser.com/a/238533/314696) предлагает использовать eval но я учил , что eval является эв я л. Благодарю.

2 ответа2

3

Переменная оболочки $$ содержит PID текущего запущенного скрипта. Вы можете использовать это так:

echo $$ >/tmp/backup_pid
1

Если вы хотите получить PID:

    pgrep Process                ###Write process name instead of "Process"###

Если вы хотите получить PID и завершить процесс из терминала GNOME:

    pid=$(pgrep Process) && kill -9 $pid

Если вы хотите завершить задачу сценариями оболочки:

    pdi=$pgrep Process)
    kill -9 $pid

Или напишите PID в файл:

    pgrep Process > FileName.Format

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .