我正在对我调用的脚本进行一些测试flock,但遇到了一些我不明白的事情。pkilltest.shcron
被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不推荐,有没有其他方法可以在一定时间后杀死我的进程?最好不必编辑原始脚本。