我是大笨蛋,没有grok cron,请你修复大脑。
在pi主目录中,我输入:
crontab -e
在文件的底部我添加一行:
*/5 * * * * date "+(0 6) %H:%M %Z" >> /home/pi/scripts/scripts.log
根据我在网上喋喋不休地阅读其他地方的说明;我认为系统日期每五分钟将打印到scripts.log。我之后添加了一个空行,保存并退出nano,并收到消息" crontab:安装新的crontab"。
我等了,什么都没发生。我进入了raspi-config
,设置了时区,然后重新启动,但这并不重要,因为它应该每5分钟运行一次,而不是在特定时间运行。是的,我在第三次尝试后创建了一个脚本目录......但仍然没有。命令行没有输出,脚本目录中没有输出,没有错误消息。
很抱歉重新讨论以前的内容,但我所阅读的内容都是针对某些特定项目的,我还不知道如何分离出来的信息I& #39;我正在寻找。我只想要一些东西,任何东西,使用cron工作,然后我会考虑下一件事情搞砸了。
我非常感激,还有一个向你买啤酒的空洞承诺。
编辑:感谢您推荐给另一个主题,但现在我感到更加困惑。我应该运行什么剧本?命令必须是某个文件的一部分,而不是直接执行,就好像它们在命令行上输入一样? (我希望这是有道理的。)以env >/tmp/test.sh.dummy
开头的行是否应该在带有date命令的脚本文件中,或者是crontab文件的一部分?
编辑2:好的,所以我在网上流了几个小时的RTFM,现在我明白cron只运行脚本。我假设它是一种批处理文件,我正在努力工作,"命令行将在命令行输入并以相同方式执行。
让我们忘记那该死的" date"事情,我只想让这个工作。我已在命令行输入:
echo "This is a test."
这就像我预期的那样奏效。然后我在pi目录的scripts目录中创建了一个shell文件,名为firstscript.sh。内容如下:
#!/bin/bash
echo "This is a test."
在命令行中,我输入了:
sudo chmod +x /home/pi/scripts/firstscript.sh
在cron表格中,我已进入该行:
* */2 * * * /home/pi/scripts/firstscript.sh
......最后带回车。这是在所有注释行之后。文件开头没有#!
(hashbang?),所以我没有添加一个。保存此信息,得到了回复crontab: installing new crontab.
如果我理解正确,它应该每两分钟运行一次。等了10分钟。重新启动,等待另一个10.尝试相同,将crontab行中的命令更改为./firstscript.sh
。 Bupkus。
原谅这种长篇大论,我只是不清楚知道哪些细节是相关的。
答案 0 :(得分:1)
我大笨蛋ekspurt,请求我修复自己的大脑。
我只知道问题所在。我以前甚至看过这个,当我再次看到它时,我真的应该认识到这个问题。
引用crontab(5)
手册页:
命令中的百分号(
%
),除非使用反斜杠(\
)进行转义, 将更改为换行符,以及第一个后的所有数据%
将作为标准输入发送到命令。
%
命令的参数中的date
字符被cron
守护程序拦截,并更改为换行符。这会创建一个无效的命令。你需要改变这个:
*/5 * * * * date "+(0 6) %H:%M %Z" >> /home/pi/scripts/scripts.log
到此:
*/5 * * * * date "+(0 6) \%H:\%M \%Z" >> /home/pi/scripts/scripts.log
它应该有用。
正如我之前在评论中提到的,crontab
行中的命令不需要是shell脚本。它可以是您可以从shell提示符执行的任何命令,除了它在受限制的环境中运行。但在某些情况下,包括这一个,您必须知道cron
将在将命令传递给/bin/sh
之前处理命令本身。
使用执行相同操作的shell脚本替换date
命令会有效(只要脚本名称不包含任何%
个字符),但这不是必需的。
答案 1 :(得分:0)
您可以通过Google执行以下步骤:
<小时/> 编辑: