Почему nohup не работает над конкретным процессом

Простой -простой ответ, который является вариацией версии ОП. Иногда вам просто нужно что-то легкое для ввода или запоминания:

find. | xargs file | grep -i "broken symbolic link"

Или, если вам нужно обработать терминаторы NULL:

find. -print0 | xargs -0 file | grep -i "broken symbolic link"
2
10.02.2020, 22:43
2 ответа

Конкретной причиной того, что этот процесс не пережил вход/выход из системы во время работы под nohup, было то, что он использовал Motif. Несмотря на то, что в нашей среде для этого процесса графический интерфейс не вызывался/не реализовывался, код в конечном итоге использовал XtAppMainLoop в своем основном()(c-коде ). Возможно, библиотеки Motif что-то делают с файлом SIGNALS.

Дополнительные причины, предложенные в других ответах/комментариях:

Процесс явно перехватывает/сбрасывает SIGHUP

В процессе используется tty-устройство (s)

0
28.04.2021, 23:23

Если код процесса _явно перехватывает SIGHUP (, сигнал зависания )или сбрасывает его на обработчик по умолчанию (, т. е. none; т. е. выход ), это объяснило бы поведение, которое вы видите. Попросите разработчиков найти код SIGHUPи посмотреть, что он делает.

Возможно, вы сможете лучше диагностировать это. если вы можете запустить straceв программе, но, поскольку у вас "достаточно ограничительная среда", strace, вероятно, недоступен. Возможно, вы сможете быстрее тестировать и создавать более действенные аналитические материалы. если вы

  1. Запустить процесс (nohup process_a &),
  2. обратите внимание на сообщаемый PID,
  3. подождите несколько секунд или минут,
  4. убедиться, что процесс выполняется с известным PID (, например, с ps),
  5. сделать kill -HUP PID,
  6. перепроверьте процесс и, возможно,
  7. подождите несколько секунд или минут и снова проверьте процесс.
2
28.04.2021, 23:23

Теги

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