Modifying a crontab from a cron job
我有一个以多种模式运行的Python脚本。其中一种模式监视某些文件,如果这些文件已被修改,脚本将恢复它们。我这样做的方法是每分钟通过cron运行脚本。
存在另一个cron作业(实际上是使用不同的参数调用相同的脚本),以便在计划的时间结束后从crontab中删除脚本。最初,我试图在/etc/cron.d中使用crontab。如果在命令行上执行,脚本的行为与预期相同,但在从cron运行时不编辑crontab。
然后我切换到编写一个临时文件并从脚本执行crontab tempfile(通过subprocess.Popen)。这也不起作用,因为根本没有创建crontab。从命令行执行crontab tempfile并使用脚本创建的临时文件按预期工作。
我不能使用python-crontab库,因为这是一个商业项目,该库是GPLed。
cron是否有任何固有的局限性阻止这两种方法的运行?
-
我从来没有遇到cronjobs无法修改cronjobs / cron配置文件的问题,只要它们以具有正确权限的用户身份运行即可。您可能希望让该进程记录一些调试信息,或者可能是您的"文件恢复器"将crontab配置恢复到原来的位置......
-
我特别确保文件恢复器不会触及crontab。另外,正如我所说,一切都按照命令行的预期工作。
-
使用env -i andthenyourcommand一切都按预期工作吗?因为否则我引用你的第一条评论:cronjobs不限于编辑crontab配置,不要在那里查找错误。
-
嗯,原来是两个cron作业同时启动并试图获得相同的PID锁定。解决了解决问题的方法。 @Wrikken:如果你发表你的评论作为答案,我会接受它。
-
我可以发布作为答案,但由于作为修复的环境都是狭隘的并且完全依赖于代码,并且通常不适用,我宁愿将问题保留为"一般不适用"并留在那里,让它自然而然地消失。其他人唯一可以接受的是:"是的,cronjobs可以改变cronjobs",这是一个通常没有问过的问题的答案,并且在一个最小的测试案例中很容易验证(这里的问题是实际的脚本是详细说明(锁定等)来验证这个简单的问题)。
GPL不是反商业的。 python-crontab可用于商业产品和服务。 您必须遵循复制左边的规则,声明实际代码本身不能被专有。 您可以随意出售,作为作者,我鼓励您从我的工作中赚钱。
除了那个错误,它看起来不像你的问题需要python-crontab。 您可以自己打开文件,如果这不起作用,那么无论如何它永远不会与python-crontab一起使用。
-
感谢您对GPL点的区分。
-
我知道GPL的限制,因为这是一个闭源项目,我希望遵守GPL :)
-
Chinmay - 这是一个光荣的决定。 只需要提供/ actual /代码。 Python库未编译,因此不会影响产品许可证的其余部分。 如果您更改/ my / code,请告诉我。
-
Python代码将使用PyInstaller或类似的东西进行"编译"/封装。 此外,虽然代码很容易获得,但我宁愿遵守GPL的精神而不是信件。 如果我不希望用户看到代码(如果我正在采取措施来确保这一点),无论用户是否可以,我都不想使用GPL许可代码。