使用 cron 运行 shell 脚本

使用 cron 运行 shell 脚本

我有这个FeedIndexer.sh

#!/bin/sh java -jar FeedIndexer.jar

只是为了运行与 位于同一目录中的 FeedIndexer.jar .sh,我想使用 crontab 运行它,因此我执行以下操作:

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user command
17 * * * * root    cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
01 01 * * * root run-parts --report /home/slosada/workspace/FeedIndexer/target/FeedIndexer.sh
#

但我不知道如何运行它。我犯了什么错误吗?

答案1

您不需要该run-parts部分。run-parts用于运行某个目录下的每个脚本,您只需运行一个脚本,该脚本由其cron本身处理。因此,这应该可以工作:

01 01 * * * root /home/slosada/workspace/FeedIndexer/target/FeedIndexer.sh

答案2

您是否尝试过使用个位数的小时和分钟字段:

1 1 * * * 

答案3

我将根据所有“它没有运行!”进行大胆猜测,该作业原本打算每小时执行一次,但这不是您所写的。

01 01 * * * root run-parts --report /home/slosada/workspace/FeedIndexer/target/FeedIndexer.sh

分钟和小时字段均为 1。这意味着当前小时为 1,分钟为 1 时,作业应运行,这仅在凌晨 1:01 发生。如果您希望作业每小时运行一次,请执行以下操作:

0 * * * * root run-parts --report /home/slosada/workspace/FeedIndexer/target/FeedIndexer.sh

每当当前分钟为 0 时,此命令就会运行,每小时自然发生一次

相关内容