無限ループでジョブを終了する方法

無限ループでジョブを終了する方法

df.shというシェルスクリプトを作成しました。

#!/bin/sh
while true ; do 
df -hT
sleep 30
done &

次に実行します./df.sh(実行権限を付与します)。

実行後にループを終了したいが終了できません。

答え1

使用

$ pkill -f df.sh

sleep 30その後、スクリプトに終了信号が送信され、現在の呼び出しが完了するとすぐにスクリプトが終了します。

または、psスクリプトのプロセスIDを見つけて終了信号を送信するために使用します。

$ ps

$ kill pid

pidリストされたスクリプトの整数プロセスIDはどこにありますかps?)

答え2

まず、これが脆弱性スクリプトの場合は、&終了ではなくスクリプトを呼び出すときに使用することをお勧めしますwhile

./df.sh &

kill終了シグナルを送信することをお勧めします。または、プロセスを使用またはインポートした後にkill -9プロセスがpid応答しない場合は、使用可能な終了信号を送信します。psgreppgreppkillしかし、df.sh、注意してください。複数回実行するとすべてのプロセスが呼び出され、pkill -f一緒に使用するとdf.shパターンに一致するすべてのプロセスが終了します。

関連情報