systemdタイマーユニットを無効にする正しい方法はどれですか?


18

cronジョブのいくつかをsystemdに正常に移行しました。私はいくつかのガイドに従って、3つのファイルを作成する標準的なアプローチを取りました。

myjob.timer - systemd timer unit
myjob.service - systemd service unit
myjob.sh

おそらく推測できるように、特定の時間にmyjob.timerがトリガーされ、myjob.serviceが実行され、myjob.serviceがmyjob.shを実行します。

すべてのタイマーに同じセットアップを使用し、すべてが正常に機能していることが確認できたので、myjob.timerを無効にします。これは単なるテスターです。

私はただやるのですか:

systemctl --user disable myjob.timer

または私もする必要があります:

systemctl --user disable myjob.service

正しいことは何ですか?私はsystemdが初めてなので、適切な方法で物事を行う方法を学びたいです。システムを過剰な荷物が走らないようにするために、両方のユニットを無効にするのが正しいと思います。

回答:


18

ブロックmyjob.serviceが含まれていない場合は[Install]、タイマーを無効にするだけで十分です。.serviceファイルを開始するのはタイマーだけであったため、.timer無効にすると、.serviceファイルは何も開始されません。

実行することも忘れないでくださいsystemctl --user stop myjob.timer。タイマーを無効にすると、次回の起動時にタイマーが開始されなくなりますが、現在実行中のタイマーは停止しません。


各タイマーユニットに[Install]ブロックがあります。「WantedBy = default.target」というエントリが1つあります。これは私が従ったガイドから得たものです。[Install]ブロックを完全に削除できますか?
-bitofagoob

1
OK。[Install]セクションについて読んだことがありますが、WantedBy = default.targetは、ユニットが有効になっている場合に、通常のブートセッション(マルチユーザーまたはグラフィカル)で確実に機能するようにするためのものです。Mark Stosbergのアドバイスを受けて、タイマーユニットのみを無効にします。また、彼の答えを解決策としてマークします。乾杯!
-bitofagoob

2
起動時に起動されるように、タイマーユニットに[インストール]セクションが必要です。通常WantedBy=timers.target。あなただけの必要[Install]したい場合は、サービスのセクションを、サービスがブート時に起動されるようにあなたのように聞こえるいる、していない。この場合にはしたいです。
マークストースバーグ

1
ありがとう。サービスユニットから[インストール]セクションを削除し、タイマーの[インストール]セクションをWantedBy = timers.targetに変更しました。
-bitofagoob
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.