Я прочитав відповідь від користувача, який стверджував, що працює
foo 2>&1 >& output.log &
це призведе до foo
продовження роботи навіть під час виходу з системи. За словами цього користувача, це навіть працювало над SSH-з'єднаннями.
Я не дуже вірив у це, оскільки був у мене під враженням, що у випадку відключення від SSH або припинення TTY, оболонка і, отже, її процеси отримають SIGHUP, внаслідок чого вони припиняються. Це, на мій припущення, було єдиною причиною використання nohup
в таких випадках, або tmux
, screen
та ін.
Потім я заглянув у керівництво glibc :
Цей сигнал також використовується для повідомлення про припинення керуючого процесу в терміналі для завдань, пов'язаних з цим сеансом; це припинення ефективно відключає всі процеси в сеансі від керуючого терміналу.
Це ніби підтверджує мої думки. Але дивлячись далі, воно говорить :
Якщо процес є лідером сеансу, який має керуючий термінал, то сигнал SIGHUP надсилається кожному процесу на передньому плані, а керуючий термінал відключається від цього сеансу.
Отже, чи означає це, що робочі місця, викладені у фоновому режимі, не отримають SIGHUP?
На мій подальший плутанина, я запустив інтерактивну сесію Zsh, запустив yes >& /dev/null &
і набрав текст exit
, коли Zsh попередив мене, що я exit
працюю , і після друку вдруге сказав мені, що ВИДАЛИ одну роботу. Виконувати точно так само в Bash залишає роботу запущеною ...
logout
іyes
все ще працює.