Nohup не работает с OS X Yosmite - получить ошибку "не может отсоединиться от консоли нет такого файла или каталога"

Я использую nohup для запуска команды из приложения php (у меня есть веб-страница, которая отправляет запрос POST на php-сервер для запуска оболочки script в фоновом режиме).

Это что-то вроде

exec('nohup /home/user/test.sh > /home/user/test.log 2>&1 &')

Это отлично работало, когда я использовал OS X Snow Leopard (OS X 10.6). Однако недавно я обновил свой MAC до OS X Yosemite (OS X 10.10), и теперь он больше не работает.

В test.log я всегда получаю сообщение: nohup can't detach from console: no such file or directory.

Если я просто запускаю ту же самую команду в bash напрямую, она работает нормально. Я много искал, но, похоже, я не могу найти ничего полезного для этой проблемы. Я вижу только обсуждение относительно Дженкинса, похоже, что они также видят аналогичную проблему.

Кто-нибудь знает, почему он начинает терпеть неудачу с Йосемити? Любой вход будет оценен.

Ответ 1

Вы работаете в tmux? У меня просто была эта проблема, начался новый терминал без tmux, и это сработало нормально.

См. эту проблему с tmux, чтобы объяснить, почему это происходит. Это связано с причудой в OS X. https://github.com/tmux/tmux/issues/443

Ответ 2

У меня была аналогичная проблема при запуске команды на mac mini из входа ssh, я получил ошибку:

nohup: не может отсоединиться от консоли: Undefined error: 0

Я исправил проблему, удалив "nohup" и перенаправляя stdin, команда, которая работала и выжила "exit", выглядела так:

my_command < /dev/null > /dev/null 2> error.txt &

Ответ 3

Это сломалось для nohup и экрана с 10.11.6 → 10.12.6. Исправление состоит в том, чтобы включить UsePAM в файле /etc/ssh/sshd _config. Мы выяснили, что после ssh'ing и выполнения su - $USER, nohup будет работать. Затем, пытаясь использовать другие версии sshd и пытаясь получить пароль auth, обнаружил, что параметр UsePAM да исправил проблему (изменение версий sshd не помогло).