Bir systemd zamanlayıcı birimini devre dışı bırakmanın doğru yolu hangisidir?


18

Birkaç cron işimi başarıyla sistemd'e geçirdim. Bazı kılavuzları takip ettim ve 3 dosya oluşturmanın standart yaklaşımını aldım:

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

Muhtemelen tahmin edebileceğiniz gibi, belirli bir zamanda myjob.timer tetiklenir, bu da myjob.service'i çalıştırır ve bu da myjob.sh'yi çalıştırır.

Tüm zamanlayıcılarım için aynı kurulum var ve şimdi her şeyin iyi çalıştığını gördüğüm için, sadece bir test cihazı olan myjob.timer'i devre dışı bırakmak istiyorum.

Sadece yapıyorum:

systemctl --user disable myjob.timer

ya da ben de yapmak zorundayım:

systemctl --user disable myjob.service

Yapılacak doğru şey nedir? Systemd için oldukça yeniyim, bu yüzden işleri doğru şekilde nasıl yapacağınızı öğrenmek istiyorum. Sistemi fazla bagajdan uzak tutmak için her iki birimi de devre dışı bırakmanın doğru olduğunu tahmin ediyorum.

Yanıtlar:


18

eğer myjob.servicehiçbir içeren [Install]bloğu, o zaman sadece zamanlayıcı devre dışı bırakmak için yeterlidir. .serviceDosyayı başlatan tek şey zamanlayıcıydı , bu nedenle .timerdevre dışı bırakıldığında hiçbir şey .servicedosyayı başlatamaz.

Ayrıca koşmayı da unutmayın systemctl --user stop myjob.timer. Zamanlayıcının devre dışı bırakılması , bir sonraki önyüklemede başlatılmasını engeller, ancak şu anda çalışmakta olan zamanlayıcıyı durdurmaz .


Zamanlayıcı birimlerimin her birinde bir [Install] bloğu var. 'WantedBy = default.target' diyen bir girişi vardır. Bunu takip ettiğim rehberlerden aldım. [Install] bloğundan tamamen kurtulabilir miyim?
bitofagoob

1
TAMAM. Ben [Install] bölümü hakkında okudum ve WantedBy = default.target sadece etkinleştirildiğinde, herhangi bir normal önyükleme oturumu (çok kullanıcılı veya grafik) sırasında hayata getirilmesini sağlamak için orada olduğunu düşünüyorum. Mark Stosberg'in tavsiyesini alacağım ve sadece zamanlayıcı ünitesini devre dışı bırakacağım. Ayrıca cevabını çözüm olarak işaretleyeceğim. Şerefe Mark!
bitofagoob

2
Zamanlayıcı ünitelerinizdeki [Yükle] bölümünü önyüklemede başlatılmasını istiyorsunuz. Genellikle WantedBy=timers.target. Yalnızca bir ihtiyaç [Install]isterseniz bir hizmet için bölüm servisi sizin gibi bu sesler önyükleme zamanında, başlamış olan yok bu durumda istiyorum.
Mark Stosberg

1
Teşekkürler. Servis biriminden [Yükle] bölümünü kaldırdım ve zamanlayıcımdaki [Yükle] bölümünü WantedBy = timers.target olarak değiştirdim.
bitofagoob
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.