iT邦幫忙

0

如何使用 crontab 實現每 1.5 個小時跑一次腳本?

我在網路上爬文看到有人問,我想不出答案..
因為小時不是以整數為單位,怎麼做到半小時

嘗試1 : 0 3/2 * * *
xxx
結果 : 不行

嘗試2 : 0 1.5 * * *
xxx
結果 : 不行

嘗試3 : 30 1 * * *
結果 : 不行
xxx

嘗試4 : */30 */1 * * *
結果 : 不行
xxx

嘗試5 : */90 * * * * 想要以90分鐘做到
結果 : 不行
xxx

看更多先前的討論...收起先前的討論...
dragonH iT邦超人 5 級 ‧ 2020-10-23 13:54:52 檢舉
1.5 小時又是幾分鐘呢

或是你可以直接把各個時間列出來

腦袋轉一下應該就有答案了
您好,我有更新嘗試,90分鐘不行的
dragonH iT邦超人 5 級 ‧ 2020-10-23 14:28:28 檢舉
https://serverfault.com/questions/123629/run-task-every-90-minutes-with-cron
通靈亡 iT邦研究生 4 級 ‧ 2020-10-23 14:34:03 檢舉
想不出來就多估一下吧
crontab 90 minute
前幾個就是你要的...

https://stackoverflow.com/questions/247626/how-can-i-set-cron-to-run-certain-commands-every-one-and-a-half-hours
感謝,一個 crontab 做不到
需要兩個才行
並且無法以當下時間起算,需要指定從 HH:MM 開始
2
一級屠豬士
iT邦大師 1 級 ‧ 2020-10-23 14:24:09
最佳解答
看更多先前的回應...收起先前的回應...

感謝,一個 crontab 做不到
需要兩個才行
並且無法以當下時間起算,需要指定從 HH:MM 開始

通靈亡 iT邦研究生 4 級 ‧ 2020-10-23 14:44:20 檢舉

看清楚範例,不是指定從HH:MM開始...
是指定 在「哪幾個小時」的「第0分鐘」與「第30分鐘」的時候執行

感謝 通靈亡 大神

用 PostgreSQL 產生一個半小時間隔

select n
     , n + '29 minutes' as shift29
  from generate_series(
         'today'::timestamp
       , 'tomorrow'::timestamp
       , '1.5 hours'
       ) n;

+---------------------+---------------------+
|          n          |       shift29       |
+---------------------+---------------------+
| 2020-10-23 00:00:00 | 2020-10-23 00:29:00 |
| 2020-10-23 01:30:00 | 2020-10-23 01:59:00 |
| 2020-10-23 03:00:00 | 2020-10-23 03:29:00 |
| 2020-10-23 04:30:00 | 2020-10-23 04:59:00 |
| 2020-10-23 06:00:00 | 2020-10-23 06:29:00 |
| 2020-10-23 07:30:00 | 2020-10-23 07:59:00 |
| 2020-10-23 09:00:00 | 2020-10-23 09:29:00 |
| 2020-10-23 10:30:00 | 2020-10-23 10:59:00 |
| 2020-10-23 12:00:00 | 2020-10-23 12:29:00 |
| 2020-10-23 13:30:00 | 2020-10-23 13:59:00 |
| 2020-10-23 15:00:00 | 2020-10-23 15:29:00 |
| 2020-10-23 16:30:00 | 2020-10-23 16:59:00 |
| 2020-10-23 18:00:00 | 2020-10-23 18:29:00 |
| 2020-10-23 19:30:00 | 2020-10-23 19:59:00 |
| 2020-10-23 21:00:00 | 2020-10-23 21:29:00 |
| 2020-10-23 22:30:00 | 2020-10-23 22:59:00 |
| 2020-10-24 00:00:00 | 2020-10-24 00:29:00 |
+---------------------+---------------------+
(17 rows)

如果想要計時制。就得利用一下程式來幫你處理。
畢竟corntab是叫「排程」不是「計時」
用排程來做計時動作其實也是一招的。

1
浩瀚星空
iT邦超人 1 級 ‧ 2020-10-23 14:40:50

crontab的運做原理,不是計時器,而是定時器。
你沒辦法要求它過幾分後運行。
只能要求他x年x月x日x點x分運行。
其實現在的crontab還不錯。有多了一個星期x運行。

很早以前還沒有可以設定星期x。

我自已是自行做了一個排程。可以達到計時跟定時。
然後再將現在的crontab調整成每分去檢查我寫的排程並運行。

感謝 浩瀚星空 大神!

1
fuzzylee1688
iT邦新手 1 級 ‧ 2020-10-23 15:13:01

一小時只有60分鐘, 第一個值最大到59而已.

2
obarisk
iT邦新手 5 級 ‧ 2020-10-24 14:12:57

用看看 systemd-timer ?

https://unix.stackexchange.com/questions/396605/systemd-timer-every-2-hours-at-30-minutes-past-the-hour/396673

或是用 airflow 這種的工作流程管理器?

我要發表回答

立即登入回答