shell 脚本在手动执行时运行,但在 crontab 中途执行



我有一个在 solaris 服务器上运行的 java 服务。我需要终止此服务并每晚在指定时间重新启动它。因此,我设置了一个 cron 作业来做同样的事情。当我通过命令行手动执行脚本时,我的脚本工作正常。但是当我将其设置为 cron 作业时,它只执行了一半,即它只杀死进程但不启动它。请协助我。以下是详细信息:

重新启动脚本:

#!/bin/sh
pkill -u peri java 2>> /dev/null
sleep 3
cd /opt/home/peri/utils/jsb
. /opt/home/peri/utils/jsb/pjsb.new
sleep 3
cd /opt/jar
MonitorExt.sh & > /dev/null

在这里,pkill正在扼杀Java进程。脚本 pjsb.new 是用于启动 java 进程的脚本。此外,还有一个脚本 MonitorExt.sh 用于启动另一个 Java 进程。

任何帮助都非常感激!!!提前致谢

1(在用户'root'下,检查/var/cron/log中的一些cron错误消息

2(通常当命令/脚本手动运行良好但不在cron作业中运行时,这是因为某些环境变量未在cronjob上下文中设置。因此,您应该确保在默认 shell 中自动设置的所有必要环境变量($HOME、$JAVA、...(在 cron 作业中运行时实际设置。

我通常在脚本内部或 cronjob 行中调用配置文件脚本:
15 17 * * * .$HOME/.profile && $HOME/script.sh

3(您还应该首选所有脚本和命令的完整路径:
/usr/bin/pkill
/path/MonitorExt.sh
...

相关内容

最新更新