Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.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未按脚本注册更改_Cron_Subprocess_Macos Sierra - Fatal编程技术网

Crontab未按脚本注册更改

Crontab未按脚本注册更改,cron,subprocess,macos-sierra,Cron,Subprocess,Macos Sierra,我正在使用python子流程对crontab进行更改,具体使用: subprocess.Popen(["crontab", cron_tab_file]) 这一切都很好,当我使用crontab-l检查crontab时,cron\u tab\u文件中的所有内容都在那里。然而,什么也没有发生 我始终使用完整路径,例如: * * * * * /bin/bash /full/path/to/test.sh 但是,如果我使用crontab-e再次从终端保存crontab,而不实际更改任何内容,cron

我正在使用python
子流程
crontab
进行更改,具体使用:

subprocess.Popen(["crontab", cron_tab_file])
这一切都很好,当我使用
crontab-l
检查crontab时,
cron\u tab\u文件中的所有内容都在那里。然而,什么也没有发生

我始终使用完整路径,例如:

* * * * * /bin/bash /full/path/to/test.sh
但是,如果我使用
crontab-e
再次从终端保存crontab,而不实际更改任何内容,crontab会突然变为活动状态并开始运行其中的命令。我不明白,cron不应该在不需要手动更新的情况下通过crontab中的内容运行吗?我用的是MacOS Sierra。这种cron行为困扰着我,我在网上任何地方都找不到解决方案或解释。我做了多次尝试,每次用python脚本编辑都不起作用,如果我通过手动保存来更改它,它会突然起作用

补充资料


我用sudo权限检查了
/usr/lib/cron/tabs
,我的cron文件总是被更改,无论是由我还是由脚本更改。但是,如果是脚本更改了它,那么更改将不会运行。如果我手动编辑,则会显示消息
crontab:installingnewcrontab
,并运行新命令。是否有命令强制cron安装新的crontab?

我刚刚发现了一个非常糟糕的解决方法

def activate_cron():
    execute = subprocess.Popen(["echo", "\033:wq\n"], stdout=subprocess.PIPE)
    activate = subprocess.Popen(["crontab", "-e"], stdin=execute.stdout)
    # Wait for crontab to save
    time.sleep(5)
    activate.kill()
这将输出
crontab:installing new crontab
,并最终激活我的分钟任务