Це моє розуміння про використання &
, disown
і nohup
:
<command>
: запускає процес у поточномуbash
екземплярі терміналу на передньому плані (тобто процес вказаний якbash
завдання переднього плану таstdin
,stdout
іstderr
все ще пов'язаний з терміналом ); не застрахований від зависань ;<command> &
: Запускає процес в поточному Терміналі ,bash
наприклад, у фоновому режимі (тобто процес вказано в якостіbash
фонового завдання іstdin
,stdout
іstderr
по - , як і раніше пов'язані з терміналом ); не застрахований від зависань ;<command> & disown
: Запускає процес в поточному Терміналі ,bash
наприклад, у фоновому режимі , але процес від'єднуються відbash
списку «s робочих місць» (тобто процес не вказано в якостіbash
переднього плану / тла роботи іstdin
,stdout
іstderr
по - , як і раніше прив'язані до терміналу ); несприйнятливий до зависань ;nohup <command> & disown
: Запускає процес в поточному Терміналі ,bash
наприклад, у фоновому режимі , але процес від'єднуються відbash
списку «s робочих місць» (тобто процес не вказано в якостіbash
переднього плану / тла роботи іstdin
,stdout
іstderr
які НЕ все ще прив'язані до терміналу ) ; несприйнятливий до зависань ;
Так, крім nohup <command> & disown
блокування stdin
і перенаправлення stdout
і stderr
на nohup.out
за замовчуванням, то мені здається , що це можна вважати повністю еквівалентні <command> & disown
.
Чи все вище правильно? Будь-яке помилкове уявлення?
bash
екземпляра не вб'є процес