我有两个脚本:
### firstScript.sh ###
trap 'kill $pid;' SIGINT
for ((i=1; i<=10; i++))
do
echo "$i x $1 = `expr $i \* $1`"
sleep 10 &
pid=$!
wait $!
done
和
### secondScript.sh ###
./firstScript.sh 5 &
pid=$!
echo $pid
ps
for (( i=0; i<8; i++))
do
kill -2 $pid
sleep 3
done
第二个脚本将在后台模式下调用第一个脚本,并每隔3秒向它发送一个SIGINT信号。但是,它根本不起作用。
我尝试使用./firstScript.sh 5 &
在后台运行第一个脚本并发送一个kill -2 %1
或kill -2 <pid>
的信号(在创建第一个脚本后已经通过了pid)并且它们都工作了细
但是,我不能通过剧本来做。
感谢任何帮助。
答案 0 :(得分:2)
如果您希望按照您想要的方式使其工作,请使用其他信号,例如SIGUSR1:
### firstScript.sh ###
trap 'kill $pid;' SIGUSR1
for ((i=1; i<=10; i++))
do
echo "$i x $1 = `expr $i \* $1`"
sleep 10 &
pid=$!
wait $!
done
和
### secondScript.sh ###
./firstScript.sh 5 &
pid=$!
echo $pid
ps
for (( i=0; i<8; i++))
do
kill -USR1 $pid
sleep 3
done
我花了一些时间试图找出为什么SIGINT的行为方式,但还未能实现。