在 cronjob 中通过 bash 脚本运行 JAR

在 cronjob 中通过 bash 脚本运行 JAR

由于某种原因,我的 cronjob 无法运行:

4 20 * * * /home/ubuntu/db_backup/myScript.sh 1 > /home/ubuntu/db_backup/cron_log.txt

我的 bash 脚本如下所示:

#! /bin/bash
mysqldump -h anotherhost -P 3306 -u usen -pmypass --all-databases > $1.sql
java -jar myJar.jar param1 $1.sql

因此,jar 文件需要 2 个参数,我希望第一个参数始终相同,第二个参数来自第一个 bash 参数。在 /var/spool/mail/ubuntu 中,我看到此错误:

无法访问 jar 文件 myJar.jar

我在用户 ubuntu 下设置了 crontab

jar 文件的所有者和组是 ubuntu,并且具有八进制权限 700。

我究竟做错了什么?

答案1

尝试使用完整路径:

#! /bin/bash
mysqldump -h anotherhost -P 3306 -u usen -pmypass --all-databases > /path/$1.sql
java -jar /path/myJar.jar param1 /path/$1.sql

答案2

您应该使用绝对路径!我认为找不到 jar 文件和 sql 文件...

#! /bin/bash
SQLFILE=/path/to/file/$1.sql
mysqldump -h anotherhost -P 3306 -u usen -pmypass --all-databases > $SQLFILE
java -jar /path/to/myJar.jar param1 $SQLFILE

相关内容