hẹn giờ systemd cứ sau 15 phút


33

Tôi đang cố gắng tạo một bộ đếm thời gian systemd chạy cứ sau 15 phút. Ngay bây giờ tôi có:

  • timer-fifteen.timer:

    [Unit]
    Description=15min timer
    
    [Timer]
    OnBootSec=0min
    OnCalendar=*:*:0,15,30,45
    Unit=timer-fifteen.target
    
    [Install]
    WantedBy=basic.target  
    
  • timer-fifteen.target:

    [Unit]
    Description=15min Timer Target
    StopWhenUnneeded=yes
    

Điều này chạy đi chạy lại mà không dừng lại. Có cần phải *:0,15,30,45:*thay thế? Làm thế nào tôi có thể làm cho công việc này?


2
Không phải cú pháp của bạn có nghĩa là cứ sau 15 giây ?
Pavel imerda

Câu trả lời:


43

Cú pháp của bạn dịch ra cứ sau 15 giây , nếu bạn muốn cứ sau 15 phút , IMO cách dễ đọc nhất là:

OnCalendar=*:0/15

Một câu trả lời tương tự như những gì bạn sử dụng trong câu hỏi của bạn là:

OnCalendar=*:0,15,30,45

Thêm thông tin:


3
OnCalendar=0/8:00:00có đúng không khi nói "chạy cứ sau 8 giờ"?
shackra

4
Vâng. Nhưng có lẽ bạn đã biết điều đó cho đến bây giờ. :)
Pavel imerda

Tôi đã không, nhưng dù sao thì tôi cũng đã sử dụng lol. Cảm ơn bạn đã xác nhận!
shackra

OnCalendar=*:0/15nên dịch OnCalendar=*:0,15,30,45chính xác (cho tôi đọc chính xác trong tài liệu). Cứ sau 8 giờ sẽ được nhận ra OnUnitActiveSec=8hours.
Debilski

3
Khi chỉ định một khoảng, đầu ra của systemd-analyzecó thể có ích, ví dụ thử systemd-analyze calendar *:0/15.
sebastian

12

Theo systemd.time , cài đặt

OnCalendar=*:0/15

dịch chính xác sang

OnCalendar=*:0,15,30,45

I E. nó kích hoạt thiết bị chính xác vào toàn bộ giờ, cũng như vào quý trước, nửa quá khứ và quý tới.

Tùy thuộc vào dịch vụ của bạn, đây có thể không phải là những gì bạn muốn, cũng không phải là những gì bạn cần trong mọi trường hợp.

Đồng hồ bấm giờ chạy cứ sau 15 phút - ví dụ: 1:02, 1:17, 1:32, 1:47, 2:02, khác - luôn phụ thuộc vào thời gian chạy lần cuối - có thể được thực hiện với systemd. cài đặt hẹn giờ

OnUnitActiveSec=15min

Bây giờ, bạn cũng sẽ muốn thiết bị bắt đầu một thời gian sau khi khởi động (trừ khi bạn muốn kích hoạt thiết bị theo cách thủ công hoặc có một phụ thuộc làm điều đó), vì vậy bạn có thể nên chỉ định

OnBootSec=10min
OnUnitActiveSec=15min

để thiết bị bắt đầu 10 phút sau khi khởi động và sau đó cứ sau 15 phút.

Ngoài ra, có cài đặt OnUnitInactiveSecbắt đầu đếm thời gian sau khi dịch vụ đã dừng (hoặc nói chung hơn, thiết bị đã ngừng hoạt động).


1
Cảnh báo: OnUnitActiveSec dường như khá bị hỏng .
Anders Kaseorg
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.