如何使用 cron 作业执行 ConnectAll 应用程序重启脚本

如何使用 cron 作业执行 ConnectAll 应用程序重启脚本

您能否指导我以下内容,

添加 ConnectAll 应用程序重启脚本以供参考:

#!/bin/sh -e
# JIRA startup script
#chkconfig: 2345 80 05
#description: JIRA

# Define some variables
# Name of app ( JIRA, Confluence, etc )
APP=connectall
APP1=Mule
# Name of the user to run as
USER=root
# Location of application's bin directory
BASE=/mulesoft/connectall/CATomcat/bin
#BASEMule=/mulesoft/connectall/mulesoft/mule-standalone-3.9.0
# Location of Java JDK
export JAVA_HOME=/usr/jdk1.8.0_171


case "$1" in

 # Stop command
  stop)
    #echo "Stopping $APP"
    #/bin/su -m $USER -c "$BASE/shutdown.sh &> /dev/null"
    #echo "$APP stopped successfully"


    echo "Stopping $APP1"
    /bin/su -m $USER -c "/mulesoft/connectall/mulesoft/mule-standalone-3.9.0/bin/mule stop &> /dev/null"
    echo "$APP1 stopped successfully"

    echo "Stopping $APP"
    /bin/su -m $USER -c "$BASE/shutdown.sh &> /dev/null"
    echo "$APP stopped successfully"
    ;;

  # Start command
  start)
    echo "Starting $APP"
    /bin/su -m $USER -c "$BASE/startup.sh &> /dev/null"
    echo "$APP started successfully"

     echo "Starting $APP1"
    /bin/su -m $USER -c "/mulesoft/connectall/mulesoft/mule-standalone-3.9.0/bin/mule start &> /dev/null"
    echo "$APP1 started successfully"

    ;;
  # Stop command
 # stop)
  #  echo "Stopping $APP"
   # /bin/su -m $USER -c "$BASE/bin/shutdown.sh &> /dev/null"
    #echo "$APP stopped successfully"
    #;;
   #Restart command
   restart)
        $0 stop
        sleep 60
        $0 start
        ;;
  *)
 echo "Usage: /etc/init.d/$APP restart}"
  exit 1
   ;;
esac

上述脚本的名称为 connectall-auto-restart,位于 /mulesoft 位置(这是一个外部挂载)。因此,当我使用 ./connectall-auto-restart restart 从位置 /mulesoft 手动执行脚本时,应用程序可以正常重新启动。

但是当我在如下所示的 cron 作业中配置相同内容时

30 08 1-7 * 6 /mulesoft/connectall-auto-restart
30 08 17-23 * 6 /mulesoft/connectall-auto-restart

cron 准时运行,但 cron 不会启动脚本。(这意味着 cron 触发了作业,但我的应用程序没有重新启动)。

root@balqmu101:/var/log# cat syslog | grep connectall-auto-restart
Sep 18 08:30:01 balqmu101 CRON[3232401]: (root) CMD (/mulesoft/connectall-auto-restart)

我也尝试了以下方法,但同样无效。

30 08 1-7 * 6 /mulesoft/connectall-auto-restart restart
30 08 17-23 * 6 /mulesoft/connectall-auto-restart restart

问候 Aravind Viswanathan

答案1

通过 运行的作业cron,或者systemd启动脚本不会在与桌面相同的运行时环境中运行。systemd启动脚本以 运行root。您的任何PATH更改或其他环境变量设置都不会~/.bashrc自动传播到您的cron作业。例如,没有$DISPLAY,因此 GUI 程序需要特殊处理(阅读man xhost)。

cron人们可以在crontab文件 Read中为所有作业设置环境变量man 5 crontab

echo "=== id ===";id;echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";alias查看每个环境中的结果 。

由于command该行的一部分crontab默认由 解释/bin/sh,其语法比 更简单/bin/bash,因此我建议command调用一个bash脚本(可执行、已安装、以 开头#!/bin/bash)来设置环境,然后调用所需的程序。

相关内容