Paano Simulan ang Linux Command sa Background at Tanggalin ang Proseso sa Terminal

Paano Simulan Ang Linux Command Sa Background At Tanggalin Ang Proseso Sa Terminal



Sa gabay na ito, matututunan natin kung paano magpatakbo ng command sa background at kung paano i-detach ang mga proseso mula sa terminal.

Mga kinakailangan:

Upang maisagawa ang mga hakbang sa gabay na ito, kailangan mo ang mga sumusunod na bahagi:

  • Isang functional na sistema ng Linux. Matuto ng mas marami tungkol sa pag-set up ng Ubuntu VM sa VirtualBox .
  • Access sa a non-root user na may pahintulot ng sudo .

Pagpapatakbo ng Mga Proseso mula sa Terminal

Sa tuwing nagpapatakbo ng isang command, ang mga proseso ay inilalabas sa ilalim ng terminal. Kung ang terminal ay sarado, ang lahat ng nauugnay na proseso ay awtomatikong wawakasan. Sa ilang mga sitwasyon, maaari itong maging abala. Halimbawa:







  • Napakaraming dami ng output data at error/diagnostic na mensahe
  • Ang aksidenteng pagsasara ng terminal na nagreresulta sa pagwawakas ng mga posibleng prosesong kritikal sa misyon, atbp.

Upang matugunan ang mga isyung ito, mayroong ilang mga opsyon:



  • Pagpapatakbo ng mga proseso sa background
  • Pag-alis ng mga proseso mula sa terminal

Ang mga prosesong tumatakbo sa background ay hindi mapupuno ang terminal output. Bukod dito, ang terminal ay libre upang patakbuhin ang mga karagdagang command. Para sa mga detached na proseso, hindi sila magwawakas kahit na sarado ang terminal.



Pagsisimula ng Mga Proseso sa Background

Sa maraming kaso, maaaring magtagal bago makumpleto ang isang utos. Sa pangkalahatan, ang gumagamit ay napipilitang maghintay hanggang sa matapos ang utos. Halimbawa, kapag gumagamit ka ng text editor, hindi available ang shell hanggang sa sarado ang editor.





Upang ipakita, ginagamit namin ang utos na 'oo':

$ lalaki oo



Paraan 1:

Mayroong ilang mga paraan kung saan maaari naming ipadala ang tumatakbong proseso sa background.

Una, ihihinto namin ang proseso nang hindi tinatapos ito. Upang gawin ito, patakbuhin ang sumusunod na command at pindutin ang 'Ctrl + Z':

$ oo 'hello world' > / dev / wala

Ngayon, patakbuhin ang command na 'bg' upang ipadala ang proseso sa background:

$ bg

Kapag naitulak sa background, magpapatuloy ang proseso. Inililista ng sumusunod na command ang lahat ng tumatakbong trabaho sa background:

$ mga trabaho

Paraan 2:

Sa nakaraang pamamaraan, ang proseso ay unang nagsimulang tumakbo sa foreground. Na-pause namin ang proseso, ipinadala ito sa background, pagkatapos ay ipinagpatuloy ito. Sa halip, maaari naming patakbuhin ang proseso nang direkta sa background.

Upang gawin ito, idagdag ang '&' sign sa dulo ng command:

$ oo 'oh long johnson' > / dev / wala at

Dito, awtomatikong tumatakbo sa background ang mga spawned na proseso. Para i-verify, tingnan ang listahan ng mga background na trabaho:

$ mga trabaho

Paraan 3:

Maaari rin naming ilunsad ang mga proseso sa background sa tulong ng tmux , isang malakas na multiplexer na maaaring pamahalaan ang maramihang mga terminal session sa loob ng isang window. Hindi ito naka-pre-install sa Linux. Gayunpaman, magagamit ito para sa lahat ng mga pangunahing distro ng Linux. Matuto ng mas marami tungkol sa pag-install ng tmux sa Linux .

Sa sumusunod na halimbawa, ginagamit namin ang tmux upang i-ping ang isang target at i-log ang output:

$ tmux bago -d 'ping -c 9 127.0.0.1 > ping.log'

Ang log file ay nagpapatunay kung ang command ay matagumpay na tumatakbo o hindi:

$ pusa ping.log

Isa lamang itong halimbawa ng kung ano ang magagawa ng tmux. Matuto ng mas marami tungkol sa tmux na may mga halimbawa .

Ibinabalik ang Mga Trabaho sa Foreground

Kung nais mong ibalik ang isang trabaho sa foreground, ginagamit namin ang command na 'fg'. Kailangan din namin ang numero ng trabaho mula sa command ng trabaho.

Una, tukuyin ang trabaho na gusto mong dalhin sa harapan:

$ mga trabaho

Ngayon, gamitin ang 'fg' na utos:

$ fg %< job_number >

Pag-alis ng Mga Proseso mula sa Terminal

Ang anumang prosesong nauugnay sa isang terminal ay wawakasan sa sandaling magsara ang terminal, ito man ay tumatakbo sa foreground o sa background. Upang maiwasan ang pagwawakas ng proseso, hinihiwalay namin ang target na proseso mula sa terminal/shell.

Paraan 1:

Upang tanggihan ang isang proseso, kailangan muna namin ng isang proseso sa background:

$ oo 'qwerty' > / dev / wala at

Tingnan ang listahan ng mga tumatakbong trabaho sa background:

$ mga trabaho

Tandaan ang serial number ng target na background na trabaho. Ngayon, gamitin ang 'disown' na utos upang alisin ito sa terminal:

$ itakwil %< job_number >

Ang target na trabaho ay dapat na mawala na ngayon sa listahan ng mga trabaho:

$ mga trabaho

Gayunpaman, makikita mo pa rin ang prosesong tumatakbo sa background:

$ ps sa

Paraan 2:

Ang isa pang paraan ng pagtanggal ng proseso mula sa parent terminal ay ang paggamit ng command na 'nohup'. Pinapanatili nito ang isang proseso na tumatakbo sa background kahit na pagkatapos isara ang terminal.

Ang paggamit ng 'nohup' ay ang mga sumusunod:

$ nohup < utos > at

I-verify kung matagumpay na nalikha ang trabaho:

$ mga trabaho

Paraan 3:

Ang pamamaraang ito ay ganap na naghihiwalay sa target na proseso. Ito ay isang mas epektibong paraan ng pagtanggal ng mga GUI app.

Halimbawa, upang simulan ang Firefox at ganap na tanggalin ito mula sa terminal, gamitin ang sumusunod na command:

$ firefox dev / wala &>/ dev / wala at

dito:

  • Ang /dev/null ay isang espesyal na device sa Linux na nag-aalis ng anumang data na nakasulat dito.
  • Sa nakaraang command, ang input ay binabasa mula sa at ang output ay ipinadala sa /dev/null . Matuto pa tungkol sa iba pang mga paraan ng paggamit ng /dev/null .

Konklusyon

Ipinakita namin ang iba't ibang paraan ng pagpapatakbo ng proseso sa background. Ipinakita rin namin ang mga paraan upang alisin ang isang proseso mula sa parent terminal. Ang mga diskarteng ito ay maaaring maging kapaki-pakinabang sa tuwing nagtatrabaho sa terminal o nagpapatakbo ng script .

Kung kailangan mong magpatakbo ng ilang partikular na command sa isang partikular na pattern, maaari naming i-offload ito bilang a serbisyo ng systemd . Para sa mga malalayong makina, maaari rin naming gamitin ang mga tool ng third-party tulad ng Magagawang i-automate ang halos lahat .

Maligayang pag-compute!