Contents

設定crontab排程時區小記

最近因為要設定 crontab 時區
但主機時區不是台灣時間
但程式是台灣時間
但這時候控制排程可能就會有時間差的問題

在 Linux 設定 方法

其實這時候很簡單,調整時區就能解決問題!!

Crontab 能不能調整時區?
答案可以:
CentOS7 下 Crontab 时区问题 | MYF

ntpdate -u tock.stdtime.gov.tw
timedatectl set-timezone Asia/Taipei
timedatectl set-local-rtc 0 # Set Real-Time Clock
cp -pf /usr/share/zoneinfo/Asia/Taipei /etc/localtime

其他相關
Linux 設定 NTP 同步系統時間,自動網路校時教學 - G. T. Wang
使用 ntpd 來替換 ntpdate 以完成校時的工作 – SZ Lin & Embedded Linux

可惜!目前專案不太希望我們動到主機時區 orz

設定 bash 環境變數

TZ=‘Asia/Taipei’; export TZ

crontab 时区以及 linux 时区设置-luosiyong

這可以改變 Bash 變時區問題
但是 Crontab 還是不會有影響
定时任务 cron 时区的问题 備份圖

/etc/init.d/cron但這邊設定檔好像可以設定

PS:還沒有驗證

6 Online Tools for Generating and Testing Cron Jobs for Linux

其實,PHP CI 的 index.php 連線都有設定台灣時區,DB 連線也有設定
但之後程式可能需要有程式設定 crontab
目前有想到用程式減少相對時區
解決問題

小記 Laravel 設定時區PHPer: Laravel 5 資料庫 timezone 設定

1
2
3
4
5
6
7
8
'mysql' => [
    ...
    'options' => [
        PDO::MYSQL_ATTR_INIT_COMMAND => 'SET time_zone = "+08:00"'
    ],
    (or)
    'timezone' => '+08:00',
],

Set default MySQL timezone on connect? | Laravel.io
cron - How do you set the timezone for crontab? - Ask Ubuntu