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