Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
向crontab添加作业的python代码无效_Python_Crontab - Fatal编程技术网

向crontab添加作业的python代码无效

向crontab添加作业的python代码无效,python,crontab,Python,Crontab,我编写了一个小型python脚本,用于自动将作业添加到crontab中,但通过脚本添加的作业不起作用,并且在手动操作时,该作业工作正常 代码如下: 权限 确保以root用户身份运行python脚本。我做了一些快速测试,其他用户无法访问他们的/var/spool/cron/crontab/$username文件。如果我没记错的话,这是故意的。您应该使用crontab-e命令来编辑crontab sudo-python-editcron.py 实际上,您编写的Python并不是完全错误的。它打开文件

我编写了一个小型python脚本,用于自动将作业添加到crontab中,但通过脚本添加的作业不起作用,并且在手动操作时,该作业工作正常

代码如下:

权限 确保以root用户身份运行python脚本。我做了一些快速测试,其他用户无法访问他们的/var/spool/cron/crontab/$username文件。如果我没记错的话,这是故意的。您应该使用
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)