Получить статус выхода процесса через SSH

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

  1. SSH для сервера
  2. запустите что-нибудь там и оставьте его в фоновом режиме (например, команда bg)
  3. выйдите из SSH и вернитесь позже

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

Используйте screen или tmux чтобы ваш интерактивный сеанс сохранялся после того, как вы отключились.

Для screen вы можете отключить сеанс с помощью Ctrl a, а затем d . Вы увидите сообщение типа

 [detached from 12345.pts-9.hostname] 

Затем вы можете безопасно отключиться. Когда вы снова подключитесь, screen -r вернет вас туда, где вы были.

Для tmux используйте Ctrl b, затем d для отсоединения, и tmux attach для повторного tmux attach .

используйте команду # screen для фонового процесса, вы можете легко проверить фоновый процесс на экране, чтобы получить дополнительную информацию на этом сайте -> http://www.tecmint.com/screen-command-examples-to-manage-linux-terminals/

Один из способов – просто перенаправить вывод программы в файл. В оболочке bash вы можете сделать это:

 { myprog; echo "Exit status: $?"; } </dev/null &>output_file & disown 

Обратите внимание: если вы собираетесь выйти из сеанса ssh , вам нужно убедиться, что вы отключите процесс от терминала, перенаправив все, как указано выше.

Если вы хотите избежать повторного входа в систему, чтобы проверить вывод команды, один из вариантов – предоставить серверу адрес электронной почты для вас (при условии, что он правильно настроен для этого). Создание функции в вашем .bashrc на сервере может быть проще, если вам придется повторять это часто:

 run_and_email () { { { "$@" echo "Exit status: $?" } 2>&1 | mail -s "$1 output" you@example.com } </dev/null &>/dev/null & disown }