一、需求
linux要執行一個腳本,耗時很長,想要腳本在后臺運行,用戶注銷或終端軟件關閉時也可以繼續運行。
二、實現
1、nohup命令?腳本在后臺運行
nohup
是在 Linux 和類 Unix 系統中使用的一個命令,用于在后臺運行程序,并忽略掛斷信號(SIGHUP),從而使程序在用戶注銷或終端關閉時繼續運行。
使用 nohup
命令的基本語法是:
nohup command [args] &
其中,command
是要運行的命令,args
是命令的參數。&
符號將命令放入后臺執行。
通過使用 nohup
命令,你可以在終端關閉后繼續運行程序,而且它會將標準輸出和錯誤輸出重定向到當前目錄下的 nohup.out
文件中,這樣你可以隨時查看程序的輸出信息。
以下是一個示例,演示如何使用 nohup
命令在后臺運行一個 PHP 腳本:
nohup php script.php &
這個命令會在后臺執行 php script.php
,并將輸出保存到 nohup.out
文件中。
需要注意的是,默認情況下,nohup
命令會將輸出追加到 nohup.out
文件中。如果你希望每次運行都創建一個新的 nohup.out
文件,可以使用重定向操作符 >
,例如:
nohup php script.php > nohup.log &
這樣,每次運行都會創建一個新的 nohup.log
文件。
?
?
二、jobs命令?查詢
jobs
是一個在 Linux 和類 Unix 系統中使用的命令,用于顯示當前終端會話中正在運行或暫停的作業(job)列表。
在一個終端會話中,你可以同時啟動多個任務,并將其中一個任務放到后臺運行。這些任務被稱為作業。jobs
命令可以列出這些正在運行或暫停的作業,并提供與它們相關的信息。
以下是 jobs
命令的基本用法:
jobs
執行上述命令后,終端會顯示類似以下的輸出:
[1]+ Running command1 &
[2]- Stopped command2
輸出中的每一行表示一個作業,包含以下信息:
- 作業編號(Job ID):一個數字標識作業的唯一編號。
- 作業狀態:可以是 "Running"(正在運行)或 "Stopped"(已暫停)。
- 命令內容:作業所對應的命令。
在輸出中,作業編號前面包含了一個標識符,如 +
或 -
。+
表示當前前臺作業(最后一個被啟動的作業),-
表示前一個前臺作業。
3、?前后臺切換
可以使用 fg
命令將一個暫停的作業切換到前臺繼續運行,bg
命令將一個暫停的作業切換到后臺繼續運行。