LINUX.ORG.RU
решено ФорумAdmin

pid процесса

 ,


0

1

Приветствую Вас форумчане. Прошу помощи. Не пинайте. С линухом пока знаком не очень хорошо. Итак. При запуске ОС (ubuntu 16.04) нужно считать pid определенного процесса. Как только pid процесса изменится выполнить команду poweroff. Собственно вся задача. Можно попробовать цыклом в скрипте. Но мне кажется есть способ элегантнее. Заранее благодарю всех кто откликнется!

Ответ на: комментарий от i-rinat

Спасибо за помощь! Но, предложенная команда выключает комп. Независимо от того в скрипте ее запускать или самостоятельно. PID при этом не меняется. Может в ней ошибка?

rostma ()
Ответ на: комментарий от LINUX-ORG-RU

В моем случае отслеживать нужно как раз перезапуск процесса. Имя процесса то будит одинаковым. А вот pid после перезапуска меняется. Я умнее ничего не придумал кроме как сравнивать pid при запуске и если он изменился считать процесс перезапущеным. И выполнять команду poweroff. Вообще нужно при перезапуске процесса xfreerdp выполнять poweroff. Может я зря вцепился в отслеживание pid?

rostma ()
Ответ на: комментарий от rostma

Смена пида == перезапуск процесса. Тебе достаточно просто узнать что процесс умер и можно вырубать. Если надо именно сохранить пид, потом в цикле получать текущий и сравнивать с первоначальным то делай сам ибо тогда скорее всего это задачка от препода :D

  • ты уже знаешь как делать цикл
  • ты уже знаешь как получить сохранить пид
  • ты уже знаешь как сравнить пиды

Осталось потратить минут 5-10-15 на раздумья как это всё склеить. =) Удачи.

LINUX-ORG-RU ★★ ()
Ответ на: комментарий от rostma

Вообще нужно при перезапуске процесса xfreerdp выполнять poweroff.

Если xfreerdp не демонизируется, то достаточно вместо него положить скрипт, который будет запускать настоящий бинарник xfreerdp, а потом poweroff. Тогда как только xfreerdp завершится, будет выполнена следующая команда в скрипте, то есть poweroff. Если демонизируется, нужно смотреть в сторону системы управления сервисами. Возможно, там есть параметры, куда можно вписать команды на случай завершения процесса.

i-rinat ★★★★★ ()

То, что ты хочешь сделать, можно реализовать скриптом, так как:
PID процесса не изменяется. Процесс может порождать дочерний, может завершиться, может быть создан процесс с таким же именем и другим PID'ом.

IPR ★★★★★ ()
Ответ на: комментарий от rostma

Всем спасибо за помощь. Получилось так как посоветовали в первом ответе через скрипт.

pid=`pidof xfreerdp`
strace -e shutdown -p $pid 2>/dev/null; poweroff

И да, не работало из за отсутствия пакета strace в системе. Еще раз огромное спасибо!

rostma ()