讓程序在後台執行方法彙總

2022-05-04 00:48:09 字數 1600 閱讀 3894

1. nohup

[root@pvcent107 ~]# nohup ping www.ibm.com &

[1] 3059

2.setsid

[root@pvcent107 ~]# setsid ping www.ibm.com

3.& in subshell

[root@pvcent107 ~]# (ping www.ibm.com &)

4.disown

如果我們未加任何處理就已經提交了命令,使用disown命令。

需要注意的是,當使用過 disown 之後,會將把目標作業從作業列表中移除,我們將不能再使用jobs來檢視它,但是依然能夠用ps -ef查詢到它。

這種方法的操作物件是作業,如果我們在執行命令時在結尾加了"&"來使它成為乙個作業並在後台執行,那麼就萬事大吉了,我們可以通過jobs命令來得到所有作業的列表。但是如果並沒有把當前命令作為作業來執行,如何才能得到它的作業號呢?答案就是用 ctrl-z(按住ctrl鍵的同時按住z鍵)了!

[root@pvcent107 build]# cp -r testlargefile largefile2

[1]+ stopped cp -i -r testlargefile largefile2

[root@pvcent107 build]# bg %1

[1]+ cp -i -r testlargefile largefile2 &

[root@pvcent107 build]# jobs

[1]+ running cp -i -r testlargefile largefile2 &

[root@pvcent107 build]# disown -h %1

[root@pvcent107 build]# ps -ef |grep largefile2

root 5790 5577 1 10:04 pts/3 00:00:00 cp -i -r testlargefile largefile2

root 5824 5577 0 10:05 pts/3 00:00:00 grep largefile2

[root@pvcent107 build]#

5. screen
如果有大量這種命令需要在穩定的後台裡執行,此時最方便的方法就是 screen 了。簡單的說,screen 提供了 ansi/vt100 的終端模擬器,使它能夠在乙個真實終端下執行多個全屏的偽終端。
使用 screen 很方便,有以下幾個常用選項:

[root@pvcent107 ~]# screen -dms urumchi

[root@pvcent107 ~]# screen -list

there is a screen on:

12842.urumchi (detached)

1 socket in /tmp/screens/s-root.

[root@pvcent107 ~]# screen -r urumchi

Linux中如何讓程序在後台執行

在linux中,如果要讓程序在後台執行,一般情況下,我們在命令後面加上 即可,實際上,這樣是將命令放入到乙個作業佇列中了 test.sh 1 17208 jobs l 1 17208 running test.sh 對於已經在前台執行的命令,也可以重新放到後台執行,首先按ctrl z暫停已經執行的程...

Linux中如何讓程序在後台執行

在linux中,如果要讓程序在後台執行,一般情況下,我們在命令後面加上 即可,實際上,這樣是將命令放入到乙個作業佇列中了 test.sh 1 17208 jobs l 1 17208 running test.sh 對於已經在前台執行的命令,也可以重新放到後台執行,首先按ctrl z暫停已經執行的程...

Linux中如何讓程序在後台執行

一.nohup setsid 使用場景 如果只是臨時有乙個命令需要長時間執行,什麼方法能最簡便的保證它在後台穩定執行呢?我們的解決辦法就有兩種途徑 要麼讓程序忽略 hup 訊號,要麼讓程序執行在新的會話裡從而成為不屬於此終端的子程序。解決方法 1.nohup 只需在要處理的命令前加上 nohup 即...