Назад | Перейти на главную страницу

команда nohup на Mac

Я подключаюсь к некоторой машине Mac с помощью SSH и запускаю команду, похожую на:

nohup /var/root/install.sh param1 param2 </dev/null >/var/root/vvv.out 2>&1 & echo '' ; echo ERROR_CODE:$?

Кажется, все работает нормально, но если я закрою сеанс в середине установки, сеанс зависнет и будет виден с помощью ps команда.

Кажется, тот же трюк успешно работает на машинах Linux.

Любые идеи?

редактировать: Сведения о среде: 7.9.0 Ядро Дарвина, версия 7.9.0: среда, 30 марта, 20:11:17 PST 2005; корень: xnu / xnu-517.12.7.obj ~ 1 / RELEASE_PPC Power Macintosh powerpc

Может быть, эта версия слишком старая? В соответствии с Википедия Поддерживались блоки питания до августа 2006 г.

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

Думаю, есть разница между "встроенной оболочкой" nohup и программой nohup. Вы также можете, надеюсь, обойти это с помощью ssh -n вместо простого ssh.

Мой macbook уже давно мертвый кирпич, поэтому я только предполагаю. :)

Вы правы, не уверен, что это сработает. Я думаю, это может быть связано с тем фактом, что OS 10 основана на Unix, и они не используют ту же версию nohup или что-то в этом роде. Я не уверен, но я пробовал nohup на SunOS 5.10, и он не работал так же, как на linux.

Это привлекло мое внимание к прекрасной программе под названием screen. Насколько я помню, screen доступен по умолчанию в системах UNIX / Linux.

Используйте [CTRL] - A, затем нажмите D, чтобы выйти за пределы экрана. Используйте screen -r, чтобы возобновить сеанс. Если вы запускаете несколько экземпляров экрана, вы автоматически увидите идентификаторы процесса для каждого экземпляра экрана, и вам нужно будет указать процесс, набрав screen -r # process-id.

Подсказка: вы можете запустить один и тот же экземпляр screen для нескольких учетных записей одновременно, вызвав screen -x. Это полезно для ssh или просто для разных терминалов на одном компьютере. Очень полезно, если у вас есть ноутбук, подключенный к последовательной консоли, и вы не можете взять компьютер с собой. screen может взаимодействовать с последовательными устройствами .. просто попробуйте screen / dev / ttyS0 или другое название устройства!

hf

У вас есть эхо в конце командной строки, но куда должно идти это эхо, если вы закрыли терминал? Куда уходит эхо в Linux? Мне было бы любопытно, что произойдет, если вы удалите эхо в конце и запустите его просто в качестве теста.

Вы можете создать сценарий всего этого и перенаправить вывод на электронную почту или в файл.