Linux 之 進(jìn)程管理 -- 工作管理 (job control)

工作管理(job control) 是用在bash環(huán)境下的
也就是說,當(dāng)我們登入系統(tǒng)取得bash shell之后抽米,在單一終端機(jī)接口下同時進(jìn)行多個工作的行為管理。
舉例:我們在登入bash后滔蝉,想要一邊復(fù)制文件抠璃、一邊進(jìn)行資料搜尋、一邊進(jìn)行編譯礁遵、還可以一邊進(jìn)行vim程序撰寫轻绞。當(dāng)然我們可以重復(fù)登入那六個文字接口的終端機(jī)環(huán)境中,但是我們其實(shí)是能在一個bash內(nèi)達(dá)成的榛丢!這就是job control了
防止意外:
(/etc/security/limits.conf里可以設(shè)定使用者同時可以登入的聯(lián)機(jī)數(shù)铲球,如果我們被設(shè)定僅能以一個聯(lián)機(jī)來工作,就不得不使用job control的模式晰赞。)

1. job control的注意事項

注意: 進(jìn)行工作管理的行為中,其實(shí)每個工作都是目前bash的子進(jìn)程选侨,亦即彼此之間是有相關(guān)性的掖鱼。我們無法以job control的方式由tty1的環(huán)境去管理tty2的bash(這個概念先建立起來)。

要進(jìn)行bash的job control必須要注意到的限制是

  • 這些工作所觸發(fā)的進(jìn)程必須來自于你shell的子進(jìn)程(只管理自己的bash)
  • 前景: 你可以控制與下達(dá)指令的這個環(huán)境稱為前景的工作(foreground)
  • 背景:可以自行運(yùn)作的工作援制,你無法使用contrl+c終止他戏挡,可使用bg/fg呼叫該工作
  • 背景中“執(zhí)行”的進(jìn)程不能等待 terminal/shell 的輸入(input)

2. job control的管理

知識背景
bash 只能夠管理自己的工作而不能管理其他bash的工作,所以即使你是root也不能夠?qū)e人的bash底下的job給他拿過來執(zhí)行晨仑。此外褐墅,又分前景與背景,然后背景里面的工作狀態(tài)又可以分為 暫停 stop 與 運(yùn)作中 running.

2.1 直接將指令丟到背景中 執(zhí)行的 &

假如我們要將 /etc/整個目錄備份成為 /tmp/etc.tar.gz洪己,便可以直接在命令行中輸入: tar -zpcf /tmp/etc.tar.gz /etc &(工作模式:tar -zpcf 壓縮文件目錄及名稱 待壓縮目錄的路徑及名稱)

tar -zpcf /tmp/etc.tar.gz /etc &

其中 [1]為工作號碼(job number)與bash的控制有關(guān)
14432是該指令所觸發(fā)的PID
然后我們可以忽略它得繼續(xù)操作bash
任務(wù)完成后的提示:
背景任務(wù)完成后的提示

圖片表示 job [1]已經(jīng)完成妥凳,而接在其后的一串指令列即 工作指令。

插播zip的使用(和tar類似)

  • 壓縮用zip zip -r /tmp/etc.zip /etc (zip -r 壓縮文件路徑 待壓縮目錄)
    翻譯成人話:將/etc目錄壓縮成 etc.zip答捕,放置在/tmp目錄下(-r 表示遞歸壓縮子目錄下所有文件)
  • 解壓縮用unzip unzip -d /tmp etc.zip zip -d 解壓縮到的路徑 壓縮文件名稱
    翻譯成人話:將etc.zip解壓縮到/tmp目錄下(-d 表示解壓縮到的目錄逝钥,默認(rèn)當(dāng)前路徑下)

不過,需要注意的是

在背景當(dāng)中執(zhí)行的指令拱镐,如果有 stdout 及 stderr 時艘款,他的數(shù)據(jù)依舊是輸出到屏幕上面持际,而由于是背景工作,通過[ctrl]+c也無法停止程序哗咆。因此在進(jìn)行此類工作時蜘欲,最佳的狀況就是利用數(shù)據(jù)流重導(dǎo)向,將輸出數(shù)據(jù)傳送到某個文件中晌柬。

數(shù)據(jù)流重導(dǎo)向

例如??芒填,如此一來,輸出信息都傳送到 /tmp/log.txt了空繁。

2.2 將“目前”的工作丟到背景中“暫偷钏ィ”:[ctrl]-z

在vim的一般模式下,如果我們需要到bash環(huán)境下進(jìn)行搜尋盛泡,此時不需要結(jié)束vim闷祥,直接 [ctrl] -z即可將他丟到背景中等待。
參考如下鳥哥的解釋:

ctrl 和 z

不同于 前面提到的& 將程序丟到背景里傲诵,在預(yù)設(shè)的情況下凯砍,使用[ctrl-z]丟到背景當(dāng)中的工作都是“暫停”的狀態(tài)拴竹。

2.3 觀察目前的背景工作狀態(tài):jobs

如果我們想知道有什么工作在背景中悟衩,就用jobs這個指令。
一般來說栓拜,我們直接在命令行中輸入jobs就可以了座泳,不過它還有一些參數(shù),可以根據(jù)需求添加
工作模式:jobs [-lrs]
選項與參數(shù):

  • -l :除了列出 job number 與指令串之外幕与,同時列出PID的號碼
  • -r :僅列出正在背景 run 的工作
  • -s :僅列出正在背景當(dāng)中暫停(stop) 的工作
    jobs -l

    解釋一下 job number 后面的 “+” “-”符號:
    +代表最近被放到背景的工作號碼
    - 代表最近最后第二個被放到背景中的工作號碼
    超過最后第三個以后的工作挑势,就不會有+/-符號存在了
    這里的意義在于:就像??圖中的情況,如果我們直接輸入fg時(fg是 “將背景工作拿到前景來處理” 的命令) 啦鸣,那個伴隨"+"的job[2]會被預(yù)設(shè)拿到前景中來處理

2.4 將背景工作拿到前景來處理 : fg(foreground)

  • 工作模式:
    fg %jobnumber
  • 選項與參數(shù)
    %jobnumber jobnumber為工作號碼(數(shù)字) ## 注意潮饱,那個%是可有可無的

2.5 讓工作在背景下的狀態(tài)變成運(yùn)作中:bg

鳥哥在下面這個圖中講得很詳細(xì),工作模式和fg相同


bg讓在背景下暫停的工作運(yùn)作

2.6 管理背景當(dāng)中的工作 kill

如果我們想要將工作移除诫给,可以使用kill這個命令香拉,當(dāng)然它還有一些參數(shù)來作為輔助
工作模式:kill -signal %jobnumber
常見參數(shù)介紹
-l注意這里是L的小寫,列出目前kill能夠使用的參數(shù)有哪些
-1 重新讀取一次參數(shù)的配置文件
-2 代表與由鍵盤輸入 [ctrl] -c 同樣的動作
-9 立刻強(qiáng)制刪除一個工作
-15 以正常的進(jìn)程方式終止一項工作中狂。與-9不一樣
想要了解signal的更多信息:man 7 signal去查詢相關(guān)資料
這里解釋一下kill -9kill -15 凫碌,當(dāng)然推薦大家都使用 kill -15,如果是迫不得已再使用kill -9吃型。因?yàn)橛械倪M(jìn)程在運(yùn)行過程中會產(chǎn)生一些文本证鸥,kill -15在kill進(jìn)程時會將與進(jìn)程相關(guān)的一切(包括中間生成的文本)一并刪除。而kill -9會強(qiáng)制得將工作移除掉,而一些中間產(chǎn)物會繼續(xù)存在文件系統(tǒng)里枉层。

注意:kill 后面接的數(shù)字默認(rèn)是PID泉褐,如果想要管理bash的工作控制,必須使用kill -signal %jobnumber的形式(不同于fg)

3. 脫機(jī)管理問題

很多小伙伴剛接觸linux時鸟蜡,會把 &放到背景中運(yùn)行的模式當(dāng)作放到系統(tǒng)的背景去膜赃,這么理解就錯了。
我們之前在“工作管理”中提到的“背景”指的是bash的背景(也就是說揉忘,指的是在終端機(jī)模式下可以避免ctrl -c中斷的一個情景)跳座,而不是放到系統(tǒng)的背景去。如果不好理解泣矛,舉個例子:如果你是以遠(yuǎn)程聯(lián)機(jī)的方式連接到你的Linux主機(jī)(terminal 或 putty)疲眷,并且以&的方式放到背景去,如果工作尚未結(jié)束你就exit脫機(jī)了您朽,你放在bash背景中的未完成的工作就會被中斷的狂丝。

那該怎么辦呢?如果我的工作需要進(jìn)行一大段時間(>24h)哗总,總不能一直守著自己的終端機(jī)几颜,開著遠(yuǎn)程聯(lián)機(jī)軟件肉眼看著吧。對于這種情況讯屈,我們可以將工作放置在系統(tǒng)背景蛋哭,這樣就與終端機(jī)無關(guān)了。

因此涮母,這種情況我們可以使用atnohup

3.1 nohop

nohup可以讓你在脫機(jī)或注銷系統(tǒng)后谆趾,還能夠讓工作繼續(xù)進(jìn)行,它的工作模式
nonhup [指令與參數(shù)] 命令 & 這樣就可以在系統(tǒng)背景中運(yùn)行

3.2 at

at這個指令通常是用在僅執(zhí)行一次的工作排程里(將某些工作排進(jìn)進(jìn)程表中哈蝇,在指定的時間執(zhí)行)棺妓。當(dāng)然,由于涉及系統(tǒng)安全問題炮赦,不是每個人都可以使用at的。查看/etc/at.allow(可以使用的名單) 和 /etc/at.deny(不可以使用的名單)兩個文件样勃,如果兩個文件都不存在吠勘,那么只有root可以使用at這個命令。

  • at 的運(yùn)作方式
    使用at這個指令來產(chǎn)生所要運(yùn)作的工作峡眶,實(shí)質(zhì)上剧防,是將待運(yùn)行的工作以文本的方式寫入/var/sool/at/目錄內(nèi)。通過這種方式辫樱,便能通過atd這個服務(wù)峭拘,進(jìn)行工作的取用與執(zhí)行。
at 的使用方法-1

at 的使用方法-2
  • at 的工作管理
    atq查詢目前主機(jī)上有多少at工作排程
    atrm (jobnumber) 刪除錯誤的命令
    拿鳥哥的圖來理解
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市鸡挠,隨后出現(xiàn)的幾起案子辉饱,更是在濱河造成了極大的恐慌,老刑警劉巖拣展,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件彭沼,死亡現(xiàn)場離奇詭異,居然都是意外死亡备埃,警方通過查閱死者的電腦和手機(jī)姓惑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來按脚,“玉大人于毙,你說我怎么就攤上這事「ò幔” “怎么了唯沮?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長伞辛。 經(jīng)常有香客問我烂翰,道長,這世上最難降的妖魔是什么蚤氏? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任甘耿,我火速辦了婚禮,結(jié)果婚禮上竿滨,老公的妹妹穿的比我還像新娘佳恬。我一直安慰自己,他們只是感情好于游,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布毁葱。 她就那樣靜靜地躺著,像睡著了一般贰剥。 火紅的嫁衣襯著肌膚如雪倾剿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天蚌成,我揣著相機(jī)與錄音前痘,去河邊找鬼。 笑死担忧,一個胖子當(dāng)著我的面吹牛芹缔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播瓶盛,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼最欠,長吁一口氣:“原來是場噩夢啊……” “哼示罗!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起芝硬,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤蚜点,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后吵取,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體禽额,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年皮官,在試婚紗的時候發(fā)現(xiàn)自己被綠了脯倒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡捺氢,死狀恐怖藻丢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情摄乒,我是刑警寧澤悠反,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站馍佑,受9級特大地震影響斋否,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拭荤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一茵臭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧舅世,春花似錦旦委、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至罢低,卻和暖如春查辩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背网持。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工宜肉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人翎碑。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像之斯,于是被迫代替她去往敵國和親日杈。 傳聞我的和親對象是個殘疾皇子遣铝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 一個程序被加載到內(nèi)存當(dāng)中運(yùn)行,那么在內(nèi)存內(nèi)的那個數(shù)據(jù)就被稱為進(jìn)程(process)莉擒。進(jìn)程是操作系統(tǒng)上非常重要的概念...
    Zhang21閱讀 1,930評論 0 12
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,380評論 0 5
  • 進(jìn)程相關(guān)概念系統(tǒng)進(jìn)程管理工具任務(wù)計劃 一酿炸、進(jìn)程相關(guān)概念 定義:進(jìn)程(Process)是運(yùn)行中的程序的一個副本,是被...
    哈嘍別樣閱讀 569評論 0 0
  • 觀其大綱 第1部分Linux的基礎(chǔ)知識第1章Linux概述第2章Linux系統(tǒng)的安裝KickStart開始自動安裝...
    周少言閱讀 1,481評論 1 10
  • 周六的早上涨冀,林瀟瀟難得睡了個大大的懶覺填硕。這段時間實(shí)在是太累了,學(xué)業(yè)上不敢放松鹿鳖,抽空還要趕去參加各個招聘會扁眯、準(zhǔn)備簡歷...
    向日葵之海閱讀 294評論 0 0