Я прочитав відповідь від користувача, який стверджував, що працює
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все ще працює.