Как получить статус выхода процесса от другой сессии оболочки?

Предположим, что я выполняю команду на одной сессии оболочки, например bash -c 'apt-get update && apt-get upgrade'. 5 минут спустя я решаю выйти на улицу для закуски и понять, что я забыл добавлять некоторую форму механизма уведомления для того, был ли выход успешностью или неуспешностью.

Ну, что делает меня теперь? Если только я мог бы запросить от другого терминала статус выхода той другой команды (или а именно, что PID), возможно, я мог после все отобразить своего рода всплывающее окно. Таким образом, вопрос: как я могу запросить статус выхода уже рабочего процесса от другого терминала?

Другими словами,

Учитывая, что у меня есть рабочий процесс в терминале A, И его PID известен

КОГДА я выполняю некоторую команду в терминале B

ЗАТЕМ я должен смочь знать если процесс в терминале концы со статусом выхода 0 или статусом выхода> 1.

8
задан 3 September 2018 в 18:56

1 ответ

Использовать strace следующим образом:

sudo strace -e trace=none -e signal=none -q -p $PID

Ни системные вызовы, ни сигналы не представляют интереса здесь, таким образом, мы говорим strace проигнорировать их с -e выражения и подавляют сообщение о состоянии с -q. strace присоединения к процессу с PID $PID, ожидает его для выхода обычно и производит его статус выхода как это:

+++ exited with 0 +++

Простое if выражение для вызова любого типа уведомления могло быть:

if sudo strace -e trace=none -e signal=none -q -p $PID |& grep -q ' 0 '; then
  echo yeah
else
  echo nope
fi

Пример выполняется

# in terminal 1
$ (echo $BASHPID;sleep 10;true)
8807
# in terminal 2
$ if sudo strace -e{trace,signal}=none -qp8807|&grep -q ' 0 ';then echo yeah;else echo nope;fi
yeah

# in terminal 1
$ (echo $BASHPID;sleep 10;false)
12285
# in terminal 2
$ if sudo strace -e{trace,signal}=none -qp12285|&grep -q ' 0 ';then echo yeah;else echo nope;fi
nope

Большая часть кредита переходит к этому ответу на U&L, оставьте upvote там при нахождении этого полезным.

8
ответ дан 23 November 2019 в 05:43

Другие вопросы по тегам:

Похожие вопросы: