Я хочу, чтобы скрипт оболочки был таким:
my-app &
echo $my-app-pid
Но я не знаю, как получить pid только что выполненной команды.
Я знаю, что могу просто использовать jobs -p my-app
команду для grep pid. Но если я хочу выполнить оболочку несколько раз, этот метод не будет работать. Потому что задание на работу неоднозначно.
bash
shell
process
background-process
Дэвид С.
источник
источник
/bin/sh -c 'echo $$>/tmp/my.pid && exec program args' &
- sysfault 24 ноября 2010 г. в 14:28echo $!
my-app & myVar=$! ; fg
,fg
выводит процесс на первый план снова. Затем я могу распечататьecho $myVar
позже, и я почти уверен, что мое приложение уже завершено.Получить
PID
:Сохранить
PID
в переменной:Сохраните все экземпляры
PID
в текстовом файле:Сохранить вывод, ошибки и
PID
в отдельных файлах:источник
my-app
заканчивается, и, возможно, еще хуже, его PID будет повторно использован позже, у вас будет неверная информация в вашем файле. Я не думаю, что этот ответ добавляет большую ценность существующему принятому ответу на самом делеsleep 4 | grep INVALID & export MY_PID=$!; fg; echo $MY_PID returned with $?
`main &
способ получить PID?Попробуйте что-то вроде
источник
Попробуйте что-то вроде этого:
Помещение первой буквы вашего процесса между ними
[
]
гарантирует, что вы не получитеgrep
процесс в своем списке. При необходимости вы также можете добавить grep на свое имя пользователя.источник
my-app
выполняется более одного раза - davidshen84 особенно беспокоится об этом.pgrep
вместо этого.