我正在对我调用的脚本进行一些测试flock
,但遇到了一些我不明白的事情。pkill
test.sh
cron
被test.sh
安排为* * * * *
cron 中的作业。它是一个非常简单的脚本,用于测试目的将时间戳写入文件,然后休眠 5 分钟。这是为了确认flock
运行良好并防止同一脚本出现多个进程。
这部分运行良好,因为我每 5 分钟只看到一个时间戳显示,尽管test.sh
计划每分钟运行一次。
现在作为一项额外的安全措施,我想杀死test.sh
(因为我实际想要使用的脚本有时似乎会使用 AWS CLI 将一些文件同步到 S3 挂起)
所以我认为pkill
这将是最简单的,因为它不需要对我现有的脚本进行任何修改。
如果我运行pkill -9 -f test.sh
它说进程被杀死。运行ps aux | grep test.sh
我确实看不到任何test.sh
进程了。
但是,正如每分钟cron
所应该的那样test.sh
,我希望在终止该进程后,它会在不到一分钟后重新开始。
但是,在睡眠期结束之前,脚本似乎实际上并没有重新启动。
所以脚本最初运行在例如12:00
,睡眠将持续到12:05
。如果我杀死脚本,12:02
我希望它再次运行,12:03
但它实际上并没有再次运行,直到12:05
它与睡眠周期内联。
为什么会这样?另外,如果pkill
不推荐,有没有其他方法可以在一定时间后杀死我的进程?最好不必编辑原始脚本。