在linux後台執行指令碼的方法和命令

2021-08-28 00:10:08 字數 1436 閱讀 3424

執行指令碼test.sh:./test.sh中斷指令碼test.sh:ctrl+c在1的基礎上將執行中的test.sh,切換到後台並暫停:ctrl+z執行ctrl+z後,test.sh在後台是暫停狀態(stopped),使用命令:bg number讓其在後台開始執行(「number」是使用jobs命令查到的 [ ]中的數字,不是pid)

直接在後台執行指令碼test.sh:./test.sh &檢視當前shell環境中已啟動的任務情況:jobs將test.sh切換到前台執行:fg %number(」number」為使用jobs命令檢視到的 [ ] 中的數字,不是pid)

中斷後台執行的test.sh指令碼:先fg %number切換到前台,再ctrl+c;或是直接kill %number

以上兩種在後台執行test.sh的方法,當遇到退出當前shell終端時,後台執行的test.sh也就結束了。這是因為以上兩種方法使得test.sh在後台執行時,執行test.sh程序的父程序是當前shell終端程序,關閉當前shell終端時,父程序退出,會傳送hangup訊號給所有子程序,子程序收到hangup以後也會退出。所以要想退出當前shell終端時test.sh繼續執行,則需要使用nohup忽略hangup訊號。

不中斷的在後台執行test.shnohup ./test.sh &(test.sh的列印資訊會輸出到當前目錄下的nohup.out中)

使用jobs可看到test.sh處於running狀態

使用ps -ef |grep test.sh可檢視到正在執行的test.sh指令碼程序

退出當前shell終端,再重新開啟,使用jobs看不到正在執行的test.sh,但使用ps -ef可以看到

在後台不中斷的執行test.sh,可以使用nohup忽略hangup訊號,或者使用setsid將其父程序改為init程序(程序號為1)

不中斷的在後台執行test.sh另乙個命令setsid ./test.sh &使用ps -ef |grep test.sh可看到test.sh程序的父程序id為1

#!/bin/bash

int=1

while(( $int<=100 ))

do echo $int

let "int++"

sleep 1

done

Linux 後台執行指令碼

後台執行命令示例 nohup php artisan tmp log 如何執行.sh檔案 直接用.sh 檔案就可以執行,但是如果想後台執行,即使關閉當前的終端也可以執行的話,需要nohup命令和 命令。功能 加在乙個命令的最後,可以把這個命令放在後台執行 nohup 功能 不結束通話的執行命令 有兩...

在linux後台執行指令碼的方法和命令

2018年05月03日 18 15 55 執行指令碼test.sh test.sh中斷指令碼test.sh ctrl c在1的基礎上將執行中的test.sh,切換到後台並暫停 ctrl z執行ctrl z後,test.sh在後台是暫停狀態 stopped 使用命令 bg number讓其在後台開始執...

在linux後台執行指令碼的方法和命令

1.執行指令碼test.sh test.sh 2.終端指令碼test.sh ctrl c 3.在1的基礎上將執行中的test.sh,切換到後台並暫停 ctrl z 4.執行ctrl z後,test.sh在後台是暫停狀態 stopped 使用命令 bg number讓其在後台開始執行 number 是...