[Linux][Bash]設置程序後臺運行

在終端界面啓動程序後,默認請求下,當前終端爲被啓動程序的標準輸入及輸出端,而且終端被程序佔用,把程序設成後臺進程須要有如下幾個步驟:web

  1. CTRL + Z設置暫停程序
  2. bg設置程序後天運行
  3. jobs列出當前界面的任務
  4. disown %1設置任務1的父進程再也不屬於當前終端界面
  5. 退出終端

例子以下,t.sh爲被啓動的程序bash

#!/bin/bash 
#t.sh
IDX=1
while [ $IDX -gt 0 ];do
	echo $IDX
	IDX=$[$IDX + 1];
	sleep 1
done

啓動t.shsvg

➜  tmp ./t.sh 
1
2
3
4

CTRL + Z暫停t.shspa

➜  tmp ./t.sh 
1
2
3
4
5
^Z
[1]  + 7428 suspended  ./t.sh

bg設置t.sh後臺運行code

➜  tmp ./t.sh 
1
2
3
4
5
^Z
[1]  + 7428 suspended  ./t.sh
➜  tmp bg
[1]  + 7428 continued  ./t.sh
6                                                                                                                                     
➜  tmp 7
8
9
10

jobs列出當前終端的全部任務xml

➜  tmp jobs
[1]  + running    ./t.sh

disown %1使得任務1與當前終端脫鉤
再次使用jobs查看當前任務爲空
exit退出當前終端
在新的終端中查看,t.sh依然在運行token

➜  ~ ps ax | grep t.sh
 7428 ?        S      0:00 /bin/bash ./t.sh