nohup командасы: терминалдан шыққан кезде де процесті тоқтатпау үшін қолданылады. SIGHUP сигналын қабылдамайды, нәтижесі файлға сақталады. disown опциясы да бар.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
POSIX (компьютерлік) командасы nohup – POSIX командасы, «аяқтамау» дегенді білдіреді. Оның мақсаты – HUP (hangup) сигналын қабылдамайтын команданы іске қосу, соның арқасында пайдаланушы жүйеден шыққанда команда тоқтатылмайды. Әдетте терминалға шығарылатын мәліметтер, егер бұрын бағытталмаған болса, деп аталатын файлға жазылады.
POSIX (computer) command
nohup is a POSIX command which means "no hang up". Its purpose is to execute a command such that it ignores the HUP (hangup) signal and therefore does not stop when the user logs out. Output that would normally go to the terminal goes to a file called , if it has not already been redirected.
Қолданылу
Кейбір қабықшалар (мысалы, 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 операциялық жүйесіне де көшірілген.
Some shells (e. g. bash) provide a shell builtin that may be used to prevent SIGHUP being sent or propagated to existing jobs, even if they were not started with nohup. In bash, this can be obtained by using disown h job; using the same builtin without arguments removes the job from the job table, which also implies that the job will not receive the signal. Before using disown on an active job, it should be stopped by Ctrl Z, and continued in the background by the bg command. Another relevant bash option is shopt huponexit, which automatically sends the HUP signal to jobs when the shell is exiting normally. The AIX and Solaris versions of nohup have a p option that modifies a running process to ignore future SIGHUP signals. Unlike the above described disown builtin of bash, nohup p accepts process IDs. The command has also been ported to the IBM i operating system.
Аспаптан шығу
Nohupping арқасында фондық режимде іске қосылған тапсырмалардың SSH сеансынан шыққанда тоқтатылмауын қамтамасыз етуге болады. Мұндай жағдайда жиі туындайтын тағы бір мәселе – ssh сеансынан шығу қиындап, тоқтап қалуы мүмкін ("ілініп қалу"), себебі ол фондық тапсырмалардан/тапсырмаларға берілген деректерді жоғалтуға келіспейді. Бұл мәселені барлық үш кіріс-шығыс ағынын қайта бағыттау арқылы шешуге болады: $ nohup ./myprogram > foo.out 2> foo.err < /dev/null & Сондай-ақ, SSH сеансын жабу әрқашан тәуелді процестерге HUP сигналын жібермейді, мысалы, псевдотерминал бөлінбеген жағдайда.
Note that nohupping backgrounded jobs is typically used to avoid terminating them when logging off from a remote SSH session. A different issue that often arises in this situation is that ssh is refusing to log off ("hangs"), since it refuses to lose any data from/to the background job(s). This problem can also be overcome by redirecting all three I/O streams:
$ nohup ./myprogram > foo. out 2> foo. err < /dev/null &
Also note that a closing SSH session does not always send a HUP signal to dependent processes, such as when a pseudo terminal has not been allocated.
Баламалар
Терминал мультиплексісі команданы ағымдағы терминалдан бөлінген жеке сеанста іске қоса алады, яғни егер ағымдағы сеанс аяқталса, бөлінген сеанс және оған байланысты процестер жұмысын жалғастыра береді. Кейіннен сол сеансқа қайта қосылуға болады. Мысалы, screen командасын былай шақыру somescript.sh скриптін бөлінген сеанстың фонында іске қосады:
$ screen -A -m -d -S somename ./somescript.sh &
disown командасы жұмыстарды жұмыс тізімінен жою үшін немесе сеанс аяқталғанда SIGHUP сигналы жіберілмеуі үшін жұмыстарды белгілеу үшін қолданылады.
A terminal multiplexer can run a command in a separate session, detached from the current terminal, which means that if the current session ends, the detached session and its associated processes keeps running. One can then reattach to the session later on. For example, the following invocation of screen will run somescript. sh in the background of a detached session:
$ screen A m d S somename ./somescript. sh &
The disown command is used to remove jobs from the job table, or to mark jobs so that a SIGHUP signal is not sent on session termination.