多種ubuntu後台執行與檢視程式的詳細方法

2021-10-04 17:04:27 字數 4191 閱讀 3532

跑大網路時,經常需要掛網路應該怎麼掛

方法1:使用&

方法2:使用nohup

方法3:使用nohup與&組合等(見nohup中第6部分的示例介紹)

方法4:使用screen

一般在執行shell命令的時候我們在命令的後面加上乙個『&』,這樣就可以使得該程式在後台執行。

&為後台執行意思,一般在執行命令後面加上&便可
比如:

python a.py &
但是&有一定侷限性:

當程式執行起來之後依舊會再次在shell中輸出列印資訊,shell依舊被占用,關閉shell則程式退出;這個時候我們可以使用ctrl+z命令,使得這個資訊消失,可以做別的事情,但是關閉shell的時候程式依舊會退出,因此這些辦法都不能解決問題。

由此需要nohup來解決。

nohup的意思就是:永久執行,是no hang up的縮寫,指不間斷,不結束通話。執行乙個程序的時候,不想讓其在你退出賬號時關閉,即可用nohup。nohup用於不結束通話地執行命令。nohup在不規定的情況下,所以輸出內容會到nohup.out中。

nohup執行命令可以使命令永久的執行下去,和使用者終端沒有關係,例如我們斷開ssh連線都不會影響執行,注意了nohup沒有後台執行的意思;&是指在後台執行,但當使用者推出(掛起)的時候,命令自動也跟著退出。

作業系統中有三個常用的流:

0標準輸入流 stdin,使用者鍵盤輸入的內容

1標準輸出流 stdout ,輸出到顯示屏的內容

2標準錯誤流 stderr,報錯內容

一般當我們用 >result.txt,實際是 1>result.txt的省略用法;< result.txt ,實際是 0 < result.txt的省略用法。

語法:nohup command [ arg … ] [ & ]

例如:

nohup python a.py &
command 為我們要執行的指令,無論是否將 nohup 命令的輸出重定向到終端,輸出都將附加到當前目錄的 nohup.out 檔案中。如果當前目錄的 nohup.out 檔案不可寫,輸出重定向到 $home/nohup.out 檔案中。

如果沒有檔案能建立或開啟以用於追加,那麼 command 引數指定的命令不可呼叫。

退出狀態出口值:

126 可以查詢但不能呼叫 command 引數指定的命令。   

127 nohup 命令發生錯誤或不能查詢由 command 引數指定的命令。   

否則,nohup 命令的退出狀態是 command 引數指定命令的退出狀態。

僅僅使用nohup命令能保證程式忽略掛起訊號一直執行,但是輸出還是會在終端和預設的當前目錄的 nohup.out輸出,關閉終端的時候不會結束程式,這樣不是很優雅,最好的方式是在nohup後面加上&,這樣就是最佳的執行方式了。

5.1 2>&1

2>&1是乙個整體,是將標準錯誤(2)重定向到標準輸出(&1),即將錯誤內容重定向輸入到標準輸出中去。

注:左右不能有空格,&是為了區別檔案1和1(標準輸出)

5.2 &1

標準輸出(&1)再被重定向輸入到目標檔案中。

示例1

nohup python a.py >>

/home/my.log 2

>&1

&

2&>1見5.1介紹,>>為追加的意思。

語句意思:以python環境不間斷的執行my.py這個指令碼,並且將指令碼輸出的內容重定向輸入my.log中(以追加方式)。

根據前面的介紹,可知上面語句可拆分下面這兩命令:

nohup python a.py 1

>>

/home/my.log &

nohup python a.py 2

>>

/home/my.log &

示例2
nohup python -u a.py >>

/home/my.log 2

>&1

&

-u 引數,使得python不啟用緩衝,這樣子out.log才可以馬上看到輸出。

跟示例1是一樣的意思。

示例3

nohup python a.py >

/home/my.log 2

>&1

&

跟示例1的區別就是將==>>改為》==,兩者差異在於

>>為追加內容,而》會覆蓋原始檔內容,也可能讓其中的內容清空

一般推薦使用第1示例。

示例3詳細操做文件可見

screen是乙個可以在多個程序之間多路復用乙個物理終端的全屏視窗管理器。screen中有會話的概念,使用者可以在乙個screen會話中建立多個screen視窗,在每乙個screen視窗中就像操作乙個真實的telnet/ssh連線視窗那樣。

ubuntu下安裝:

apt-get install screen

3.1 建立screen會話

screen -s myscreen1
screen就會建立乙個名字為myscreen1的會話。

3.2 暫時離開,保留screen會話中的任務或程式

當需要臨時離開時(會話中的程式不會關閉,仍在執行)可以用快捷鍵ctrl+a+d(即按住ctrl,依次再按a,d)

3.3 恢復screen會話

當回來時可以再執行執行:

screen -r myscreen1
即可恢復到離開前建立的lnmp會話的工作介面。如果忘記了,或者當時沒有指定會話名,可以執行:

screen -ls screen
會列出當前存在的會話列表,11791.myscreen1即為剛才的screen建立的myscreen1會話,目前已經暫時退出了myscreen1會話,所以狀態為detached,當使用screen -r lnmp後狀態就會變為attached,11791是這個screen的會話的程序id,恢復會話時也可以使用:screen -r 11791

3.4 關閉screen的會話

執行:

exit
3.5遠端演示

首先演示者先在伺服器上執行

screen -s test
建立乙個screen會話,觀眾可以鏈結到遠端伺服器上執行screen -x test 觀眾螢幕上就會出現和演示者同步。

screen -d -r myscreen1
結束當前session並回到myscreen1這個session

screen介紹**於【vps偵探

ubunut下檢視後台程序

jobs -l
jobs命令只看當前終端生效的,關閉終端後,在另乙個終端jobs已經無法看到後台跑得程式了。也就是說如果你的網或者你關閉鏈結時,當你再次進入時用jobs -l看不到之前執行的程式執行程序。

process state 是非常強大的程序檢視命令,用於報告當前系統的程序狀態。直接輸入ps便可檢視,ps還有許多功能,比較常用選項:

bsd風格

a——和終端有關的程序

x——和終端無關的程序

u——顯示程序的執行者

sys v風格

-e——檢視所有程序

-l——long,長格式

-f——full,詳細資訊

-o——指定輸出格式

常用命令

ps #檢視隸屬於自己的程序

ps -l(ps -u)#僅檢視隸屬於自己程序的詳細資訊

更多課參考

linux系統中,每乙個程序都是由其父程序建立的, 此命令以樹狀圖的方式展現程序間的派生關係。常用命令:

pstree -p
顯示當前所有程序的程序號和程序id

top是乙個互動式系統效能監控工具,不同於ps是靜態的結果輸出,top可以實時動態地檢視系統的整體運**況。 通過top命令所提供的互動式介面,用熱鍵可以管理。

使用:

# top
【參考文獻1】|【參考文獻2】|【參考文獻3】|

ubuntu後台執行程序

最近在azure上搭乙個基於web.py的web service,由於是用putty去ssh伺服器,在server上把web.py啟動以後,回到寢室由於pc睡眠,putty連線inactive,導致web service無法正常訪問。正常啟動web service python test.py 88...

ubuntu 後台執行程式

在使用伺服器時,我們希望後台執行乙個程式,不占用當前視窗。ubuntu中可以使用nohup命令實現這個功能。nohup sh test.sh 執行上述命令後,系統會在後台執行命令 sh test.sh。同時,會生成輸出的日誌檔案,預設為nohup.out檔案。這種命令方式有個缺點,隨著命令的執行,n...

多種方法檢視Oracle SQL執行計畫

二.使用oracle第三方工具 plsql developer f5 toad ctrl e 三.使用sql plus 如果plan table表不存在,執行 oracle home rdbms admin utlxplan.sql建立plan table表。如果plustrace角色不存在,執行 ...