为什么 Cronjob 在 Ubuntu 18.04 中不起作用?

为什么 Cronjob 在 Ubuntu 18.04 中不起作用?

我的 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 设置为无需输入密码。

相关内容