thiết lập một cronjob trong thời gian IST


7

Tôi đang cố gắng thiết lập một cronjob chạy trong một múi giờ khác. Tôi đã googled rất nhiều và thấy chỉnh sửa /etc/default/cronlà cách để đi. Nhưng tập tin này không được chấp nhận và tôi thấy thông báo sau, vì vậy tôi đã thêm TZ=ISTvào tập tin /etc/init/cron.conf. Tôi không chắc chắn điều này sẽ hoạt động, bất kỳ lời khuyên về cách di chuyển về phía trước xin vui lòng?

# This file has been deprecated. Please add custom options for cron to
# /etc/init/cron.conf and/or /etc/init/cron.override directly. See
# the init(5) man page for more information

Tôi đang sử dụng cron 3.0pl1-120ubfox4 trên Ubuntu Linux.

Câu trả lời:


3

một cron trong một TZ khác

Bạn có thể thử thiết lập biến CRON_TZthay vì TZ. Các tùy chọn này dường như là distro cụ thể. Tôi đã xem các trang hướng dẫn man 5 crontabsau ( sau đó tìm kiếm TZ) cho cả Fedora và Ubuntu.

Fedora có nó như CRON_TZ=ISTtrong khi Ubuntu tuyên bố như thế này:

Trình nền cron chạy với múi giờ xác định. Nó hiện không hỗ trợ múi giờ cho mỗi người dùng. Tất cả các tác vụ: hệ thống và người dùng sẽ được chạy dựa trên múi giờ được định cấu hình. Ngay cả khi người dùng chỉ định biến môi trường TZ trong crontab của mình, điều này sẽ chỉ ảnh hưởng đến các lệnh được thực thi trong crontab, chứ không phải chính việc thực thi các tác vụ crontab.

Trang người đàn ông của Fedora nói rằng nó như thế này:

Biến CRON_TZ chỉ định múi giờ cụ thể cho bảng cron. Người dùng nên nhập thời gian theo múi giờ đã chỉ định vào bảng. Thời gian được sử dụng để ghi vào tệp nhật ký được lấy từ múi giờ địa phương, nơi trình nền đang chạy.

Với bạn trên Ubuntu tôi không mong đợi nó hoạt động nhưng nó có thể. Tôi đã kiểm tra trên Ubuntu 12.10.

Hãy thử một cái gì đó như thế này:

#m  h           d   m   wday    command
CRON_TZ=IST
5   0,6,12,18   *   *   *       /path/to/script.bash

Tất cả các crons trong một TZ khác nhau

Tuy nhiên, nếu bạn đang nhắm đến việc chạy tất cả các con quỷ của mình trong một múi giờ khác, bạn có thể thực hiện chiến thuật ấn tượng hơn là thay đổi TZchính cron daemon. Một cái gì đó như thế này trong kịch bản dừng / bắt đầu:

# /etc/init.d/crond
...
...
# Source function library.
. /etc/rc.d/init.d/functions

[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog

export TZ=IST
start() {
    if [ $UID -ne 0 ] ; then
        echo "User has insufficient privilege."
        exit 4
    fi
    [ -x $exec ] || exit 5
    [ -f $config ] || exit 6
    echo -n $"Starting $prog: "
    daemon $prog $CRONDARGS
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
}
...
...

Đây là mã từ tập lệnh dừng / khởi động Fedora crond của tôi nhưng một thay đổi tương tự có thể được thực hiện đối với tập lệnh dừng / khởi động Ubuntu của bạn cho crond.


@sim - Tôi nên thêm tập tin nào vào đây?
tesster

Đây là một mục crontab vì vậy một cái gì đó như /etc/crontab.
slm

Tôi đã làm "crontab -e" và thêm CRON_TZ = IST ... nó không hoạt động :-(
tesster

3
@tesster - vâng, đó là Ubuntu. Tôi nghĩ rằng lựa chọn duy nhất của bạn là đặt TZ cho toàn bộ crond.
slm

0

Nó không quan trọng, nhưng hãy thử đặt chuỗi "IST" trong dấu ngoặc kép.

Trong cron.confhoặc /etc/default/cron:

export TZ='IST'

Ngoài ra, thay vì sử dụng tên ngắn, hãy thử sử dụng tên dài:

export TZ='Asia/Kolkata'

Hoặc đặt cái này vào trong ~/.profilenếu bạn đang làm crontabs

export TZ='Asia/Kolkata'

Sau khi thay đổi tập tin cấu hình của daemon này, bạn cần khởi động lại nó:

service cron restart

cron.conftrong Ubuntu trông giống như một tệp systemd, bạn có chắc chúng ta có thể thêm exportnó vào không? Tôi muốn đặt `CRONDARGS =" - s -m off "` để tránh thư (và nhật ký) nhưng không thể tìm thấy cách thực hiện trong Ubuntu.
bảnh bao

Mặc dù /etc/default/cronnói rằng nó không được chấp nhận CRONDARGS="-s -m off"sẽ thêm vào (bây giờ) vì nó có nguồn gốc /etc/init.d/cron. /etc/init/cron.conflà một tệp cấu hình systemd và exportcó thể hoặc không thể hoạt động ở đó nhưng tôi không thể tìm thấy nếu có.
bảnh bao

Nó không được chấp nhận vì chủ đề này đã hơn 3 tuổi. Mọi thứ đã thay đổi
h3rrmiller

có và vẫn còn trên Ubuntu 16.04, nó dường như là lựa chọn duy nhất để thiết lậpCRONDARGS
bảnh bao

Điều này sẽ không liên quan đến người dùng đã hỏi một câu hỏi 3 năm trước. Đừng chủ đề necro trừ khi có lý do chính đáng để làm như vậy.
h3rrmiller
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.