Кіріспе

POSIX (компьютерлік) командасы nohup – POSIX командасы, «аяқтамау» дегенді білдіреді. Оның мақсаты – HUP (hangup) сигналын қабылдамайтын команданы іске қосу, соның арқасында пайдаланушы жүйеден шыққанда команда тоқтатылмайды. Әдетте терминалға шығарылатын мәліметтер, егер бұрын бағытталмаған болса, деп аталатын файлға жазылады.

Қолданылу

Кейбір қабықшалар (мысалы, bash) SIGHUP сигналын қолданыстағы тапсырмаларға жіберуді немесе таратуды болдырмау үшін пайдаланылатын қабықша құралын ұсынады, тіпті олар nohup арқылы іске қосылмаса да. Bash-та, бұл disown h job командасын қолдану арқылы қол жеткізіледі; аргументтерсіз қолданылғанда, тапсырма жұмыс тізімінен алынып тасталады, бұл тапсырманың сигналдарды алмайтынын білдіреді. Disown командасын белсенді тапсырмаға қолданбас бұрын, оны Ctrl+Z арқылы тоқтату керек, содан кейін bg командасымен фондық режимде жалғастыру керек. Bash-тың тағы бір маңызды опциясы – shopt huponexit, ол қабықша қалыпты түрде аяқталғанда тапсырмаларға HUP сигналын автоматты түрде жібереді. AIX және Solaris нұсқаларындағы nohup командасы болашақ SIGHUP сигналдарын елемеу үшін жұмыс істеп тұрған процесті өзгертетін p опциясын ұсынады. Bash-тың жоғарыда сипатталған disown құралынан айырмашылығы, nohup p процестің идентификаторларын қабылдайды. Бұл команда IBM i операциялық жүйесіне де көшірілген.

Аспаптан шығу

Nohupping арқасында фондық режимде іске қосылған тапсырмалардың SSH сеансынан шыққанда тоқтатылмауын қамтамасыз етуге болады. Мұндай жағдайда жиі туындайтын тағы бір мәселе – ssh сеансынан шығу қиындап, тоқтап қалуы мүмкін ("ілініп қалу"), себебі ол фондық тапсырмалардан/тапсырмаларға берілген деректерді жоғалтуға келіспейді. Бұл мәселені барлық үш кіріс-шығыс ағынын қайта бағыттау арқылы шешуге болады: $ nohup ./myprogram > foo.out 2> foo.err < /dev/null & Сондай-ақ, SSH сеансын жабу әрқашан тәуелді процестерге HUP сигналын жібермейді, мысалы, псевдотерминал бөлінбеген жағдайда.

Баламалар

Терминал мультиплексісі команданы ағымдағы терминалдан бөлінген жеке сеанста іске қоса алады, яғни егер ағымдағы сеанс аяқталса, бөлінген сеанс және оған байланысты процестер жұмысын жалғастыра береді. Кейіннен сол сеансқа қайта қосылуға болады. Мысалы, screen командасын былай шақыру somescript.sh скриптін бөлінген сеанстың фонында іске қосады:
$ screen -A -m -d -S somename ./somescript.sh &
disown командасы жұмыстарды жұмыс тізімінен жою үшін немесе сеанс аяқталғанда SIGHUP сигналы жіберілмеуі үшін жұмыстарды белгілеу үшін қолданылады.