Crontab无法识别命令

时间:2018-06-11 14:50:28

标签: linux bash cron

我有一个bash脚本,我想作为一个cron作业运行。 除了一个命令,它工作正常。 我重定向其stderr以获取错误,并发现它显示的错误是命令无法识别。 它是一个root crontab。 当我在终端中键入命令时,当前用户和root都成功执行命令。 当我通过终端运行它时,甚至脚本也会执行命令。

启动脚本:

#!/bin/bash
sudo macchanger -r enp2s0 > /dev/null
sudo /home/deadpool/.logkeys/logger.sh > /dev/null

logger.sh:

#!/bin/bash
dat="$(date)"
echo " " >> /home/deadpool/.logkeys/globallog.log 
echo $dat >> /home/deadpool/.logkeys/globallog.log
echo " " >> /home/deadpool/.logkeys/globallog.log
cat /home/deadpool/.logkeys/logfile.log >> /home/deadpool/.logkeys/globallog.log
cat /dev/null > /home/deadpool/.logkeys/logfile.log
cat /dev/null > /home/deadpool/.logkeys/error.log
logkeys --start --output /home/deadpool/.logkeys/logfile.log 2> /home/deadpool/.logkeys/error.log

error.log中

/home/deadpool/.logkeys/logger.sh: line 10: logkeys: command not found

1 个答案:

答案 0 :(得分:2)

请记住cron使用与您的用户帐户或root不同的环境运行,并且可能不会在其logkeys中包含PATH的路径。您应该在脚本中尝试logkeys的绝对路径(从用户那里找到which logkeys)。另外,我建议您查看this answer on serverfault关于运行脚本的信息,例如当您需要找出它为您工作而不是在工作中时为cron运行的脚本。