GNU/Linux >> Belajar Linux >  >> Linux

Pengganti cron yang menangani banyak zona waktu

Solusi 1:

fcron mendukung fitur ini.

Dari dokumentasi opsi "zona waktu" di fcrontab(5):

Jalankan pekerjaan di zona waktu yang diberikan. nama-zona waktu adalah string yang valid untuk variabel lingkungan TZ:lihat dokumentasi sistem Anda untuk detail lebih lanjut. Misalnya, "Eropa/Paris" valid pada sistem Linux. Opsi ini menangani perubahan waktu musim panas dengan benar. Variabel TZenvironment diatur ke nilai zona waktu saat tugas yang menentukan opsi ini dijalankan.

Solusi 2:

Saya pikir Anda mencoba untuk mendapatkan keduanya dan kenyataannya adalah Anda tidak bisa. Jika Anda ingin pekerjaan dijalankan pada jam 8 pagi waktu setempat, misalnya, terlepas dari apakah penghematan siang hari aktif maka Anda dapat menjalankan sistem Anda (dan cron) dalam waktu lokal dan tidak melakukan pengeditan musiman atau Anda menjalankannya dalam UTC ( bukan GMT) dan lakukan pengeditan musiman. Jika Anda ingin pekerjaan Anda berjalan pada UTC yang sama, terlepas , lalu Anda menjalankan cron menurut UTC dan tidak ada lagi yang harus dilakukan.

Jika yang Anda inginkan adalah agar pengguna dapat menjadwalkan tugas cron sesuai dengan zona waktu lokalnya dan tidak membuatnya harus memikirkan konversi demi kenyamanannya kemudian Anda menulis skrip konversi yang menerima spesifikasi cron dan zona waktu kemudian melakukan konversi ke UTC di belakang layar dan mengedit crontab untuknya. Bahkan bisa menjadi konversi dua arah untuk menangani perubahan pada entri yang ada.

Akan sangat membantu jika Anda memberi tahu kami apa yang sebenarnya ingin Anda capai .

Solusi 3:

Anda dapat menulis sendiri sebuah pembungkus kecil yang membutuhkan tiga argumentasi:

  • Targetkan jam zona waktu agar cocok
  • Targetkan zona waktu
  • Perintah untuk menjalankan jika jam target tz cocok dengan jam saat ini (dalam target tz).

Kemudian letakkan baris pembungkus itu di crontab Anda untuk dijalankan setiap jam:

python tz_wrapper.py 14 "US/Mountain" "echo 'hi'"

Versi python sederhana:

#!/usr/bin/python
import sys, os, datetime
import pytz

arg_hour = sys.argv[1]
arg_timezone = sys.argv[2]
arg_cmd = sys.argv[3]

target_tz = pytz.timezone(arg_timezone)
target_hour = pytz.utc.localize(datetime.datetime.utcnow()).astimezone(target_tz).strftime("%H")

if target_hour == str(arg_hour):
    os.system(arg_cmd)

Linux
  1. DSH – Jalankan Perintah Linux Pada Banyak Host Sekaligus

  2. Jalankan Perintah Yang Dibayangi Alias?

  3. Bagaimana Cara Kerja Bagian Dalam Cron Daemon?

  1. Tambahkan Beberapa Zona Waktu di Ubuntu Linux - Ikuti prosedur ini?

  2. Jalankan Beberapa Contoh Proses Benar Dari Terminal Gnome?

  3. Ssh Ke Beberapa Host Dan Jalankan Perintah?

  1. Empat Tugas Secara Paralel… Bagaimana Melakukannya?

  2. Linux:Jalankan tugas cron di latar depan

  3. Izin ditolak dengan bash.sh untuk menjalankan cron