Cron 作业抛出错误“服务:找不到 [没有这样的文件或目录]”,但在终端脚本中手动执行时工作正常

Cron 作业抛出错误“服务:找不到 [没有这样的文件或目录]”,但在终端脚本中手动执行时工作正常

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 中运行脚本的用户下。

相关内容