Android

Paano magpatakbo ng mga linux utos sa background

nohup - Run Commands in the Background - Linux CLI

nohup - Run Commands in the Background - Linux CLI

Talaan ng mga Nilalaman:

Anonim

Karaniwan kapag nagpatakbo ka ng isang utos sa terminal, kailangan mong maghintay hanggang matapos ang utos bago ka makapasok sa isa pa. Ito ay tinatawag na pagpapatakbo ng utos sa proseso ng foreground o foreground. Kapag ang isang proseso ay tumatakbo sa harapan, sinasakop nito ang iyong shell, at maaari kang makipag-ugnay sa ito gamit ang mga aparato ng input.

Paano kung ang utos ay tumatagal ng mahabang oras upang matapos, at nais mong magpatakbo ng iba pang mga utos? Mayroon kang maraming mga pagpipilian sa iyong pagtatapon. Ang pinaka-halata at prangka na pagpipilian ay upang magsimula ng isang bagong session ng shell at patakbuhin ang utos sa loob nito. Ang isa pang pagpipilian ay upang patakbuhin ang utos sa background.

Ang isang proseso ng background ay isang proseso / utos na nagsimula mula sa isang terminal at tumatakbo sa background, nang walang pakikipag-ugnay mula sa gumagamit., pag-uusapan natin ang tungkol sa mga proseso ng background ay Linux. Ipapakita namin sa iyo kung paano simulan ang isang utos sa background at kung paano mapanatili ang proseso na tumatakbo pagkatapos na sarado ang session ng shell.

Patakbuhin ang isang Linux Command sa Background

Upang magpatakbo ng isang utos sa background, idagdag ang simbolo ng ampersand ( & ) sa dulo ng utos:

command &

Ang ID ng job job (napapaligiran ng mga bracket) at proseso ng ID ay mai-print sa terminal:

25177

Maaari kang magkaroon ng maraming mga proseso na tumatakbo sa background nang sabay.

Ang proseso ng background ay magpapatuloy na magsulat ng mga mensahe sa terminal kung saan mo hinango ang utos. Upang sugpuin ang mga mensahe ng stdout at stderr gamitin ang sumusunod na syntax:

command > /dev/null 2>&1 &

>/dev/null 2>&1 nangangahulugang pag-redirect ng stdout sa /dev/null at stderr sa stdout .

Gamitin ang utility ng jobs upang maipakita ang katayuan ng lahat ng tumigil at mga trabaho sa background sa kasalukuyang session ng shell:

jobs -l

Kasama sa output ang bilang ng trabaho, proseso ng ID, estado ng trabaho, at utos na nagsimula ng trabaho:

+ 25177 Running ping google.com &

Upang magdala ng isang background na proseso sa harapan, gamitin ang fg utos:

fg

fg %1

Upang wakasan ang proseso ng background, gamitin ang utos ng kill sinusundan ng proseso ng ID:

kill -9 25177

Ilipat ang Proseso ng Paunang Balita sa Background

Upang ilipat ang isang proseso ng pagtatakbo sa background:

  1. Patigilin ang proseso sa pamamagitan ng pag-type ng Ctrl+Z .Paghihinto ang hinto na proseso sa background sa pamamagitan ng pag-type ng bg .

Panatilihin ang Mga Proseso sa background na Tumatakbo Pagkatapos ng isang Paglabas ng Shell

Kung bumaba ang iyong koneksyon o nag-log out sa session ng shell, natapos ang mga proseso ng background. Mayroong maraming mga paraan upang mapanatili ang proseso na tumatakbo matapos ang interactive na session ng shell.

Ang isang paraan ay ang pagtanggal ng trabaho mula sa control ng trabaho ng shell gamit ang disown shell builtin:

disown

disown %1

Kinumpirma na ang trabaho ay tinanggal mula sa talahanayan ng mga aktibong trabaho gamit ang utos ng jobs -l . Upang ilista ang lahat ng mga proseso ng pagpapatakbo, kabilang ang hindi tinanggihan gumamit ng utos ng ps aux .

Ang isa pang paraan upang mapanatili ang isang proseso na tumatakbo pagkatapos ng exit ng shell ay ang paggamit ng nohup .

Ang utos ng nohup nagsasagawa ng isa pang programa na tinukoy bilang argumento at hindi pinapansin ang lahat ng SIGHUP (hangup) signal. SIGHUP ay isang senyas na ipinapadala sa isang proseso kapag ang control ng terminal ay sarado.

Upang magpatakbo ng isang utos sa background gamit ang command na nohup , i-type ang:

nohup command &

Ang command output ay nai-redirect sa nohup.out file.

nohup: ignoring input and appending output to 'nohup.out'

Mga alternatibo

Mayroong isang bilang ng mga programa na nagbibigay-daan sa iyo upang magkaroon ng maraming mga interactive na sesyon nang sabay-sabay.

Screen

Ang Screen o GNU Screen ay isang terminal na multiplexer program na nagbibigay-daan sa iyo upang magsimula ng session ng screen at buksan ang anumang bilang ng mga windows (virtual na mga terminal) sa session na iyon. Ang mga proseso na tumatakbo sa Screen ay patuloy na tatakbo kapag ang kanilang window ay hindi nakikita kahit na naka-disconnect ka.

Tmux

Ang Tmux ay isang modernong alternatibo sa screen ng GNU. Sa Tmux, maaari ka ring lumikha ng isang session at buksan ang maraming mga bintana sa loob ng session na iyon. Ang mga sesyon ng Tmux ay patuloy, na nangangahulugang ang mga programa na tumatakbo sa Tmux ay patuloy na tumatakbo kahit na isara mo ang terminal.

Konklusyon

Upang magpatakbo ng isang utos sa background, isama & sa dulo ng utos.

Kapag nagpatakbo ka ng isang utos sa background, hindi mo na kailangang maghintay hanggang matapos ito bago ka makapagpatupad ng isa pa.

nohup fg bg trabaho disown terminal