Cron 作业未保存

Cron 作业未保存

我正在尝试编写一个非常基本的 cron 作业,但它似乎没有节省。这是我所做的:

1)crontab -e

这将使用 vim 打开一个文件。

2)

#!usr/bin/env python

0 23 * * 0 ~/Desktop/SquashScraper/helpfulFunctions.py

3):wq

4)crontab-l

什么也没有出现,我收到以下消息:

crontab: no crontab for ben 

我环顾四周,大多数有类似问题的人都遇到了编辑器问题。我的 crontab 用 vim 正确打开,所以这似乎不是问题。

知道为什么这可能无法正常工作/保存吗?

谢谢,克莱曼

编辑以包括: 在此输入图像描述

答案1

由于某种原因,/usr/bin/vi无法在您的计算机上正常工作,您可以从错误消息中看出:

crontab: "/usr/bin/vi" exited with status 1

那里发生的事情是,当您离开时,vi它会产生错误代码。当crontab看到vi退出时出现错误代码时,它不会信任vi正在编辑的文件的内容,并且不会对 crontab 进行任何更改。

您可以尝试进一步调查为什么vi不起作用,或者如果您愿意,您可以使用完全不同的编辑器。例如,如果您更喜欢使用vim,您可以输入:

EDITOR=/usr/bin/vim crontab -e

或者,您可以将 crontab 的“官方”版本保留在您的主目录下。然后编辑主目录下的版本,最后使用以下命令安装它:

crontab filename

答案2

根据您的系统,用户 crontab 保存在/var/spool/cron/.检查你是否有这个目录。另外,crontab 程序是 setuid,因此您无法读取其他人的 crontab,因此请检查此(-rws...):

$ ls -l /bin/crontab
-rwsr-xr-x 1 root root 57536 Sep 18  2014 /bin/crontab

你的 vim 似乎退出并显示错误代码。尝试将您的条目放入文件“myfile”中,然后使用它crontab myfile来安装它。您可能会收到更有意义的错误消息。

另外,要运行 crontab,您可能需要该文件/etc/cron.deny存在(通常为空)。如果没有,我会收到一条错误消息。

你的 #!正如@G-Man 在评论中所说,线路将无法工作。你需要类似的东西

0 23 * * 0 python ~/Desktop/SquashScraper/helpfulFunctions.py

答案3

我不会在这里回答原来的问题,但如果你想安排任务Mac 操作系统 10.9+cron你这样做是错的:crontab已弃用。您应该launchctllaunchd(手册页在这里) 反而。

launchd/与描述每个任务的文件launchctl一起使用.plist,类似于将systemd/systemctl.service文件一起使用的方式。一开始它可能会令人不安,但它实际上很容易使用,尽管它不如使用cron单个crontab -e.

幸运的是,有很多 GUI 软件可以launchd轻松管理任务。我个人最喜欢的是发射控制由索玛区提供。价格是 10 美元,但你可以无限制地下载和使用他们的软件。


无论如何,就您的情况而言,您的~/Library/LaunchAgents/HelpfulFunctionsJob.plist文件应如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>HelpfulFunctions.job</string>
    <key>Program</key>
    <string>/Users/bclayman/Desktop/SquashScraper/helpfulFunctions.py</string>
    <key>RunAtLoad</key>
    <true/>
    <key>StartCalendarInterval</key>
    <dict>
        <key>Hour</key>
        <integer>23</integer>
        <key>Minute</key>
        <integer>0</integer>
        <key>Weekday</key>
        <integer>7</integer>
    </dict>
</dict>
</plist>

只需确保更改<string>/Users/bclayman/Desktop/SquashScraper/helpfulFunctions.py</string>为您的实际路径,然后加载作业:

launchctl load -w ~/Library/LaunchAgents/HelpfulFunctionsJob.plist

相关内容