我有两个需要异步执行的长时间运行的函数。为简单起见,假设一个函数每 10 秒向客户端发送一次邮件,而其他日志文本文件每两秒发送一次。
我不能使用 cron 作业来执行此操作。一切都必须在一个脚本中。因此,我使用了无限循环和睡眠来&
实现异步行为。
用于'pkill -P $$' SIGINT SIGTERM
在用户点击时捕获以结束所有子进程(结束程序),CTRL+Z (SIGINT)
但这不起作用。即使按下 ,它也会再次开始执行脚本CTRL+Z
。
如何让用户能够通过从同一终端单击键盘来结束程序?
注意:在用户手动停止程序之前,这两个功能永远不会结束。
echo "Press: CTRL+Z to Close program"
trap 'pkill -P $$' SIGINT SIGTERM
first_fun()
{
while :; do
echo "send Mail every 10 seconds"
sleep 10
done
}
second_fun()
{
while :; do
echo "log text file every 2 seconds"
sleep 2
done
}
first_fun &
second_fun &