![Cron 作业抛出错误“服务:找不到 [没有这样的文件或目录]”,但在终端脚本中手动执行时工作正常](https://linux22.com/image/99078/Cron%20%E4%BD%9C%E4%B8%9A%E6%8A%9B%E5%87%BA%E9%94%99%E8%AF%AF%E2%80%9C%E6%9C%8D%E5%8A%A1%EF%BC%9A%E6%89%BE%E4%B8%8D%E5%88%B0%20%5B%E6%B2%A1%E6%9C%89%E8%BF%99%E6%A0%B7%E7%9A%84%E6%96%87%E4%BB%B6%E6%88%96%E7%9B%AE%E5%BD%95%5D%E2%80%9D%EF%BC%8C%E4%BD%86%E5%9C%A8%E7%BB%88%E7%AB%AF%E8%84%9A%E6%9C%AC%E4%B8%AD%E6%89%8B%E5%8A%A8%E6%89%A7%E8%A1%8C%E6%97%B6%E5%B7%A5%E4%BD%9C%E6%AD%A3%E5%B8%B8.png)
service jbossas status
->命令将检查jbossas状态
jbossas(PID) 正在运行(如果 jbossas 正在运行)
jbossas 已停止(如果 jbossas 已停止)
#!/bin/ksh
#set -x
OUT_LOG="$1"
stus=$(service jbossas status)
var=$(ps -ef | grep -i '[/]jboss')
hname=$(hostname)
if [ -z "$var" ]; then
echo "service jbossas status" >>$OUT_LOG
echo "$stus" >>$OUT_LOG
mail -s "Please check for possbile impact $(stus)" [email protected] << $OUT_LOG
else
echo "'$stus'"
fi
注意:JBOSS 进程未在服务器上运行,因此操作将是 jboss 已停止。
如果我在 shell 中手动执行脚本(黑屏 cmd 提示符)
./jboss_status.ksh
我收到主题如下的邮件,脚本运行良好
“请检查 jbossas 是否停止可能产生的影响”
但是当我在 cron 中安排它时
* * * * * /aaa/jboss_status.ksh > /aaa/jboss_status.ksh.error 2>&1
我收到以下主题的邮件“请检查可能的影响”注意:“jbossas 已停止”未打印在主题末尾
在 cron 创建的错误文件中出现以下错误
/aaa/jboss_status.ksh[20]: service: not found [No such file or directory]
该脚本在 cron 中执行良好,但返回的输出
command : service jbossas status
op: jboss stopped
没有打印在主题中
答案1
您可能需要在脚本顶部获取 bash_profile 或 bash_rc
在Ubuntu上
source /home/<user>/.bash_profile
一些其他的linux
source /home/<user>/.bash_rc
答案2
您是否检查了运行 cron 的用户的 PATH 变量,它应该具有所使用的脚本或其依赖项的路径。比较路径:
echo $PATH
在手动运行脚本的用户下,以及在 cron 中运行脚本的用户下。