Я хочу запустить команду, а не закрывать ее при закрытии терминала.
Например, если я бегу top & ; disown
, top
выходит, когда я покидаю Терминал. Я хочу сохранить top
в живых.
Я знаю, что это возможно, так как команда open
могу сделать это. (Например, open -e
открывает TextEdit, и когда вы выходите из терминала, TextEdit остается открытым.)
Заранее спасибо.
top
был просто пример команды. Я бы использовал другую команду, которая ничего не выводит.Ответы:
использование экран :
Чтобы начать сеанс и процесс в рамках выполнения
screen command
(например.screen top
). Отключиться от сеанса с Ctrl Ctrl D ,Теперь вы можете закрыть окно сеанса терминала или вообще выйти из него, и процесс, запущенный ранее, все еще выполняется.
После (пере) запуска Терминала вы можете получить список всех отдельных сеансов с
screen -list
, Используйте pid для повторного присоединения к сеансу:screen -R [pid]
, Чтобы остановить процесс присоединенного сеанса, используйте общие команды (например, Ctrl С заtop
) а такжеexit
остановить сеанс.Если вы хотите запустить процесс в новом, непосредственно отсоединенном сеансе, используйте:
screen -d -m command
(например.screen -d -m top
). Это создаст новый сеанс экрана, пока вы получаете новое приглашение в текущем сеансе оболочки.пожалуйста, проверьте
man screen
для длинного описания, привязок клавиш и настроек.источник
Я думаю, что ключ здесь основан на этом утверждении:
Как только вы выходите из Терминала, он сразу же убивает все, что вы запускали. Это где оконечные мультиплексоры вступают в игру.
Решение этой проблемы заключается в использовании tmux ,
tmux - это «мультиплексор терминала», но одна из лучших особенностей в нем заключается в том, что он продолжает работать, даже если вы закрываете терминал.
От их
man
страница:Итак, если вы хотите запустить
top
Вы можете отсоединиться от него, пока он продолжается в фоновом режиме, даже если терминал завершен.tmux доступен через доморощенного а также MacPorts ,
sudo brew install tmux
sudo port install tmux
Подробную информацию об установке можно найти на соответствующих сайтах.
Что касается использования
tmux
Просто запустите Терминал и выполнитеtmux
, Вы получите экран терминала с зеленой полосой.Выполнить (например)
top
,Выйдите и перезапустите Терминал.
Чтобы получить список сессий:
tmux list-sessions
Прикрепить к этой конкретной сессии
tmux attach -t0
И сессия возвращается.источник
При использовании команды, которую вы хотите продолжить, вы обычно добавляете что-то с эффектом:
Nohup останавливает прием сигналов зависания, а & amp; по сути, работает в фоновом режиме, так что вы можете продолжать делать свое дело
Надеюсь, это поможет!
источник
Некоторые программы запускаются как дочерний процесс в окне терминала, поэтому его закрытие закроет программу. В этом случае запустите такие программы в отдельном процессе соответственно:
Введите полный путь к исполняемому файлу в командной строке (/Applications/Safari.app/Contents/MacOS/safari )
Использовать открыть команда и соответствующий флаг, такой как -a для приложения ( open -a Safari ), который запускает приложения в отдельном процессе (pid). После запуска вы можете просто закрыть окно «Терминал», и приложение останется открытым, в отличие от непосредственного выполнения исполняемых файлов любым способом, который вы сейчас используете.
Команда «osascript», которая является командой терминала OS X для запуска сценариев с «открытой архитектурой сценариев», таких как AppleScript ( osascript -e 'открыть приложение "Safari"' ).
У всех трех есть отдельные средства для выхода из процессов, но они аналогичны каждому из их соответствующих средств для их запуска.
Имейте в виду, что это не единственные три, а самые загадочные команды, доступные вам. Я предоставляю их, потому что считаю, что любой, кто запускает команды в терминале, уже знаком с каждой стандартной командой, доступной в каждом стандартном дистрибутиве UNIX / Linux / FreeBSD, и легко знает, как использовать соответствующие команды для порождения, уничтожения, приостановки, ветвления , возобновлять, присоединять и отключать потоки и процессы, которые являются единственной причиной существования FreeBSD в качестве операционной системы, установленной на компьютерах самой прибыльной компании в мире.
В любом случае, последнее: только текущий пользователь может запускать процессы, используя вышеуказанные команды; запускать процессы с этими командами под другим пользователем, необходимо включить учетную запись супер пользователя ( су ), а затем добавьте к каждой команде префикс Судо ,
источник