全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

IP归属甄别会员请立即修改密码
查看: 1087|回复: 13
打印 上一主题 下一主题

小白求教18CM吴彦祖,Cron表达式每25小时执行一次,如何写

[复制链接]
跳转到指定楼层
1#
发表于 2023-9-18 20:57:53 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
如题,应该怎么写才对,或者写成1天多几分钟后执行
14#
发表于 2023-9-18 21:18:20 | 只看该作者
Cron表达式无法直接表示每25小时执行一次的情况,因为Cron基于日历单位,每天的小时数固定为24小时。因此,如果你想在一天后的同一时间点(即24小时后)以及在一天后的1小时后(即25小时后)运行作业,你将需要两个不同的Cron条目。

然而,如果你只是想实现这样的效果,你可能需要考虑使用其他的任务调度工具,比如使用Python的`APScheduler`,或者使用Java的`Quartz`。这些工具都能更灵活地处理这种间隔超过24小时的任务调度需求。

如果你必须使用Cron,那么你可能需要用一种"hacky"的方式来模拟这种每25小时执行一次的效果。你可以设置一个Cron表达式,使其每天的不同时间(比如第一天的1点,第二天的2点,第三天的3点,等等)执行。然而,这种方法的问题在于,当你到达24点之后,你必须再从1点开始,这将导致在一天中的某个时间点,任务会被执行两次。

例如:

```
0 1 * * * command
0 2 * * * command
0 3 * * * command
...
0 23 * * * command
0 0 * * * command
```

这将在第一天的1点,第二天的2点,第三天的3点,等等,执行命令。然而,当你到达第24天时,你将在0点和1点都执行一次命令,这可能不是你想要的结果。因此,如果你想每25小时执行一次任务,Cron可能不是最好的工具。
13#
发表于 2023-9-18 21:17:42 来自手机 | 只看该作者
Cron表达式是一种用于指定定时任务的字符串,它由6或7个空格分隔的域组成,每个域表示不同的含义1。要想让Cron表达式每25小时执行一次,有两种方法: 方法一:使用年份域,指定每年的某些日期和时间执行任务。例如,如果想从2023年1月1日0点开始,每25小时执行一次任务,可以写成: 0 0 0 1/25 1-12 ? 2023-2099 这个表达式的含义是,在2023年到2099年的每个月的第1、26、51天的0点执行任务2。 方法二:使用秒域,指定每隔多少秒执行一次任务。例如,如果想从现在开始,每25小时执行一次任务,可以写成: 0 */90000 * * * ? 这个表达式的含义是,在每隔90000秒(即25小时)执行一次任务3。
12#
发表于 2023-9-18 21:16:56 | 只看该作者
在bash脚本中,你可以使用sleep命令来达到每25小时执行一次任务的目的。以下是一个简单的例子:

#!/bin/bash

while true
do
    # Your command here
    echo "This script runs every 25 hours"

    # Sleep for 25 hours
    sleep 90000
done
在这个脚本中,我们首先定义了一个无限循环。在每次循环中,我们首先执行你的命令(在这个例子中,我们只是打印一个消息),然后我们让脚本睡眠90000秒(这是25小时的秒数)。

你可以将这个脚本作为后台进程运行,或者在一个screen或tmux会话中运行它,这样即使你退出了SSH会话,它也会继续运行。

注意:这种方法的一个缺点是,如果服务器重启,这个脚本将不会自动开始运行。你需要设置一些机制(比如使用systemd或者cron @reboot)来在服务器启动时启动这个脚本。
11#
发表于 2023-9-18 21:15:46 来自手机 | 只看该作者
您好,这是Bing。很高兴为您提供帮助。
10#
发表于 2023-9-18 21:15:42 | 只看该作者
#!/bin/bash
while true; do
    # 执行你的任务
    echo "Task executed at $(date)"
    # 等待25小时
    sleep 25h
done
9#
 楼主| 发表于 2023-9-18 21:15:10 | 只看该作者
秋秋0827 发表于 2023-9-18 21:12
楼上的办法很有意思,不才也有个思路,你可以试试,用go或者python写个脚本,每天cron定时执行该脚本,然后 ...

对啊,我怎么没想到,脚本里面套脚本,哈哈,谢谢大佬,也谢谢楼上大佬提供思路
7#
发表于 2023-9-18 21:12:30 | 只看该作者
楼上的办法很有意思,不才也有个思路,你可以试试,用go或者python写个脚本,每天cron定时执行该脚本,然后往该脚本里又添加延迟一个小时的一次性定时任务。
6#
 楼主| 发表于 2023-9-18 21:10:52 | 只看该作者
ukmg 发表于 2023-9-18 21:06
每隔24小时执行一次。然后脚本前面加上sleep 3600s&&

sleep到天荒地老

脚本不能动,只能用cron去控制

现在是每天改定时,麻烦
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2025-11-6 13:21 , Processed in 0.132346 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表