UNIX学习笔记(七) 后台执行命令3 命令
當在前臺運行某個作業時,終端被該作業占據;而在后臺運行作業時,它不會占據終端。
可以使用&命令把作業放到后臺執行。該命令的一般形式為:
命令 &
為什么要在后臺執行命令?因為當在后臺執行命令時,可以繼續使用你的終端做其他事情。適合在后臺運行的命令有f i n d、費時的打印作業、費時的排序及一些 s h e l l腳本。在后臺運行作業時要當心:需要用戶交互的命令不要放在后臺執行,因為這樣你的機器就會在那里傻等。不過,作業在后臺運行一樣會將結果輸出到屏幕上,干擾你的工作。如果放在后臺運行的作業會產生大量的輸出,最好使用下面的方法把它的輸出重定向到某個文件中:
command >out.file 2>&1 &
在上面的例子中,所有的標準輸出和錯誤輸出都將被重定向到一個叫做 out.file 的文件中。當你成功地提交進程以后,就會顯示出一個進程號,可以用它來監控該進程,或殺死它。
?
向后臺提交命令現在我們運行一個f i n d命令,查找名為“s r m . c o n f”的文件,并把所有標準輸出和錯誤輸出重定向到一個叫作f i n d . d t的文件中:
find /etc –name “srm.conf” –print >find.dt 2>&1 &
[1] 27015
在上面的例子中,在我們成功提交該命令之后,系統給出了它的進程號 2 7 0 1 5。當該作業完成時,按任意鍵(一般是回車鍵)就會出現一個提示:
[1]+ Done???????????????? find /etc “srm.conf” -print
這里還有另外一個例子,有一個叫做 p s 1的腳本,它能夠截斷和清除所有的日志文件,我把它放到后臺去執行:
ps1? &
[2] 28535
?
?
?
用ps命令查看進程
當一個命令在后臺執行的時候,可以用提交命令時所得到的進程號來監控它的運行。在前面的例子中,我們可以按照提交p s 1時得到的進程號,用p s命令和g r e p命令列出這個進程:
zjtst1-bg-proc%ps x| grep 48536
46131 pts/3??? S+???? 0:00 grep 48536
48536 pts/94?? Ss+??? 0:00 -csh
如果系統不支持ps x命令,可以用:
zjtst1-bg-proc%ps ef | grep 48536
48536 pts/94?? Ss+??? 0:00 –csh
5878 pts/3??? S+???? 0:00? \_ grep 48536
記住,在用p s命令列出進程時,它無法確定該進程是運行在前臺還是后臺。
?
?
殺死后臺進程
如果想殺死后臺進程可以使用 k i l l命令。當一個進程被放到后臺運行時, s h e l l會給出一個 進程號,我們可以根據這個進程號,用k i l l命令殺死該進程。該命令的基本形式為:
kill -signal [process_number]
在殺進程的時候,執行下面的命令(你的進程號可能會不同)并按回車鍵。系統將會給出相應的信息告訴用戶進程已經被殺死。
kill 48536
[1]+ Terminated??????????????????????????????????? ps1
如果系統沒有給出任何信息,告訴你進程已經被殺死,那么不妨等一會兒,也許系統正在殺該進程,如果還沒有回應,就再執行另外一個 k i l l命令,這次帶上一個信號選項:
kill –9 48536
[1] + Killed?????????????????????????????????????????? ps1 &
如果用上述方法提交了一個后臺進程,那么在退出時該進程將會被終止。為了使后臺進程能夠在退出后繼續運行,可以使用n o h u p命令。
轉載于:https://www.cnblogs.com/kevin-boy/archive/2011/08/06/2129320.html
總結
以上是生活随笔為你收集整理的UNIX学习笔记(七) 后台执行命令3 命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: fastjson异常问题
- 下一篇: 全屏