當使用者只有乙個bash環境,而又想同時幹多樣事情,那麼就可以用工作管理機制。值得注意的是,放進後台的工作不能夠和使用者有互動,例如vim是不可能在後台自動執行的。
#tar -zpcf /tmp/etc.tar.gz /etc &
[1] 8000 <=== [job number] pid
在命令後面新增 & 符號,命令就會在後台執行。另外,因為命令的輸出並沒有被重定向(如 stdout ,stderr),所以有輸出的話還是會輸出在螢幕,可以通過輸出重定向解決(>&)。
通過job命令檢視命令執行的情況:
jobs [-lrs]
-l 列出job number, 命令串外,還包括pid
-r 僅列出後台run的工作
-s 僅列出在後台stop的工作
#jobs -l
[2] 5467 已完成 tar -zpcf /tmp/etc.tar.gz /etc
發現,已經完成了,在次檢視時完成資訊不在列出。
如正在用vim編輯,按下[ctrl]+z,那麼將在後台以stop狀態存在。
root@jammg:/etc# jobs -l
[1] 4747 停止 find / -name a
[2]- 6073 停止 vim a
[3]+ 6086 停止 vim b
上面的+代表最後放進後台的工作,-則代表倒數第二個。
fg、bg分別是將工作在前台、後台執行,用法:
#fg %jobnumber
#bg %jobnumber
以上面為例:
root@jammg:/etc# fg %2 // 再按下ctrl + z
vim a
[2]+ 已停止 vim a
root@jammg:/etc# jobs -l
[1] 4747 停止 find / -name a
[2]+ 6073 停止 vim a
[3]- 6086 停止 vim b
此時2變成+了,
可以通過"fg -"命令執行-號的哪個工作。
root@jammg:/etc# jobs;bg %3 ; jobs
[1] 已停止 find / -name a
[2]+ 已停止 vim a
[3]- 已停止 vim b
[3]- vim b &
[1]- 已停止 find / -name a
[2]+ 已停止 vim a
[3] 執行中 vim b &
發現,通過bg排程3工作後,由-變為「放進後台的時間」再向前一步了,效果和fg相反。
工作管理(job control) 存在的問題是,如果我遠端登陸主機,並以工作管理機制後台執行,那麼遠端斷開連線時,工作也將停止,所以這也就是工作管理所謂的「後台」,它指的是在此工作模式下避免ctrl+c中斷工作,工作依然和終端機有關,和系統後台有很大區別。
其實像at,cron可以解決這個問題!
以下通過nohup命令可以解決這個問題,它可以讓你離線或登出了遠端系統後,還能讓工作繼續進行。
#nohup [命令與引數] [&]
&意義和工作管理一致,
注意,nohup不支援bash內建命令,我們可以新建乙個shell指令碼,將要執行的命令寫進去,然後用nohup命令執行shell指令碼。
利用kill -signal %jobnumber也可直接傳遞signal給相應程序。
在這裡會涉及程序,程序組,會話,控制終端,shell的概念。
那麼,nohup比at命令不同於**呢?
當控制終端被關閉時,擁有該終端的回話會向所有屬於該回話的程序傳送sighup、sigterm和sigquit訊號,所以即使at以「後台」方式執行,它依然會停止工作,因為它始終是屬於這個會話;而nohup就是根據這個特性,在每個屬於該會話的程序安插了忽略上述訊號的**,所以能做到終端關閉而程序繼續執行。
當然了,此時程序再進行i/o是會發生錯誤的,可以通過ioctl函式獲取控制終端。
另外,還有一種解決方法,那就是daemon(守護程序)。
linux工作管理
jobs 檢視工作中的程式。ls 命令後加 表示將命令執行加入後台 建議 後台執行持續執行的程式 不能後台執行互動程式 執行 ctrl z 放入後台 不執行 ctrl c fg 工作號 重新啟動後台停止的程式 後台執行程式執行完回自動彈出 bg 工作號 恢復後台執行 ctrl 大部分終端後台程式繫結...
linux工作管理
指的是在單個登入終端 也就是登入的 shell 介面 同時管理多個工作的行為。也就是說,我們登陸了乙個終端,已經在執行乙個操作,那麼是否可以在不關閉當前操作的情況下執行其他操作呢?當然可以,我們可以再啟動乙個終端,然後執行其他的操作。不過,是否可以在乙個終端執行不同的操作呢?這就需要通過工作管理來實...
Linux 工作管理
工作管理指的是在單個登入終端 也就是登入的 shell 介面 同時管理多個工作的行為。只要將需要操作的命令放入前台,其他命令放入後台即可。前台是指當前可以操控和執行命令的這個操作環境 後台是指工作可以自行執行,但是不能直接用 ctrl c 快捷鍵來中止它,只能使用 fg bg 來呼叫工作。當前的登入...