cron選択肢としてのシステムタイマー


今日はSystemMDタイマーについて書きたいと思いました.最近はスケッチを変えなければなりませんでしたWhile True システムタイマーのスクリプト、パフォーマンスの向上は、巨大なプラスポイントだった.
はい、私はそれを得る人々のシステムsystemd、それは完璧ではないかもしれないが、それは間違いなく、この特定のユースケースのために動作します.しかしながら、非常に多くのオプションがあるので、最初は非常に威圧的です、そして、あなたは使用ケースに2つのファイルを作成する必要もあります.
それで、私はそれを壊します、あなたはサービス・ファイルとタイマー・ファイルを作成する必要があります、しかし、それがこの記事の範囲からであるテンプレートファイルを使うこともできます.
それで始めましょう.
まず、端末またはテキストエディタとペーストを開きます.
[Unit]
Description=Runs a command and logs to journalctl
Wants=randomprogram.timer

[Service]
Type=oneshot
ExecStart=python -c 'print("Hello world")'

[Install]
WantedBy=multi-user.target
このファイルを保存する/etc/systemd/system/randomprogram.serviceレット・ダウン
  • これは一般的な情報を含んでいます
  • Wants=randomprogram.timer - システムマニュアルに従って、設定単位が
    基本的にサービスを開始する場合systemctl start randomprogram.service タイマーも開始されます.
  • Type=oneshot - ここで指定できるさまざまなタイプがたくさんあります(単純な、exec , forking , onehot , dbus , notify or idle ).読書man systemd.service ここでははるかに良いでしょう.
  • WantedBy=multi-user.target - これはsysvinitでランレベル2と同じです.
  • 我々がこれを終えると、現在、タイマーサービスを作成する時間.このファイルを保存する/etc/systemd/system/randomprogram.timer
    [Unit]
    Description=Runs timer program systemd journal
    After=httpd.service
    Requires=randomprogram.service
    
    [Timer]
    Unit=randomprogram.service
    #OnCalendar=*-*-* *:*:12
    OnUnitActiveSec=12s
    AccuracySec=1us
    
    [Install]
    WantedBy=timers.target
    
    もう一度これを壊してください.新しいオプションを取ります.
  • After=httpd.service - httpd後にタイマーを起動します.これは私のユースケースです
  • Requires=randomprogram.service - このユニットが活性化されると、リストされたユニットも同様に起動されます.
  • OnCalendar=*-*-* *:*:12 - このフォーマットは
    DayofWeek 1月1日時間:分:Dayofweekが省略されることができる第2、これは毎分(cronのような)のために12秒で走らせます、しかし、devのものはここで12秒ごとに実行するためにそれを必要としました.
  • OnUnitActiveSec=12s - タイマーユニットが起動している単位が最後に起動されたときに相対的なタイマーを定義します.
  • AccuracySec=1us - タイマーの精度を指定します.デフォルトは1分(高精度も必要)
  • システムタイマーの詳細な説明がありますhere
    そして今systemctl start randomprogram.timer

    それは、人々、私はかなりのシステムで行うことができます多くのことがあると確信していますが、私はまだ学んでいます.ので、この投稿についてのコメントを削除する自由を感じる.