Решение может заключаться в установить разрешения независимо от бинарного файла. В зависимости от контекста и требований вы можете либо создать задание cron, вызывающее сценарий, перенести вызов в двоичный файл вместе с последующим кодом очистки в сценарий, либо реализовать что-то более сложное, используя интерфейс inotify (7) .
Это не будет иметь реального значения, в том смысле, что если вы запустите screen
(или tmux
) и отключитесь, то вашему приложению будет послан сигнал NOHUP, независимо от того, запускаете вы его с nohup или нет.
Я предлагаю вам попробовать, используя screen
/tmux
и просто запустить программу без nohup
. Затем быстро отключитесь, войдите в систему и снова подключитесь к предыдущей сессии. Вы увидите, что ваша сессия просто продолжает работать, и что вы можете видеть ее вывод (прокрутка назад в буфере требует некоторых специальных команд), и что вы можете (вероятно) прервать запущенную программу, нажав Ctrl+C, по существу, как если бы вы никогда не отсоединялись.
Таким образом, если ваша исходная программа каким-то образом неожиданно завершается и, надеюсь, пишет в nohup.out
, что является причиной, теперь этот вывод идет в screen
буфер сессии. Но если он ничего не выводит при использовании nohup
, вы не получите больше информации при запуске внутри screen
. Завершается не nohup
, а ваша программа, несмотря на выполнение "под" nohup
.