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

时间:2013-10-10 11:50:17

标签: java shell solaris 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 个答案:

答案 0 :(得分:1)

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

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

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

3)您还应该更喜欢所有脚本和命令的完整路径:
    在/ usr / bin中/ pkill的
    /path/MonitorExt.sh
...