Может ли кто-нибудь сказать мне, как получить PID команды, выполняемой в Bash.
Например, у меня есть скрипт bash, который запускает imapsync.
Когда сценарий завершается, процесс imapsync не всегда завершается, поэтому я хотел бы иметь возможность идентифицировать PID imapsync программно из моего сценария, чтобы я мог сам завершить процесс imapsync в обработчике сигналов.
Итак, как мне программно получить PID дочернего процесса из родительского сценария bash?
Ответы:
imapsync имеет возможность установить, где написан его pid:
--pidfile: файл, в который записан pid imapsync.
источник
IOW, как и
$$
ваш PID,$!
имеет PID последней выполненной фоновой команды .источник
/var/run/whatever.pid
. Может быть, есть опция командной строки, чтобы попросить ее сохранить PID где-нибудь; если нет, то это звучит как возможность спросить автора или реализовать себя.&
), тогда$!
переменная не определена./bin/sh -c 'echo $$>/tmp/my.pid && exec program args' &
- sysfault 24 ноября 2010 года в 14:28В отличие от этого
pidof
,pgrep
может быть предоставлено множество опций для ограничения того, для каких процессов он возвращает PID. Один из них, который может быть особенно полезным, - это выбор на основе PPID с использованием PID текущего процесса.который будет выводить только PID imapsync, если они являются дочерними элементами вашего скрипта.
источник
Как насчет того, чтобы на мгновение поставить imapsync на задний план, получить PID и затем установить приоритет ... Что-то вроде этого:
источник