我正在尝试编写一个非常基本的 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
已弃用。您应该launchctl
与launchd
(手册页在这里) 反而。
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