我正在通过运行java文件的Cron在ubuntu服务器上执行每日脚本。我希望它包含在if / else块中,这样如果java文件成功执行,它应该发送一条echo消息“successl”,如果失败,它应该发送一条echo消息“failed”。
以下是脚本updateGroupScores.sh
的现有行java -classpath "/home/ubuntu/live/build/WEB-INF/lib/*:/var/lib/tomcat7/lib/*:/home/ubuntu/live/build/WEB-INF/classes/" com.generalsentiment.update.UpdateGroupScores > /var/gs/livecron/crongroupsentimentscores.log
我想修改它们像 -
if (java file runs successfull)
then
echo "cron job successfull"
else
then
echo "cron job failed"
- 感谢
答案 0 :(得分:1)
假设你的Shell是Bash:
$?是包含上一个命令的返回码的变量(如果成功,则为0)
java -classpath "/home/ubuntu/live/build/WEB-INF/lib/*:/var/lib/tomcat7/lib/*:/home/ubuntu/live/build/WEB-INF/classes/" com.generalsentiment.update.UpdateGroupScores > /var/gs/livecron/crongroupsentimentscores.log
if [[ $? == 0 ]]
then
echo "cron job successful"
else
echo "cron job failed"
fi
所以你可以用以下方式拖尾执行的行或命令:&& echo“cron job successful”|| echo“cron job failed”
答案 1 :(得分:0)
如果您可以依赖Java命令的退出状态,那么只需写下:
C1="/home/ubuntu/live/build/WEB-INF/lib/*"
C2="/var/lib/tomcat7/lib/*:/home/ubuntu/live/build/WEB-INF/classes/"
LOG="/var/gs/livecron/crongroupsentimentscores.log"
if java -classpath "$C1:$C2" com.generalsentiment.update.UpdateGroupScores > "$LOG"
then echo "cron job successful"
else echo "cron job failed"
fi
请注意,输出将邮寄给您(至少在某些系统上),或丢失到/dev/null
。这些变量使得SO屏幕上的所有内容都更加合适;我也可能在常规脚本中使用它们,尽管这将是一个临界决定。
如果你不能依赖退出状态,你将不得不做其他事情来决定它是否成功,但无论如何,一般原则都是一样的。