一般在前台(即在當前終端,這里尤其指通過secureCRT或者putty連接遠程終端)下運行短時間任務沒有問題,但是如果運行長時間任務,比如傳輸大文件,比如編譯大版本,就算你有功夫在前台等待但萬一一不小心碰到了網線導致網絡中斷,就直接導致任務執行一半就掛掉,不得不重來的尷尬事件。
命令在后台運行
在命令末尾添加&符號以達到命令在后台運行,更好的做法是在命令之前添加nohup,即:
1 |
[mars@gms03 build]$ nohup make -j 48 & |
1 |
[mars@gms03 build]$ nohup zip -e virus -r sample.zip sample & |
對上述耗時但不需要交互的命令,我們采用上述方法,命令便能很好的工作,如果出現了錯誤也會記載在nohup.out文件中,但是如果我們命令需要交互,恐怕這類方法就不管用了,比如scp傳輸文件時需要輸入目的用戶的密碼等。
對此我們稍作優化便可以解決上述問題:
使用scp傳輸大文件
注意末尾不用加&
1 2 3 |
[mars@gms03 build]$ nohup scp MARS_2.2_1268.tar.gz 10.96.251.72:/data nohup: appending output to `nohup.out' Password: |
輸入密碼后按:ctrl+z
1 |
[1]+ Stopped nohup scp MARS_2.2_1268.tar.gz 10.96.251.72:/data |
然后緊接着輸入:
1 |
[mars@gms03 build]$ bg |
上述命令便又能在后台恢復運行了
1 |
[1]+ nohup scp MARS_2.2_1268.tar.gz 10.96.251.72:/data |