我正在尝试与我的用户(用户)一起执行我的 cron 作业。
cron 作业安装没有问题,只要我执行它,脚本就可以正常工作。它是可执行的,我有标志bash
来表明它是一个 bash 脚本。
crontab -e
我通过运行以身份登录来创建脚本user
。
为了测试目的,我将每分钟运行一次该脚本,但最终将其更改为 10 分钟。
我的 cronjob 应该运行我的脚本,该脚本每 10 分钟 ping 一次 Google 服务器并创建日志,这样我就可以知道我的设备是否曾经失去互联网连接以跟踪问题。我有另一个脚本,它每天移动日志文件,然后用日期记录它,然后这个脚本应该创建另一个日志文件。目前,它没有用这个 cronjob 创建文件,也没有在我运行脚本后更新文件。
我的计划任务
*/1 * * * * bash /home/user/ping_scripts/ping-test.sh
我的脚本
#!/bin/bash
if [ "$(id -u)" != "0" ]; then
exec sudo "$0" "$@"
fi
if [ ! -e /var/log/ping.log ];then
touch /var/log/ping.log
fi
ping -q -c5 google.com > /dev/null
if [ $? -eq 0 ];then
echo -e "[$(date)] \t\t google ping successful" >> /var/log/ping.log
else
echo -e "[$(date)] \t\t google ping failed" >> /var/log/ping.log
fi
我已阅读了其他一些解决方案,但没有一个能够解决我的错误。
(我无法描述我的帖子有何不同,除了它只是一个问题,一个我在浏览过程中找不到答案的问题 为什么 crontab 脚本不起作用?这是针对 cron 特有的错误,解决方案实际上并不是 cron 独有的。它与我的脚本有更多关系。要获得答案,请参考下面选中的答案。)
答案1
我的问题是我的用户不是sudoer
。
可以通过将用户添加到/etc/sudoers
文件或添加 cron 作业来解决此问题root
。
sudo su
crontab -e
并将 cron 任务放在那里
答案2
尝试将 cronjob 设置为
* 1 * * * cd /home/user/ping_scripts/ && ./ping-test.sh
并确保该脚本是可执行的