首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用shell脚本生成WAR文件

使用shell脚本生成WAR文件
EN

Stack Overflow用户
提问于 2016-03-07 15:07:09
回答 1查看 1.6K关注 0票数 0

计划是从webapp中使用的各种文件生成WAR文件,这样备份和恢复就更容易了。我使用crontab和每周运行的shell脚本。脚本首先使用jar -cvf向新位置生成WAR文件,然后对NAS进行rsync。这就是它的大致样子:

代码语言:javascript
复制
now=$(date +%Y%m%d)    
jar -cvf /rsyncsource/$now.war /opt/webappfolder
rsync -rsvp --log-file=log.txt /rsyncsource/ /nas/

我试着运行这个脚本,它按预期工作:创建WAR文件并与NAS同步。但是,当我将脚本添加到crontab以实现自动化时,不会生成WAR文件,只会发生rsync。

有人愿意给一个新手开个玩笑吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-07 18:30:15

失败的原因可能有很多。

cron守护进程的环境变量与登录shell不相同。

特别是用于定位命令的PATH变量可能不是您所期望的:例如,在这种情况下将找不到jar命令。

您能提供在cron守护进程运行脚本时生成的所有错误和输出吗?

如何调试由cron守护进程执行的脚本?

首先,将set -x添加到脚本中,以使bash生成跟踪消息:

代码语言:javascript
复制
$ cat /home/william/bin/script.sh
#!/bin/bash --
set -x
now=$(date +%Y%m%d)    
jar -cvf /rsyncsource/$now.war /opt/webappfolder
rsync -rsvp --log-file=log.txt /rsyncsource/ /nas/

解决方案1

默认情况下,错误输出和标准输出都会被收集并发送到当前用户邮箱的电子邮件中。在linux和UNIX上,所有登录都有自己的本地邮箱。以拥有crontab并键入mail的用户身份进行连接

代码语言:javascript
复制
$ crontab -l
* * * * * /home/william/bin/script.sh
$ mail

邮件命令提供了一个文本接口,使您能够列出和读取收到的电子邮件。有帮手。

解决方案2

编辑crontab并将输出重定向到磁盘上的文件

代码语言:javascript
复制
$ crontab -l
* * * * * /home/william/bin/script.sh 2>/tmp/script.out >&2

等待cron守护进程运行脚本并使用记录在/tmp/script.out文件中的信息进行调试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35847087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档