最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

每日播报!定时任务的路径问题

来源:博客园


(资料图片)

定时任务的路径问题

背景

设置一个cron定时任务,定时执行一个sh脚本,脚本执行一个jar包中的程序,发现jar包的日志输出路径错误。记录一下

cron定时任务

crontab -e # 编辑当前用户的定时任务*/1 * * * * /xxx/xxx/test.sh # 设置为1分钟执行一次,这个路径的脚本。保存修改并退出。该脚本需要提前提升为可执行权限。# 通过如下命令查看是否执行成功cat /var/logs/corn # 通过这个命令可以看到是否执行了

结果发现,定时任务调用脚本执行了,但是脚本调用jar包,执行失败了。

通过网上搜索,发现失败原因如下:

  • 当以root账户设置cron定时任务时,默认的执行路径是在/root下。如果是其他用户,则在/用户目录下。
  • 脚本中都是以相对路径,写的 java -jar xxx.jar所以,找不到 java 和 jar 包
  • javaxxx.jar换成绝对路径,jar包成功执行

但是,jar包中的日志信息,并输出到 /root/logs/目录下,现在想让jar包的日志信息输出到, /xxx/jarPath/logs目录下,只需要在脚本中加入 cd /xxx/jarPath.

总结

cron定时任务执行的默认路径是/用户目录,所以在脚本中最好使用绝对路径,并且加入 cd /xxx/jarPath/.

cron定时命令的格式

# For details see man 4 crontabs# Example of job definition:# .---------------- minute (0 - 59)# | .------------- hour (0 - 23)# | | .---------- day of month (1 - 31)# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat# | | | | |# * * * * * user-name command to be executed定时任务的每段为:分,时,日,月,周,用户,命令第1列表示分钟1~59 每分钟用*或者 */1表示第2列表示小时1~23(0表示0点)第3列表示日期1~31第4列表示月份1~12第5列标识号星期0~6(0表示星期天)第6列要运行的命令

:表示任意时间都,实际上就是“每”的意思。可以代表00-23小时或者00-12每月或者00-59分-:表示区间,是一个范围,00 17-19 * * * cmd,就是每天17,18,19点的整点执行命令,:是分割时段,30 3,19,21 * * * cmd,就是每天凌晨3和晚上19,21点的半点时刻执行命令/n:表示分割,可以看成除法,/5 * * * * cmd,每隔五分钟执行一次

关键词: