Bah*_*ies 4 linux crontab raspberry-pi
我是Linux的新手,我在Raspberry Pi中一直在努力解决这个问题并且没有成功.
首先,我写了一个简单的脚本,/home/myfile.sh如下所示:
#!/bin/bash
clear
echo "hi"
Run Code Online (Sandbox Code Playgroud)
然后我做了sudo chmod 755 /home/myfile.sh授予权限.
最后我修改了crontab使用crontab -e:
# some comments ...
* * * * * /home/myfile.sh
Run Code Online (Sandbox Code Playgroud)
问题:
当我手动运行脚本时它工作正常但是当我在我的上面设置上面的行时crontab,什么都没发生.我究竟做错了什么?
尝试将输出重定向到这样的文件:
* * * * * /home/myfile.sh > output_file.txt
Run Code Online (Sandbox Code Playgroud)
你会看到它正在发挥作用.
Cron作业不会输出到您正在使用的同一终端.
编辑
如果您crontab -e用于计划作业,则使用的是用户特定的crontab.因此,您只能写入该用户的主目录(或他有权访问的其他目录).所以如果你修改你的cron作业:
* * * * * /home/myfile.sh > /home/<username>/output_file.txt
Run Code Online (Sandbox Code Playgroud)
您将看到输出已写入用户主目录下的该文件.
如果你想写入其他目录,我建议你使用系统范围的crontab /etc/crontab
顺便说一句,您可能希望为cron作业启用日志记录以跟踪问题.您需要编辑该/etc/rsyslog.conf or /etc/rsyslog.d/50-default.conf文件并确保取消注释以下行,如果缺少则添加它:
cron.* /var/log/cron.log
Run Code Online (Sandbox Code Playgroud)
然后重启rsyslog并cron:
sudo service rsyslog restart
sudo service cron restart
Run Code Online (Sandbox Code Playgroud)
现在你看看你的命令是否是由cron运行的.
为了展示我如何设法解决我的问题并希望帮助他人,我将其发布为我自己问题的答案:
我通过使用系统范围的 crontab ( /etc/crontab) 而不是每个用户的 crontab ( crontab -e)解决了这个问题。
为了澄清这一点,
/etc/crontab是系统范围的crontab。
的格式/etc/crontab是这样的:
# m h dom mon dow user command
* * * * * someuser echo 'foo'
Run Code Online (Sandbox Code Playgroud)
whilecrontab -e是每个用户'crontab'。
的格式crontab -e是这样的:
# m h dom mon dow command
* * * * * echo 'foo'
Run Code Online (Sandbox Code Playgroud)
请注意,在每个用户的 crontab 中没有“用户”字段。
| 归档时间: |
|
| 查看次数: |
10776 次 |
| 最近记录: |