小技巧:让linux程序在后台运行
前置知識:
xterm,console,tty,pts,pty的區別
- shell是直接和內核進行通信的東西
- xterm是一個軟件概念,可以通過這個程序連接到console從而控制主機,可以理解為cli形式的終端模擬器,而gnome-terminal,konsole就是gui形式的終端模擬器
- console是主機的控制臺,是一個物理概念。
- tty、pty、pts都是終端,是硬件或者設備概念。
- tty是所有終端設備的總稱
- pty是其中一類,偽終端,或者叫虛擬終端
-
“&” 命令行結尾法:
在Unix/Linux下如果想讓程序獨立終端運行,一般都是使用 & 在命令結尾來讓程序自動運行。(命令后可以不追加空格)
打開gnome-terminal,執行如下命令:
delectate@delectate:~$ totem & [1] 8510 delectate@delectate:~$有幾點需要注意:
-
使用nohup命令:
nohup描述:Run COMMAND, ignoring hangup signals.(忽略任何中斷/掛起信號,使命令繼續執行)
但是當你嘗試使用命令:
| 1 | nohup command |
時候卻會遇到不大不小的麻煩……
delectate@delectate:~$ nohup vlc nohup: ignoring input and appending output to `nohup.out'是的,雖然它自動把debug信息記錄到nohup.out文件,但是你卻無法使用這個終端進行任何操作。
所以你需要和第一個方法混用,即
nohup command {option} &混用后,它會自動把你執行的命令輸出結果記錄到權限為-rw——-,名為nohup.out的文件中。
但是你仍然需要
delectate@delectate:~$ nohup vlc & [1] 9045 delectate@delectate:~$ nohup: ignoring input and appending output to `nohup.out' ?//在這里按一下回車或以ctrl+c以 ? ? ? ? ? ? ? ? ? ?//show a clean terminal delectate@delectate:~$與使用 “&” 性質相同,當前啟動程序的終端如果沒有被關閉,已經啟動的程序附在pst上;如果終端被關閉,則自動附在tty。
如果當前目錄的 nohup.out 文件不可寫,輸出重定向到 $HOME/nohup.out。默認狀態下,nohup默認輸出到nohup.out文件,你也可以利用重定向來指定輸出文件:
nohup command {option} > myout.file 2>&1 &只有當虛擬終端是 $ 或者 # 時候,才可以關閉此終端,否則可能導致已經啟動的進程被關閉(按enter——如果程序持續輸出信息而沒有出現 $ 或 #)
-
其他相關命令:
jobs:查看當前有多少在后臺運行的命令
fg:將后臺中的命令調至前臺繼續運行。如果后臺中有多個命令,可以用 fg %jobnumber將選中的命令調出,%jobnumber是通過jobs命令查到的后臺正在執行的命令的序號(不是pid)
bg:將一個在后臺暫停的命令,變成繼續執行。如果后臺中有多個命令,可以用bg %jobnumber將選中的命令調出,%jobnumber是通過jobs命令查到的后臺正在執行的命令的序號(不是pid)
-
殺死進程
殺死已經啟動的程序和普通方式一樣:
pkill -9 name killall name kill pid …-
命令應用:
linux服務器掛機下載;啟動相關服務;linux服務器啟動進程(尤其是ssh登錄)
- 我就曾經用
| 1 | nohup aria2c -i downloadlist -m 0 -j 1 & |
從jsharer極享下載了不少動漫。
參考資料
http://topic.csdn.net/u/20100201/17/a34370cc-8a61-4315-a4d0-84242362064d.html
http://www.linuxsir.org/bbs/thread362001.html
http://www.williamlong.info/archives/482.html
http://dev.firnow.com/course/6_system/linux/Linuxjs/2008716/133186.html
轉自:https://www.deleak.com/blog/2010/05/19/run-software-on-background/
總結
以上是生活随笔為你收集整理的小技巧:让linux程序在后台运行的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《码出高效:Java开发手册》背后的故事
- 下一篇: 最新RemObjects,您值得拥有