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

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

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

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

3 Solutions collect form web for “Получить статус выхода процесса через SSH”

Используйте 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 } 
  • scp без замены существующих файлов в месте назначения
  • pam sshd: запустить с правами root, но получить ip-адрес пользователя
  • Как отключить графическую подсказку пароля из SSH?
  • Пусть передача выполняется на сервере, независимо от сеанса SSH
  • Совместимы ли ключи от Dropbear и OpenSSH?
  • Внедрение TLS 1.2, когда я SSH в коробку в качестве меры против POODLE
  • Ищете эффективную альтернативу ssh-copy-id, которая терпит неудачу, если у вас нет частной части ключа?
  • Ошибка ssh-keygen -y: ошибка загрузки
  • Ошибка rsync: необъяснимая ошибка (код 255) в io.c (226)
  • Как ограничить доступ ssh только для локального хоста?
  • Почему SSH не запрашивает / etc / hosts?
  • Linux и Unix - лучшая ОС в мире.