- 樹莓派創客:手把手教你玩轉人工智能
- 陳佳林
- 517字
- 2020-11-23 16:49:24
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對那些要長時間在后臺運行的程序很有用,比如一個傳感器程序。
推薦閱讀
- Visualforce Development Cookbook(Second Edition)
- Go Machine Learning Projects
- Machine Learning for Cybersecurity Cookbook
- 空間機器人遙操作系統及控制
- Apache Hive Essentials
- 機器人編程實戰
- Kubernetes for Developers
- 新編計算機圖形學
- Dreamweaver CS6中文版多功能教材
- 基于ARM9的小型機器人制作
- 傳感器原理與工程應用
- 玩機器人 學單片機
- Building Analytics Teams
- Qt中的C++技術
- Mastering Windows Group Policy