Linux的工做管理 job control快速入門

輕鬆學Linux:
linux


   job control就是 讓Linux在一個bash中能夠執行多個工做,其實就是bash中的多個子進程的工做.vim

   這時候就有疑問了?  linux不是自帶了 7個終端窗口麼  在這裏面執行多個工做不就能夠了麼,安全

是的,能夠 ,
bash

      alt1-6 是六個命令行終端, 能夠互相切換
ide

      alt+7 圖形界面終端 ,(ctrl+alt+f1切回到 linux命令行終端)spa


問題來了: 在一些對安全比較嚴謹的公司,都會限制用戶的登陸鏈接數(/etc/security/limits.conf)中設置, 用戶只能鏈接一個鏈接數,此時job control就有效了,!命令行


   job control 分爲  前臺 foregroud  和 後臺  background進程


 例子:
it

  

 # tar -zpcf /tmp/etc.tar.gz /etc &
[1] 8400  <== [job number] PID  
# tar: Removing leading `/' from member names 
# 在中括號內的號碼爲工做號碼 (job number),該號碼與 bash 的控制有關。
# 後續的 8400 則是這個工做在系統中的 PID。至於後續出現的數據是 tar 運行的數據流,
# 由於咱們沒有加上數據流重導向,因此會影響畫面!不過不會影響前景的操做喔!


 

[root@www ~]# tar -zcvf /tmp/etc.tar.gz /etc > /tmp/log.txt 2>&1 &
[1] 8429
[root@www ~]#

 

呵呵!如此一來,輸出的資訊都給他傳送到 /tmp/log.txt 當中,固然就不會影響到咱們前景的做業了。 這樣說,您應該能夠更清楚數據流重導向的重要性了吧!^_^ 
[root@www ~]# jobs [-lrs]選項與參數:
-l  :除了列出 job number 與命令串以外,同時列出 PID 的號碼;
-r  :僅列出正在背景 run 的工做;
-s  :僅列出正在背景當中暫停 (stop) 的工做。範例一:觀察目前的 bash 當中,全部的工做,與對應的 PID[root@www ~]# jobs -l[1]- 10314 Stopped                 vim ~/.bashrc
[2]+ 10833 Stopped                 find / -print
調用後臺的工做 fg   fg+number便可


 

   jobs 查看當前有多少工做table

   fg %number  將後臺工做提到前臺

   vi log.txt

   ctrl+z後  會放到後臺,可是狀態是stop的

  bg  %number   讓後臺中止的工做在後臺變爲running狀態


  管理後臺的工做 kill  -singal

   singal:

    1  從新讀取一次配置文件

    2  至關於ctrl+c

   9    強制終止   好比vi log.txt   強制終止後會產生一個.swp文件

   15  正常終止 


kill後面能夠跟pid  也能夠跟工做管理  默認是pid 因此咱們要管理job control的時候 最好

是  kill -?  %number



  &後臺執行後 可是你退出終端 後臺執行的腳本也會中止

 例子:

   vim  sleep.sh

#!/bin/bash

/bin/sleep 500s

/bin/echo "I have sleept 500s"


#chmod +x sleep.sh


nohup命令可讓後臺中的工做 在終端退出從新登陸後還在運行


nohup  ./sleep.sh  > /test/log.txt  2>&1  &

# exit


從新登陸後 jobs已經不能使用

ps -ef |grep sleep  查看相關進程還在



ps 用法:


-e 顯示全部進程。

-f 全格式。

-h 不顯示標題。

-l 長格式。

-w 寬輸出。

a 顯示終端上的全部進程,包括其餘用戶的進程。

r 只顯示正在運行的進程。


 u  以用戶爲主的格式來顯示程序情況。


x 顯示全部程序,不以終端機來區分。


經常使用的

  ps  -l

  ps -ef

  ps -aux

相關文章
相關標籤/搜索