2016-09-23 12 views
0

これは背景スクリプトテストです。自己複製の背景スクリプト

実行すると、2つのプロセスが起動しますが、理由はわかりません。

睡眠の後で1つのストップ20.そして他の忘れている。

#!/bin/bash 

back(){ 
    n=0 
    while [ 1 ] 
    do  
     echo $n 
     n=$(($n+1)) 
     sleep 5 
    done 
} 

back & 
sleep 20 
exit 

コマンド呼び出しで "PSの-a":

PID TTY  TIME  CMD 
8964 pts/2 00:00:00 backgroundtest 
8965 pts/2 00:00:00 backgroundtest 
8966 pts/2 00:00:00 sleep 
8982 pts/2 00:00:00 sleep 

後の睡眠20:

PID TTY  TIME  CMD 
8965 pts/2 00:00:00 backgroundtest 
9268 pts/2 00:00:00 sleep 

その後、永遠に実行...

なぜですか?

答えて

0

while [ 1 ]は無限ループです。 [ 1 ]は常にtrueです。

のでback &が無限ループである、(&)バックグラウンドで起動、実行は(&がバックグラウンドで新しいプロセスを開始します)は20秒のための2つのプロセスであなたを残して、20秒後に終了をしている、sleep 20を続行、それから無限のもの。

関連する問題