欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
工作管理 (job control),Linux技術(shù)文章,Linux系列教程,Linux
  工作管理 (job control): &, [ctrl]-z, jobs, fg, bg, kill

  這個(gè)工作管理 (job control) 是用在 bash 環(huán)境下的,也就是說(shuō):‘ 當我們登入系統取得 bash shell 之后,在單一終端機介面下同時(shí)進(jìn)行多個(gè)工作的行為管理 ’。舉例來(lái)說(shuō),我們在登入 bash 后, 想要一邊復制檔案、一邊進(jìn)行資料搜尋、一邊進(jìn)行編譯,還可以一邊進(jìn)行 vi 程式撰寫(xiě)!當然我們可以重復登入那六個(gè)文字介面的終端機環(huán)境中,不過(guò),能不能在一個(gè) bash 內達成? 當然可以??!就是使用 job control 啦!^_^

  從上面的說(shuō)明當中,您應該要瞭解的是:‘進(jìn)行工作管理的行為中, 其實(shí)每個(gè)工作都是目前 bash的子程序,亦即彼此之間是有相關(guān)性的。 我們無(wú)法以 job control 的方式由 tty1 的環(huán)境去管理 tty2 的 bash !’這個(gè)概念請您先建立起來(lái),后續的范例介紹之后,您就會(huì )清楚的瞭解啰!

  或許你會(huì )覺(jué)得很奇怪啊,既然我可以在六個(gè)終端介面登入,那何必使用 job control 呢? 真是脫褲子放屁,多此一舉??!不要忘記了呢,我們可以在 /etc/security/limits.conf里面設定使用者同時(shí)可以登入的連線(xiàn)數,在這樣的情況下,某些使用者可能僅能以一個(gè)連線(xiàn)來(lái)工作呢! 所以啰,您就得要瞭解一下這種工作管理的模式了!此外,這個(gè)章節內容也會(huì )牽涉到很多的資料流重導向,所以,如果忘記的話(huà), 務(wù)必回到 BASH Shell 看一看喔!

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

  * 程序必須來(lái)是 shell 的 child process
  * 程序不能等待 terminal/shell 的輸入(input)


  # 直接將指令丟到背景中‘執行’的 & :

  瞎密?將某個(gè)指令‘丟到背景’當中?在一個(gè) bash 的環(huán)境下,什么叫做‘前景 (foreground) ’與‘背景 (background) ’?我們先來(lái)簡(jiǎn)單的定義一下:

  * 前景:您可以控制的這個(gè)工作稱(chēng)為前景的工作 (foreground);
  * 背景:在記憶體內可以自行運作的工作,您無(wú)法直接控制他,除非以 bg/fg 等指令將該工作呼叫出來(lái)。

如同前面提到的,我們在只有一個(gè) bash 的環(huán)境下,如果想要同時(shí)進(jìn)行多個(gè)工作,那么可以將某些工作丟到背景環(huán)境當中,讓我們可以繼續操作前景的工作!那么如何將工作丟到背景中? 最簡(jiǎn)單的方法就是利用‘ &’這個(gè)玩意兒了!舉個(gè)簡(jiǎn)單的例子, 我們要將 /etc/ 整個(gè)備份成為 /tmp/etc.tar.gz 時(shí),又不想要等待, 那么可以這樣做:

  [root@linux ~]# tar -zpcf /tmp/etc.tar.gz /etc &
  [1] 24874   <== [job number] PID
  [root@linux ~]#    <== 可以繼續作業(yè),不受影響!這就是前景!

仔細的瞧一瞧,我在輸入一個(gè)指令后,在該指令的最后面加上一個(gè)‘ & ’代表將該指令丟到背景中, 此時(shí) bash會(huì )給予這個(gè)指令一個(gè)‘工作號碼(job number)’,就是那個(gè) [1] 啦! 至于后面那個(gè) 24874 則是該指令所觸發(fā)的‘ PID ’了!而且,有趣的是,我們可以繼續操作 bash 呢!很不賴(lài)吧! 不過(guò),那么丟到背景中的工作什么時(shí)候完成?完成的時(shí)候會(huì )顯示什么?如果你輸入幾個(gè)指令后,突然出現這個(gè)資料:

  [1]+  Done              tar -zpcf /tmp/etc.tar.gz /etc

就代表 [1] 這個(gè)工作已經(jīng)完成 (Done) ,該工作的指令則是接在后面那一串指令列。 這樣瞭解了吧?!另外,這個(gè) &代表:‘將工作丟到背景中去執行’喔! 注意到那個(gè)‘執行’的字眼!此外,這樣的情況最大的好處是: 不怕被 [ctrl]-c 中斷的啦!

  此外,將工作丟到背景當中要特別注意資料的流向喔!舉例來(lái)說(shuō),如果我將剛剛那個(gè)指令改成:

  [root@linux ~]# tar -zpcvf /tmp/etc.tar.gz /etc &

情況會(huì )怎樣?呵呵,在背景當中執行的指令,如果有 stdout 及 stderr 時(shí),他的資料依舊是輸出到螢幕上面的,所以,我們會(huì )無(wú)法看到提示字元,當然也就無(wú)法完好的掌握前景工作。所以啰,最佳的狀況就是利用資料流重導向,將輸出資料傳送至某個(gè)檔案中。舉例來(lái)說(shuō),我可以這樣做:

  [root@linux ~]# tar -zpcvf /tmp/etc.tar.gz /etc > /tmp/log.txt 2>&1 &
  [1] 24984
  [root@linux ~]#

  呵呵!如此一來(lái),資料都給他傳送到 /tmp/log.txt 當中,當然就不會(huì )影響到我們前景的作業(yè)了。 這樣說(shuō),您應該可以更清楚資料流重導向的重要性了吧?!^_^

  # 將‘目前’的工作丟到背景中‘暫停’:[ctrl]-z
  想個(gè)情況:如果我正在使用 vi ,卻發(fā)現我有個(gè)檔案不知道放在哪里,需要到 bash 環(huán)境下去搜尋,此時(shí),是否要結束 vi 呢?呵呵!當然不需要??!只要暫時(shí)將 vi 給他丟到背景當中等待即可。 例如以下的案例:

  [root@linux ~]# vi ~/.bashrc
  # 在 vi 的一般模式下,按下 [ctrl]-z 這兩個(gè)按鍵
  [1]+  Stopped                 /usr/bin/vim ~/.bashrc
  [root@linux ~]#   <==順利取得了前景的操控權!

  在 vi 的一般模式下,按下 [ctrl] 及 z 這兩個(gè)按鍵,螢幕上會(huì )出現 [1] ,表示這是第一個(gè)工作, 而那個(gè) + 代表目前在背景下預設被取用的那個(gè)工作 (與 fg 這個(gè)指令有關(guān) )! 而那個(gè) Stopped 則代表目前這個(gè)工作的狀態(tài)。在預設的情況下,使用 [ctrl]-z 丟到背景當中的工作都是‘暫停’的狀態(tài)喔!

  # 觀(guān)察目前的背景工作狀態(tài): jobs

  [root@linux ~]# jobs [-lrs]
  參數:
  -l  :除了列出 job number 之外,同時(shí)列出 PID
  -r  :僅列出正在背景 run 的工作;
  -s  :僅列出正在背景當中暫停 (stop) 的工作。
  范例:

  范例一:觀(guān)察目前的 bash 當中,所有的工作,與對應的 PID
  [root@linux ~]# jobs -l
  [1]+ 24988 Stopped                 /usr/bin/vim ~/.bashrc
  [2]- 25006 Stopped                 /usr/bin/vim ~/.bash_history

如果想要知道目前有多少的工作在背景當中,就用 jobs 這個(gè)指令吧!一般來(lái)說(shuō),直接下達 jobs 即可! 不過(guò),如果您還想要知道該 jobnumber 的 PID 號碼,可以加上 -l 這個(gè)參數啦! 在輸出的資訊當中,例如上表,仔細看到那個(gè) + - 號喔!那個(gè) + 代表預設的取用工作。 所以說(shuō):‘目前我有兩個(gè)工作在背景當中,兩個(gè)工作都是暫停的, 而如果我僅輸入 fg 時(shí),那么那個(gè) [1] 會(huì )被拿到前景當中來(lái)處理’!

評論:
+ 代表使用fg命令時(shí),最先被取用的哪個(gè)工作。即下達fg指令之后,帶有+的job先被調到前景來(lái)工作。

  # 將背景工作拿到前景來(lái)處理:fg

  剛剛提到的都是將工作丟到背景當中去執行的,那么有沒(méi)有可以將背景工作拿到前景來(lái)處理的? 有??!就是那個(gè) fg 啦!舉例來(lái)說(shuō),我們想要將上頭范例當中的工作拿出來(lái)處理時(shí):

  [root@linux ~]# fg %jobnumber
  參數:
  %jobnumber :工作的號碼。注意,那個(gè) % 是可有可無(wú)的!
  范例:

  范例一:先以 jobs 觀(guān)察工作,再將工作取出:
  [root@linux ~]# jobs
  [1]+  Stopped                 /usr/bin/vim ~/.bashrc
  [2]-  Stopped                 /usr/bin/vim ~/.bash_history
  [root@linux ~]# fg      <==預設取出那個(gè) + 的工作,亦即 [1]
  [root@linux ~]# fg %2   <==直接規定取出的那個(gè)工作號碼!

  經(jīng)過(guò) fg 指令就能夠將背景工作拿到前景來(lái)處理啰!

  # 讓工作在背景下進(jìn)行: bg
  我們剛剛提到,那個(gè) [ctrl]-z 可以將目前的工作丟到背景底下去‘暫停’, 那么如何讓一個(gè)工作在背景底下‘ Run ’呢?我們可以在底下這個(gè)案例當中來(lái)測試! 注意喔!底下的測試要進(jìn)行的快一點(diǎn)!^_^

  范例一:一執行 find / -perm +7000 后,立刻丟到背景去暫停!
  [root@linux ~]# find / -perm +7000
  # 此時(shí),請立刻按下 [ctrl]-z 暫停!
  [1]+  Stopped                 find / -perm +7000
  [root@linux ~]#

  范例二:讓該工作在背景下進(jìn)行,并且觀(guān)察他??!
  [root@linux ~]# jobs ; bg %1 ; jobs
  [1]+  Stopped                 find / -perm +7000
  [1]+ find / -perm +7000 &
  [1]+  Running                 find / -perm +7000 &

  看到哪里有差異嗎?呼呼!沒(méi)錯!就是那個(gè)狀態(tài)列~以經(jīng)由 Stopping 變成了 Running 啰! 看到差異點(diǎn),嘿嘿!指令列最后方多了一個(gè) & 的符號啰! 代表該工作被啟動(dòng)在背景當中了啦! ^_^

  # 管理背景當中的工作: kill

剛剛我們可以讓一個(gè)已經(jīng)在背景當中的工作繼續工作,也可以讓該工作以 fg 拿到前景來(lái),那么,如果想要將該工作直接移除呢?或者是將該工作重新啟動(dòng)呢?呵呵! 這個(gè)時(shí)候就得需要給予該工作一個(gè)訊號 (signal),讓他知道該怎么作才好??! 此時(shí), kill 這個(gè)指令就派上用場(chǎng)啦!

  [root@linux ~]# kill -signal %jobnumber
  [root@linux ~]# kill -l
  參數:
  -l  :這個(gè)是 L 的小寫(xiě),列出目前 kill 能夠使用的訊號 (signal) 有哪些?
  signal :代表給予后面接的那個(gè)工作什么樣的指示啰!用 man 7 signal 可知:
  -1 :重新讀取一次參數的設定檔 (類(lèi)似 reload);
  -2 :代表與由鍵盤(pán)輸入 [ctrl]-c 同樣的動(dòng)作;
  -9 :立刻強制刪除一個(gè)工作;
  -15:以正常的程序方式終止一項工作。與 -9 是不一樣的。
  范例:

  范例一:找出目前的 bash 環(huán)境下的背景工作,并將該工作刪除。
  [root@linux ~]# jobs
  [1]+  Stopped                 vim bashrc
  [root@linux ~]# kill -9 %1
  [1]+  已砍掉                  vim bashrc

  范例:找出目前的 bash 環(huán)境下的背景工作,并將該工作終止掉。
  [root@linux ~]# jobs
  [1]+  Stopped                 vim bashrc
  [root@linux ~]# kill -SIGTERM %1
  [1]+  終止                    vim bashrc
  # -SIGTERM 與 -15 是一樣的!您可以使用 kill -l 來(lái)查閱!

特別留意一下, -9 這個(gè) signal 通常是用在‘強制刪除一個(gè)不正常的工作’時(shí)所使用的, -15則是以正常步驟結束一項工作(15也是預設值),兩者之間并不相同呦!舉上面的例子來(lái)說(shuō), 我用 vi 的時(shí)候,不是會(huì )產(chǎn)生一個(gè).filename.swp 的檔案嗎? 那么,當使用 -15 這個(gè) signal 時(shí), vi 會(huì )嘗試以正常的步驟來(lái)結束掉該 vi 的工作,所以 .filename.swp 會(huì )主動(dòng)的被移除,但若是使用 -9 這個(gè) signal 時(shí), 由于該 vi 工作會(huì )被強制移除掉,因此,.filename.swp 就會(huì )繼續存在檔案系統當中。 這樣您應該可以稍微分辨一下了吧?

  其實(shí), kill的妙用是很無(wú)窮的啦!他搭配 signal 所詳列的資訊 (用 man 7 signal 去查閱相關(guān)資料) 可以讓您有效的管理工作與程序(Process),此外,那個(gè) killall 也是同樣的用法! 至于常用的 signal 您至少需要瞭解 1, 9, 15 這三個(gè)signal 的意義才好。 此外, signal 除了以數值來(lái)表示之外,也可以使用訊號名稱(chēng)喔! 舉例來(lái)說(shuō),上面的范例二就是一個(gè)例子啦!至于signal number 與名稱(chēng)的對應, 呵呵,使用 kill -l 就知道啦(L的小寫(xiě))!
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
ARM-Linux環(huán)境下安裝OpenCV
【Linux】alias及設置
Linux中VI的使用
黑科技搶先嘗(續) - Windows terminal中WSL Linux 終端的極簡(jiǎn)美化指南
Powerline:Vim 和 Bash 中的一個(gè)強大狀態(tài)欄插件
Linux 環(huán)境變量配置全攻略
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久