计划是从webapp中使用的各种文件生成WAR文件,这样备份和恢复就更容易了。我使用crontab和每周运行的shell脚本。脚本首先使用jar -cvf向新位置生成WAR文件,然后对NAS进行rsync。这就是它的大致样子:
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。
有人愿意给一个新手开个玩笑吗?谢谢!
发布于 2016-03-07 18:30:15
失败的原因可能有很多。
cron守护进程的环境变量与登录shell不相同。
特别是用于定位命令的PATH变量可能不是您所期望的:例如,在这种情况下将找不到jar命令。
您能提供在cron守护进程运行脚本时生成的所有错误和输出吗?
如何调试由cron守护进程执行的脚本?
首先,将set -x添加到脚本中,以使bash生成跟踪消息:
$ 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的用户身份进行连接
$ crontab -l
* * * * * /home/william/bin/script.sh
$ mail邮件命令提供了一个文本接口,使您能够列出和读取收到的电子邮件。有帮手。
解决方案2
编辑crontab并将输出重定向到磁盘上的文件
$ crontab -l
* * * * * /home/william/bin/script.sh 2>/tmp/script.out >&2等待cron守护进程运行脚本并使用记录在/tmp/script.out文件中的信息进行调试。
https://stackoverflow.com/questions/35847087
复制相似问题