私は Unix クラスの Bash を学んでおり、スクリプトを実行する方法を理解しようとしています。次に、最初のスクリプトの実行中に 2 番目のスクリプトを実行し、2 つのスクリプトを相互作用させます。明確にするために、スクリプトは次のようになります。
#!/bin/bash
num = 1
trap exit 0 SIGINT SIGTERM
trap "{ echo &num ; num++; }" SIGUSR1
while :
do
sleep 2
done
そして2番目のもの:
#!/bin/bash
if ps | grep "$1" > /dev/null
then
kill -SIGUSR1 $1
else
echo "Process doesn't exist"
fi
exit 0
コードが正しくない場合の一般的な考え方は、最初のスクリプトが SIGINT または SIGTERM を受信するまでループし、SIGUSR1 を受信するたびに数値をエコーしてインクリメントすることです。2 番目のスクリプトは、pid を引数として取り、それが存在するかどうかをチェックし、指定されたプロセスに SIGUSR1 を送信します。問題は、最初のスクリプトを実行すると、ctrl-z でバックグラウンドに移動しない限り何もできないことですが、そこにある場合、kill シグナル以外のシグナルに応答しないようです。これを機能させる方法についてのアイデアはありますか?