我想xx_x__x.log
在每周日凌晨 2:30 检查该位置是否存在该文件或文件大小是否为 0。我有一个脚本来检查文件大小并检查它是否存在,但我不知道如何在特定时间检查。
答案1
从man bash | less '+/^\s*CONDITIONAL'
-s file
如果文件存在且大小大于零,则为真。
要让脚本在预定义的时间运行,请将代码放入可执行 scipt 并将其加载到 cronjob 中。
我怀疑你可能可以将你的命令放入一个衬垫中并将其加载到 crobtab 中? (我很想知道是否有其他人成功完成了此操作)
但是 cron 命令的问题是
- 它们没有连接到终端 - 据我所知{尽管你可能可以检查
lsof
或其他东西} - 所以当你构建你的 cron 命令时,你不会得到任何关于出了什么问题的调试输出/反馈 - 您必须等待一段时间才能测试您的 cron 命令
出于这些原因,我建议将您的命令放入可执行脚本中,以便您可以在编码器友好的环境(即终端)中编写代码,然后当您满意其行为正确时,然后加载命令以将其调用到定时任务
所以说这是你的脚本/tmp/checksize.sh
#!/bin/bash
if [[ -s /tmp/xx_x__x.log ]]
then
printf "\n\n%s\n\n\n" true > /tmp/sizelog.log
else
printf "\n\n%s\n\n\n" false > /tmp/sizelog.log
fi
只需运行crontab -e
并添加命令
5 0 * * * /tmp/checksize.sh
意思是:# 每天午夜后跑步五分钟
关于把握正确的时机
从man 5 crontab
Commands are executed by cron(8) when the minute, hour, and month of
year fields match the current time, and when at least one of the two
day fields (day of month, or day of week) match the current time (see
``Note'' below). cron(8) examines cron entries once every minute. The
time and date fields are:
field allowed values
----- --------------
minute 0-59
hour 0-23
day of month 1-31
month 1-12 (or names, see below)
day of week 0-7 (0 or 7 is Sun, or use names)
[...]
EXAMPLE CRON FILE
The following lists an example of a user crontab file.
# use /bin/bash to run commands, instead of the default /bin/sh
SHELL=/bin/bash
# mail any output to `paul', no matter whose crontab this is
MAILTO=paul
#
# run five minutes after midnight, every day
5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
# run at 2:15pm on the first of every month -- output mailed to paul
15 14 1 * * $HOME/bin/monthly
# run at 10 pm on weekdays, annoy Joe
0 22 * * 1-5 mail -s "It's 10pm" joe%Joe,%%Where are your kids?%
23 0-23/2 * * * echo "run 23 minutes after midn, 2am, 4am ..., everyday"
5 4 * * sun echo "run at 5 after 4 every sunday"
# Run on every second Saturday of the month
0 4 8-14 * * test $(date +\%u) -eq 6 && echo "2nd Saturday"
答案2
要检查文件是否存在于某个位置,您可以-f
在if
语句中使用测试。
if [ -f "$FILE" ]; then
(正如 the_velour_fog 所说,即使文件为空,表达式也会返回 True)