Shell 指令碼後台執行

2022-01-30 01:21:19 字數 2238 閱讀 6609

目錄用法

說明sh test.sh &

將指令碼放在後台執行(常用方法)

crtl + c

停止執行當前任務或指令碼

crtl + z

暫停執行當前任務或指令碼

bg

把當前任務或指令碼放到後台執行,此處可以理解為background

fg

把當前指令碼或任務放到前台執行,如果有多個任務,可以使用fg加任務編號調出對應的指令碼任務,

如fg 2,是指調出第二個指令碼任務,fg可以理解為fontground

jobs

檢視當前正在執行的指令碼或任務

kill

關閉執行的指令碼任務,即以kill % 任務編號的形式關閉指令碼,此處的任務編號,可以通過jobs得到

現有測試指令碼test.sh與demo.sh:

[qinys@localhost 20200313]$ cat test.sh 

#/bin/bash

i=10

while ((i>0))

do echo "$i" >> log.txt

sleep 1

((i--))

done

[qinys@localhost 20200313]$ cat demo.sh

#/bin/bash

i=40

while ((i>0))

do echo "$i" >> demo.txt

sleep 1

((i--))

done

(1)演示案例一:&與ctrl+c

[qinys@localhost 20200313]$ sh test.sh & # 後台執行指令碼

[1] 47930

[qinys@localhost 20200313]$ fg # 執行fg將指令碼放到前台執行

sh test.sh

^c # 按ctrl+c 停止執行指令碼

(2)演示案例二:fg與jobs、ctrl+z

[qinys@localhost 20200313]$ sh test.sh &

[1] 47982

[qinys@localhost 20200313]$ sh demo.sh &

[2] 47988

[qinys@localhost 20200313]$ jobs # 檢視正在執行的指令碼任務

[1]- running sh test.sh &

[2]+ running sh demo.sh &

[qinys@localhost 20200313]$ fg 2 # 使用fg加jobs輸出中任務編號調出對應編號的指令碼到前台執行

sh demo.sh

^z # ctrl + z 臨時暫停執行指令碼,臨時暫停的指令碼如果需要回覆執行,則先使用jobs檢視掛起的任務編號,然後使用【fg 任務編號】即可繼續執行

[2]+ stopped sh demo.sh

(3)演示案例三:kill

[qinys@localhost 20200313]$ sh test.sh &

[1] 48231

[qinys@localhost 20200313]$ sh demo.sh &

[2] 48239

[qinys@localhost 20200313]$ jobs

[1]- running sh test.sh &

[2]+ running sh demo.sh &

[qinys@localhost 20200313]$ kill %2 # 殺死任務

[qinys@localhost 20200313]$ jobs

[1]- running sh test.sh &

[2]+ terminated sh demo.sh

後台執行shell指令碼

執行方式 nohup sh export data.sh 20150102 20150102.log 2 1 1 29531 其中 0 1 2分別代表如下含義 0 stdin standard input 1 stdout standard output 2 stderr standard erro...

shell指令碼 後台執行命令

crontab at和nohup cron 系統排程程序。可以使用它在每天的非高峰負荷時間段執行作業,或在一周或一月 中的不同時段執行。at at命令。使用它在乙個特定的時間執行一些特殊的作業,或在晚一些的非負荷高峰時 間段或高峰負荷時間段執行。使用它在後台執行乙個占用時間不長的程序。nohup 使...

怎麼在後台執行shell指令碼

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