官术网_书友最值得收藏!

2.2.3 后臺任務

在一條命令后加上&符號可以讓其在后臺運行。嘗試man top &,你會得到類似的輸出[1] 12768。其中,第一個數字是任務號,由終端自動分配;第二個數字是PID。現在man top已經在后臺運行了,你可以通過任務號在命令行里與后臺任務進行交互。嘗試在后臺打開另一個任務,然后輸入fg 1,你會看到man指令再一次運行起來了。

對于一個任務,你可以使用Ctrl+Z來將它掛起。不加參數的fg命令總是會執行最近一個被掛起的任務或者后臺任務(注意兩者的區別)。剛才分配的任務號只在這一個終端里才是有效的,通過輸入jobs可以看到后臺運行的任務,jobs -l還可以同時輸出這些任務的PID。

nohup會在后臺運行一個程序,特別是這個程序在終端退出后還能繼續執行。在終端退出后,程序的輸出以及報錯信息會保存到nohup.out文件(在你運行這個進程的目錄下)。這時要講到之前學過的重定向了。你可以把輸出信息重定向到另外的文件,1>是重定向到stdout,2>是重定向到stderr,&>是同時重定向到stdout與stderr:

      $ nphup myprog &>backgroundoutput.txt &

nohup常見的一個使用場景與網絡連接有關。舉例來說,你想要重啟一個已經連接成功的網絡:

      $ sudo nohup sh -c "ifconfig wlan0 down && ifconfig wlan0 up"

注意,輸出的nohup.out文件需要sudo權限才可以讀寫。當然,你也可以自行修改權限:

      $ sudo chown pi:pi nohup.out

nohup對那些要長時間在后臺運行的程序很有用,比如一個傳感器程序。

主站蜘蛛池模板: 江西省| 固原市| 荆州市| 康保县| 祁门县| 聊城市| 白朗县| 子洲县| 景泰县| 徐州市| 旺苍县| 平舆县| 惠安县| 赤峰市| 玉树县| 大荔县| 桐柏县| 扎鲁特旗| 若羌县| 察雅县| 泌阳县| 饶阳县| 阿克陶县| 化州市| 仪征市| 文山县| 友谊县| 延安市| 双辽市| 新源县| 南靖县| 洛扎县| 多伦县| 佛山市| 莎车县| 谷城县| 金沙县| 内乡县| 大邑县| 江川县| 榆林市|