我的 cronjob 在 Ubuntu Server 18.04 中不起作用。有人能帮我吗?这是我的 cron 代码:
#This code doesn't run
* * * * * root sh /home/jaka/scripts/serviceChecker.sh
#I have try this below but doesn't work too
* * * * * /home/jaka/sripts/serviceChecker.sh
#I have try the code below but also doesn't work
* * * * * sh /home/jaka/scripts/serviceChecker.sh
serviceCheker.sh 可执行且成功。但是当我尝试将其与 cronjob 一起使用时却不起作用。
以下是serviceChecker.sh代码:
#This code below is successful
dateTime=$(date +"%A, %b %d, %Y %H:%M:%S")
if ps ax | grep -v grep | grep mysql > /dev/null
then
echo "$dateTime MySql is running" >> logServiceStatus.txt
else
echo "$dateTime MySql is stopped" >> logServiceStatus.txt
sudo /opt/lampp/lampp startmysql
echo "$dateTime Mysql is running again" >> logServiceStatu.txt
#.................................(And so on)
我希望有人能帮助我或者给我答案。
答案1
我已经解决了这个问题。
因此,serviceChecker.sh 有 sudo 命令,问题是 crontab 无法询问 sudo 的密码。当您为这个 .sh 文件创建日志时,它会写入:
sudo: no tty present and no askpass program specified
我通过授予用户(用户名为 jaka)运行它的权限而不询问 sudo 密码来解决这个问题。怎么做?步骤如下:
sudo visudo
然后在 #includedir /etc/sudoers.d 下写入:
#includedir /etc/sudoers.d
username ALL=(ALL) NOPASSWD:ALL
例子
#includedir /etc/sudoers.d
jaka ALL=(ALL) NOPASSWD:ALL
它将 cronjob 的 sudo 设置为无需输入密码。