我有如下脚本,我正尝试将其作为 root cron 作业运行。该脚本启动 mycommand,然后启动另一个进程。当满足条件时,我希望脚本在退出之前终止 mycommand 及其子进程。现在,这似乎在终端上起作用,子进程在满足条件时结束。但是当脚本作为 root cron 作业启动时,mycommand 会继续运行,直到我手动终止它。我做错了什么?
#!/bin/bash
# function to trap and clean exit
function clean_exit
{
PGID=`ps xao pgid,command,pid | grep 'mycommand'| sed 's/ .*//'`
kill -9 -$PGID
echo "process group killed: "$PGID
}
trap clean_exit SIGINT SIGTERM EXIT
sudo mycommand $1 > output.txt &
while sleep 1; do
# check output.txt every second
if [ condition met]; then
exit 1;
fi;
done
crontab行如下:
30 10 * * * bash path/to/myscript.sh