cron = 0 */6 * * * ? 什么意思,并改为每天下午17点30分执行
时间: 2023-11-14 17:41:24 浏览: 77
`cron = 0 */6 * * * ?` 是一个 Quartz Cron 表达式,表示每隔6小时执行一次任务。具体解释如下:
- `0` 表示在整点时执行。
- `*/6` 表示每隔6个小时执行一次。
- `*` 表示在任何月份都执行。
- `*` 表示在任何一周都执行。
- `?` 表示没有特定的日期要匹配。
如果要改为每天下午17点30分执行,可以将表达式修改为 `0 30 17 * * ?`,具体解释如下:
- `0` 表示在整点时执行。
- `30` 表示在30分时执行。
- `17` 表示在下午17点时执行。
- `*` 表示在任何月份都执行。
- `*` 表示在任何一周都执行。
- `?` 表示没有特定的日期要匹配。
相关问题
cron = 0 */6 * * * ? 什么意思,并改为每天下午17点执行
cron表达式 "0 */6 * * * ?" 表示每隔6小时执行一次任务,不考虑分钟和秒数,因为都是 *。
要改为每天下午17点执行,cron表达式应该为 "0 0 17 * * ?"。其中,第一个 0 表示秒数为 0,第二个 0 表示分钟数为 0,17 表示小时数为 17,* 表示日期为任意值,* 表示月份为任意值,? 表示星期为任意值。
17 8 * * * /bin/bash -c ‘rm -rf cgu_log/*’ 如果是2019年不执行不删除操作,否则执行17 8 * * * /bin/bash -c ‘rm -rf cgu_log/*’
这是一个Linux定时任务的cron表达式。具体解释如下:
`17 8 * * *` 表示每天的17点(下午5点)执行这个命令。
`/bin/bash -c 'rm -rf cgu_log/*'` 是实际执行的命令,它会运行`bash` shell,并执行清除`cgu_log`目录下所有文件和子目录的`rm -rf`命令。
如果要在2019年之外的情况下才执行这个删除操作,在crontab配置中直接添加这个规则可能会导致每天17点都尝试删除,除非另有特殊设置。为了满足你的需求,可以在crontab中增加一个条件判断,例如使用if语句检查当前日期是否为2019年。然而,由于cron本身不支持复杂的条件判断,这通常需要外部脚本的帮助,比如写一个shell脚本或者使用一个能够处理复杂逻辑的语言(如Python)编写计划任务。
一个简化版的解决方案可能是创建一个bash脚本,内容如下(假设该脚本名为`check_and_delete.sh`):
```bash
#!/bin/bash
current_year=$(date +%Y)
if [ "$current_year" != "2019" ]; then
rm -rf /path/to/cgu_log/*
fi
```
然后将上述脚本添加到cron中,表达式改为:
```bash
17 8 * * * /path/to/check_and_delete.sh
```
这样只有当当前年份不是2019时,才会执行`rm -rf`操作。如果你想在crontab中直接包含复杂的逻辑,可能需要借助其他方法,但上述脚本提供了一个简单实用的解决方案。
阅读全文