導航:首頁 > 程序命令 > linux讓命令後台運行

linux讓命令後台運行

發布時間:2022-09-15 08:14:33

linux進程後台運行的幾種方式

Ctrl+z/bg/nohup/setsid/&
在Linux中,如果要讓進程在後台運行,一般情況下,我們在命令後面加上&即可,實際上,這樣是將命令放入到一個作業隊列中了:

./rsync.sh &# jobs

但是如上方到後台執行的進程,其父進程還是當前終端shell的進程,而一旦父進程退出,則會發送hangup信號給所有子進程,子進程收到hangup以後也會退出。如果我們要在退出shell的時候繼續運行進程,則需要使用nohup忽略hangup信號,或者setsid將將父進程設為init進程(進程號為1):對於已經在前台執行的命令,也可以重新放到後台執行,首先按ctrl+z暫停已經運行的進程,然後使用bg命令將停止的作業放到後台運行:bg %1,放回前台運行:%1。
# nohup ./rsync.sh &# setsid ./rsync.sh &或
# (./rsync.sh &) ////在一個subshell中執行# ps -ef|grep rsync

nohup 的用途就是讓提交的命令忽略 hangup 信號,標准輸出和標准錯誤預設會被重定向到 nohup.out 文件中。。一般我們可在結尾加上」&」來將命令同時放入後台運行,也可用」 > log.out 2>&1」來更改預設的重定向文件名。
上面的試驗演示了使用nohup/setsid加上&使進程在後台運行,同時不受當前shell退出的影響。那麼對於已經在後台運行的進程,該怎麼辦呢?可以使用disown命令:
# jobs
# disown -h %1# ps -ef|grep rsync

效果與setid相同,但是disown後無法通過jobs命令查看了。
screen
還有一種更加強大的方式是使用screen,首先創建一個斷開模式的虛擬終端,然後用-r選項重新連接這個虛擬終端,在其中執行的任何命令,都能達到nohup的效果,這在有多個命令需要在後台連續執行的時候比較方便。

GNU Screen是一款由GNU計劃開發的用於命令行終端切換的自由軟體。用戶可以通過該軟體同時連接多個本地或遠程的命令行會話,並在其間自由切換,可以看作是窗口管理器的命令行界面版本。它提供了統一的管理多個會話的界面和相應的功能。
# yum install screen -y

常用screen參數:
# screen -S docker-d 新建一個名叫docker-d的session,並馬上進入
# screen -dmS docker-d 新建一個名叫docker-d的session,但暫不進入,可用於系統啟動腳本里
# screen -ls 列出當前所有session
# screen -r docker-d 恢復到zhouxiao這個session,前提是已經是斷開狀態(-d可以遠程斷開會話)
# screen -x docker-d 連接到離線模式的會話(多窗口同步演示)
# screen ./rsync.sh screen創建一個執行腳本的單窗口會話,可以attach進程ID
# screen -wipe 檢查目前所有的screen作業,並刪除已經無法使用的screen作業

正常情況下,當你退出一個窗口中最後一個程序(通常是bash)後,這個窗口就關閉了。另一個關閉窗口的方法是使用C-a k,這個快捷鍵殺死當前的窗口,同時也將殺死這個窗口中正在運行的進程。
在每個screen session 下,所有命令都以 ctrl+a(C-a) 開始。
C-a w 顯示所有窗口列表
C-a k 這個快捷鍵殺死當前的窗口,同時也將殺死這個窗口中正在運行的進程。
C-a d detach,暫時離開當前session

上面只是基本也是最常用的用法,更多請參考man screen或linux screen 命令詳解。需要了解的是,一個用戶創建的screen,其他用戶(甚至root)通過screen -ls是看不見的。另外,Ctrl+a在bash下是用來回到行開頭,不幸與上面的組合快捷鍵沖突。

⑵ linux 如何後台運行

所謂後台,指的是當前shell的後台,當你退出shell的時候,它當然會停止。
話說你想運行什麼程序,運行後還要關閉終端。
要不你試試
ctrl+alt+f1運行程序,然後再alt+f7切換回來。

⑶ Linux系統中暫停正在運行的進程並放入後台

當集群之間使用scp拷貝大容量文件時,往往需要將其放入後台進行運行,但scp需要輸入用戶密碼,因此我們可以將scp進程暫停後放入後台運行,具體步驟如下:

1、scp big_file [email protected]:~

2、ctrl+z鍵 (暫停終端命令窗口正在運行的進程)

3、bg %1 (將暫停的進程放入後台運行)

4、jobs (查看後台運行的進程)

ps:

 bg命令基本格式為 bg %工作號(可通過jobs命令查看暫停和後台運行的進程工作號)

⑷ linux系統下如何從後台啟動進程.

你得查看後台存在的進程 #jobs

#fg

#bg

兩個命令是調入前台和後台的命令

在命令後面加上一個 &
比如:
rm -rf /tmp/ &
linux 技巧:讓進程在後台可靠運行的幾種方法
weibogoogle+用電子郵件發送本頁面
我們經常會碰到這樣的問題,用 telnet/ssh 登錄了遠程的 linux 伺服器,運行了一些耗時較長的任務, 結果卻由於網路的不穩定導致任務中途失敗。如何讓命令提交後不受本地關閉終端窗口/網路斷開連接的干擾呢?下面舉了一些例子, 您可以針對不同的場景選擇不同的方式來處理這個問題。

⑸ 每天三分鍾搞定linux shell腳本24 後台模式運行

當運行腳本的時候在最後加上符號 & ,則對應的腳本在 後台運行 。建立腳本為,

輸入 ./test.sh & 運行

運行後1.txt文件會不斷增加內容,但是腳本以後台運行不會在終端佔用。運行結果為:

輸入 jobs 可以看到這個後台進程:

這個時候如果輸入exit,不會提示有後台進程在運行,而且後台進程也會退出。因為終端會話退出的時候會給這個後台進程發送一個 SIGHUP信號 。如果想要終端退出之後,進程不退出,可以讓進程捕獲SIGHUP信號。當然還有另一個方法,使用 nohup 指令運行腳本,比如輸入:

當用 nohup 並使用後台模式運行之後,即使退出終端,進程也不會收到SIGHUP信號。並且nohup會自動把標准輸出和標准錯誤重定向到nohup.out的文件中。

一個 運行的進程或者暫停的進程 都是一個作業,使用 jobs 命令可以查看當前的作業狀態。輸入:

我當前的輸出為:

(上面的作業2是輸入 ctrl+z 後暫停的進程)

其中, + 號被當作是默認作業,每個作業的前面有自己的序號。如果後續操作不加序號,那麼就被當做是在操作默認作業。比如使用 fg 指令前台運行作業,就是把27652這個進程前台運行,如果輸入 fg 1 ,那麼就是操作作業 1 了。帶-號的表示下一個默認作業。

輸入 bg 1 把 1號作業 後台運行,輸入 fg 2 把 2號作業 前台運行。

⑹ 如何在後台運行 Linux 命令並且將進程脫離

如果一個進程已經運行,例如tar 命令行的例子,簡單的按下Ctrl+Z就可以停止它(這里說的「停止」,不是終止,而是「暫停」的意思),然後輸入命令bg就可以繼續以一個任務在後台運行了。

在後台運行 Linux 命令

你可以通過輸入 jobs 查看所有的後台任務。但是,標准輸入(STDIN)、標准輸出(STDOUT)和標准錯誤(STDERR)依舊摻雜到控制台中。

$ tar -czf home.tar.gz .
$ bg
$ jobs

在後台開始一個 Linux 進程

你也可以直接使用符號&在後台運行一個進程:

$ tar -czf home.tar.gz . &
$ jobs

運行在後台的 Linux 進程信息

看一下下面的這個例子,雖然 tar 命令是作為一個後台任務開始的,但是錯誤信息依舊發送到終端,這表示,進程依舊和控制終端關聯在一起。

$ tar -czf home.tar.gz . &
$ jobs

我們將使用 disown 命令,它在一個進程已經運行並且被放在後台之後使用,它的作用是從 shell 的活動任務列表中移走一個 shell 任務,因此,對於該任務,你將再也不能使用fg 、 bg 命令了。而且,當你關閉控制控制終端,這個任務將不會掛起(暫停)或者向任何一個子任務發送 SIGHUP 信號。

如果還是不太懂的話,可以參考這篇文章網頁鏈接

⑺ Linux下數據備份命令scp、rsync和後台運行

scp和rsync 均可實現文件的復制,但相比較,scp佔用系統資源較小,rsync速度較快。當小文件眾多時,rsync會導致硬碟I/O非常高,而scp基本不影響系統正常使用。可根據需要這倆選其一實現文件復制。

scp 是secure 的縮寫,scp是Linux系統下基於ssh登錄進行安全的遠程文件拷貝命令。
可以實現本地文件復制到遠程伺服器,也可以將遠程文件復制到本地。

rsync 是remote sync的縮寫。使用rsync備份數據時,不會直接覆蓋以前的數據(如果數據已經存在),而是先判斷已存在的數據和新數據的差異(默認規則是文件大小或修改時間有差異),只有數據不相同時才會把不相同的部分覆蓋。在僅作增量數據的時比scp靈活。

一般CentOS默認安裝rsync,若使用 rsync -v 提示找不到命令,可使用 yum install -y rsync 安裝。

單個冒號和雙冒號的區別 :使用rsync在遠程傳輸數據前,是需要進行登陸認證的,這個過程可使用ssh協議也可以使用rsync協議完成。單冒號(:)使用的是ssh協議;雙冒號(::)使用的是rsync協議。

默認情況下,rsync只確保源文件的所有內容(明確排除的文件除外)都復制到目標目錄。它不會使兩個目錄保持不同,並且不會刪除文件。如果要使目標目錄成為源目錄的鏡像副本,則使用--delete選項。可刪除只存在目標目錄,不存在於源目錄的文件。

增量備份算是一個經常使用的場景了。兩台伺服器之間進行文件定期備份,無需所有文件都一遍,僅復制有變動的文件。

具體做法是,第一次同步是全量備份,所有文件在基準目錄裡面同步一份。以後每一次同步都是增量備份,只同步源目錄與基準目錄之間有變動的部分,將這部分保存在一個新的目標目錄。這個新的目標目錄之中,也是包含所有文件,但實際上,只有那些變動過的文件是存在於該目錄,其他沒有變動的文件都是指向基準目錄文件的硬鏈接。

--link-dest 參數用來指定同步時的基準目錄。

上面命令中, --link-dest 參數指定基準目錄 /compare/path ,然後源目錄 /source/path 跟基準目錄進行比較,找出變動的文件,將它們拷貝到目標目錄 /target/path 。那些沒變動的文件則會生成硬鏈接。這個命令的第一次備份時是全量備份,後面就都是增量備份了。

一般伺服器之間復制文件都比較大,為防止誤操作,最好在後台運行。但因為需要和遠程伺服器之間的ssh通訊多是需要密碼的,所以不能直接使用nohup 放置於後台。無論是scp還是rsync都可操作如下:

後台和前台任務的切換

scp不支持斷點續傳,掛起scp進程可能導致數據缺失。傾向於使用rsync。

如果有其他任務需要使用nohup後台運行,但執行時卻忘記了使用nohup,也可參照此方法進行設置。

參考:1. Linux之scp命令及後台運行scp

⑻ linux中如何讓命令在後台運行

在下達的命令後面加上&,就可以使該命令在後台進行工作,而且不怕被ctrl+c這個中斷指令所中斷
具體命令格式是:
[命令]空格[&]
例如:
find / -name xml &
這樣,這個查找程序就會在後台運行。它運行的同時不影響你干別的事情。

⑼ 如何將一個命令後台運行linux

命令後面加上&
例如,在桌面的圖形終端中執行如下命令:
$ gedit &
我們會看到gedit圖形界面被打開,而圖形終端中輸入一個回車符之後又會出現提示符,可以繼續使用該圖形終端而不必等到gedit界面程序退出。

⑽ 如何在後台運行Linux命令並且將進程脫離終端

linux
任務管理-後台運行與終止
fg、bg、jobs、&、ctrl
+
z命令
一、
&
加在一個命令的最後,可以把這個命令放到後台執行
,如gftp
&,
二、ctrl
+
z
可以將一個正在前台執行的命令放到後台,並且處於暫停狀態,不可執行
三、jobs
查看當前有多少...

閱讀全文

與linux讓命令後台運行相關的資料

熱點內容
如何查看伺服器映射的外網地址 瀏覽:975
圖片刺綉演算法 瀏覽:661
阿里雲伺服器沒有實例 瀏覽:601
綿陽有沒有什麼app 瀏覽:844
怎麼用游俠映射伺服器 瀏覽:917
為什麼無意下載的app無法刪除 瀏覽:304
word2007打開pdf 瀏覽:117
php正則class 瀏覽:736
怎麼在文件夾查找一堆文件 瀏覽:543
核酸報告用什麼app 瀏覽:791
u8怎麼ping通伺服器地址 瀏覽:994
安卓什麼手機支持背部輕敲調出健康碼 瀏覽:870
程序員抽獎排行 瀏覽:744
扭蛋人生安卓如何下載 瀏覽:724
什麼app文檔資源多好 瀏覽:924
黑馬程序員APP 瀏覽:148
掌閱小說是哪個app 瀏覽:47
如何把u盤的軟體安裝到安卓機 瀏覽:1000
php跑在什麼伺服器 瀏覽:126
編譯器怎麼跳轉到下一行 瀏覽:454