向crontab添加作业的python代码无效
我编写了一个小型python脚本,用于自动将作业添加到crontab中,但通过脚本添加的作业不起作用,并且在手动操作时,该作业工作正常 代码如下: 权限 确保以root用户身份运行python脚本。我做了一些快速测试,其他用户无法访问他们的/var/spool/cron/crontab/$username文件。如果我没记错的话,这是故意的。您应该使用向crontab添加作业的python代码无效,python,crontab,Python,Crontab,我编写了一个小型python脚本,用于自动将作业添加到crontab中,但通过脚本添加的作业不起作用,并且在手动操作时,该作业工作正常 代码如下: 权限 确保以root用户身份运行python脚本。我做了一些快速测试,其他用户无法访问他们的/var/spool/cron/crontab/$username文件。如果我没记错的话,这是故意的。您应该使用crontab-e命令来编辑crontab sudo-python-editcron.py 实际上,您编写的Python并不是完全错误的。它打开文件
crontab-e
命令来编辑crontab
sudo-python-editcron.py
实际上,您编写的Python并不是完全错误的。它打开文件,添加字符串,然后关闭它。这里没有什么突破性的东西。我刚刚添加了一些文件系统检查,以确保您可以访问该文件
代码
来自man cron的注释:cron在其spool区域(/var/spool/cron/crontab)中搜索crontab文件(以中的帐户命名) /etc/passwd);找到的crontab已加载到内存中。请注意,此目录中的crontab不应为 直接访问-应使用crontab命令访问和更新它们
问题:。。。相同的工作时,手动工作罚款 我假设您在这里使用
crontab
搜索
python模块
或使用模块子流程。运行(…)
从.py中启动crontab
回来,把你的问题标记为已回答,如果这对你有用,或者评论为什么不
#!/usr/bin/python3
def scheduler(time=["*","*","*","*","*"],message="no message set"):
crontab_pointer=open('/var/spool/cron/crontabs/sky','a')
schedule_string="\n"+" ".join(time)+" "+message+"\n"
crontab_pointer.write(schedule_string)
crontab_pointer.close()
if __name__=="__main__":
scheduler(time=["52","18","*","*","*"],message="env DISPLAY=:0 /home/sky/scripts/notify2.sh")
import os
def scheduler(time=['*', '*', '*', '*', '*'], message='no message set', username='sky'):
crontab_fn = '/var/spool/cron/crontabs/{!s}'.format(username)
if not os.path.exists(crontab_fn):
raise StandardError("File {} missing".format(crontab_fn))
if not os.access(crontab_fn, os.W_OK):
raise StandardError("Cannot write to file, run as root")
crontab_fh = open(crontab_fn, 'a')
schedule_string = "\n{t:s} {m:s}\n".format(
t=' '.join(time),
m=message
)
crontab_fh.write(schedule_string)
crontab_fh.close()
if __name__ == "__main__":
time = ["52","18","*","*","*"]
message = "env DISPLAY=:0 /home/sky/scripts/notify2.sh"
scheduler(time, message)