Intereting Posts
Testprintenv: ошибка при загрузке разделяемых библиотек: libodbc.so.1: невозможно открыть файл общих объектов Проблемы с размером шрифта с Emacs в режиме linum Fedora или OpenSuse? который принимает меня к философии семьи redhat / centos Sudo – поиск DNS (tcpdump) Назначить статический IP-адрес для принтера, подключенного к RJ45 fetchmail без mda Можно ли загружать чрезвычайно большие файлы разумно или по частям через SSH от Linux до Windows? Ошибка получения строки между двумя шаблонами заставить scp вести себя так, как предполагается (удаленная программа копирования файлов) Интерфейс не работает с интерфейсом ip link set up Можем ли мы использовать файл истории для целей аудита Как отформатировать диск без потери grub? Как пользователь, не являющийся пользователем, я могу удалить файл, созданный root, с разрешениями 0444? Удаленный запуск ssh – проблемы как использовать строки в файле в качестве переменной

Отключить не потребуется -h

Я запускаю команду, которую я теперь понимаю, я бы хотел уйти от работы после закрытия сеанса SSH. Я не начал его с аргументом & , но я положил его в фоновом режиме ( CTRLz , bg ). Теперь я пытаюсь заставить его продолжать работу после того, как я отключусь. Это то, за что disown -h , верно? Я пробовал disown -h и disown -h 1 ( jobs показывают мою работу как # 1), и я получаю

 disown: job not found: -h 

Почему disown принятия «-h» как задания, а не аргумента? Я в zsh , если это имеет значение.

bash , zsh и ksh93 – это оболочки, которые имеют команду ksh93 . Из трех, bash – единственный, который поддерживает опцию h . Без -h он вызывает поведение zsh (удаляет из таблицы заданий), тогда как с -h он эмулирует поведение ksh93 (не будет отправлять SIGHUP при выходе, но не удаляет его из таблицы заданий, так что вы все равно можете bg или fg или убить его).

Вы можете подражать этому поведению с помощью zsh:

 typeset -A nohup trap 'disown %${(k)^nohup}' EXIT trap 'for i (${(k)nohup}) (($+jobstate[i])) || unset "nohup[$i]"' CHLD 

Таким образом, ассоциативный массив nohup содержит список заданий, которые не должны отправляться SIGHUP при выходе. Итак, вместо disown -h %1 вы должны написать nohup[1]= .

См. Также setopt nohup чтобы не отправлять SIGHUP в любое задание после выхода.

отключение самостоятельно достаточно, чтобы программа продолжала работать после отключения:

 $ command_running_forever ^Z zsh: suspended command_running_forever $ bg [1] + continued command_running_forever $ jobs [1] + running command_running_forever $ disown %1 $ logout 

disown -h использует аргумент bash, который заставляет задание оставаться в таблице заданий и не получает SIGHUP, когда bash получает SIGHUP (согласно help disown bash). Этот аргумент недоступен с zsh.