bagaimana menjalankan pekerjaan cron pada GMT bukan waktu setempat?

8

Bagaimana saya bisa membuat pekerjaan cron berjalan pada GMT, bukan waktu setempat?

ini file crontab saya:

#m  h           d   m   wday    command
TZ=GMT
5   0,6,12,18   *   *   *   ~/Documents/bash/transfer.sh

pekerjaan saya tampaknya berjalan pada waktu setempat (GMT + 11) Saya menjalankan os x snow leopard, tetapi akan memindahkan kode ke linux saat pengembangan selesai.

Lingkungan linux mungkin merupakan lingkungan bersama di mana saya mungkin memiliki sedikit kontrol atas konfigurasi.

mata majemuk
sumber
askubuntu.com/questions/54364/…
Ciro Santilli 冠状 病毒 审查 六四 事件 法轮功
unix.stackexchange.com/questions/195818/…
Ciro Santilli 冠状 病毒 审查 六四 六四 事件 法轮功

Jawaban:

8

Tidak semua versi crondukungan menjalankan pekerjaan menggunakan zona waktu selain dari sistem.

Jika Anda memilikinya, kemungkinan spesifikasi harus TZ=GMTatau TZ=UTC(tanpa kurung sudut). Dalam beberapa kasus, variabelnya adalah CRON_TZ.

Hal terbaik untuk dilakukan adalah memeriksa dokumentasi khusus untuk sistem tertentu. Lihat man 5 crontab.

Dijeda sampai pemberitahuan lebih lanjut.
sumber
3

Jika waktu lokal Anda Europe/London. Kemudian:

crontab -e    # or 'cru' on some machines
>>>
# Run COMMAND at 03:15am UTC every morning
15 3 * * * [ "$(date +\%z)" = "+0000" ] && COMMAND
15 4 * * * [ "$(date +\%z)" = "+0100" ] && COMMAND
<<<

Contoh lain:

Jika waktu reguler Anda +0500berubah UTC, dan waktu musiman Anda +0600berubah UTC. Kemudian tambahkan +5ke semua jam yang ditentukan dalam contoh di atas. Ini berarti dijalankan pada 08:15amdan 09:15amdari waktu setempat Anda masing-masing. Jadi baris cron Anda yang dimodifikasi akan terlihat seperti ini:

crontab -e    # or 'cru' on some machines
>>>
# Run COMMAND at 03:15am UTC every morning
15 8 * * * [ "$(date +\%z)" = "+0500" ] && COMMAND
15 9 * * * [ "$(date +\%z)" = "+0600" ] && COMMAND
<<<

[EDIT] Pastikan untuk \menghindari persentase %karakter dalam file crontab Anda. Ketika crontab mengartikan mereka sebagai pemisah baris baru. misalnya %-> \%.

Dreamcat4
sumber
1
akan ada masalah jika Anda berada di zona waktu yang menggunakan DST sehingga (misalnya) zona waktu Anda kadang-kadang +01: 00 dan kadang-kadang +02: 00
inemanja
2
Mungkin Anda bisa menguraikan? Saya kira tidak. Kami sudah memperhitungkan DST. Setiap kasing memiliki cron line sendiri. 1 untuk masing-masing dengan / tanpa DST.
Dreamcat4
ini harus menjadi jawaban yang diterima, karena memungkinkan untuk perintah individu perilaku yang berbeda
Patrick McCann 3-15
0

Anda mungkin bisa membungkus biner crond asli.

mv /usr/sbin/crond /usr/sbin/crond.real
cat > /usr/sbin/crond
#!/bin/sh
TZ=GMT
export TZ
exec crond.real ${1+"$@"}
hlovdal
sumber
halo hlovdal, bisa tolong jelaskan langkah-langkah ini?
mata majemuk
Apakah Anda menyalin crond ke crond.real, lalu mengganti crond dengan skrip pendek, di mana Anda mengatur dan mengekspor TZ, kemudian jalankan crond.real?
mata majemuk
Bukan menyalin tetapi bergerak, tapi ya sisa analisis Anda benar.
hlovdal