【发布时间】:2021-04-14 08:45:28
【问题描述】:
我正在编写一个通过永无止境循环运行的脚本。使用 cron 我在重新启动时启动脚本。但是,我需要每 24 小时从 github 更新此脚本。我正在运行一个基本上遵循以下内容的 shell 脚本:
- 将 cron 备份到 .txt 文件
- 使用 crontab -r 清空 cron
- 从 GitHub 拉取更新
- 加载 cron 备份并重新启动 cron。
shell 脚本清空 cron,更新代码,然后使用相同的文件名再次启动 cron,然后 cron 再次运行程序。每次脚本完成一个循环时,我都会通过向文本文件输出一条消息来测试这一点。当我在 GitHub 中更改消息输出时,cron 会拉取更新,我可以看到更新后的消息。问题是,它也继续显示旧消息。例如:
原消息“测试”:测试测试测试测试测试 更新消息“更新”:测试更新测试更新测试更新
即使我清除了 cron,更新了代码,然后再次启动它,它仍会继续输出旧消息。在我看来,简单地清空 cron 并不能阻止前一个循环继续运行。
我研究过使用“killall”来阻止所有 sh 脚本运行,但为了清除我创建的许多循环脚本,我使用 killall5 -9 杀死了每个正在运行的进程。现在当我输入 ps 查看正在运行的进程时,没有列出。
我很困。任何和所有的帮助将不胜感激!
【问题讨论】:
-
另外,您的“清空”和恢复 crontab,似乎您不了解典型的工作流程。你读过crontab-info 吗?也许你应该让你的项目在一台机器上运行,一次运行一个脚本,直到你能更好地控制事情。祝你好运。
标签: linux github cron raspberry-pi