Mana cara yang benar untuk menonaktifkan unit timer sistemd?

18

Saya telah berhasil memigrasi beberapa pekerjaan cron saya ke systemd. Saya mengikuti beberapa panduan dan telah mengambil pendekatan standar untuk membuat 3 file:

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

Seperti yang Anda mungkin bisa menebak, pada waktu tertentu myjob.timer dipicu, yang menjalankan layanan myjob.ser yang pada gilirannya mengeksekusi myjob.sh.

Saya memiliki setup yang sama untuk semua timer saya dan sekarang saya melihat semuanya berfungsi dengan baik Saya ingin menonaktifkan myjob.timer, yang hanya merupakan tester.

Apakah saya hanya melakukan:

systemctl --user disable myjob.timer

atau apakah saya juga harus melakukan:

systemctl --user disable myjob.service

Apa hal yang benar untuk dilakukan? Saya cukup baru di systemd, jadi saya ingin belajar melakukan hal-hal dengan cara yang benar. Saya menduga itu benar untuk menonaktifkan kedua unit untuk menjaga sistem bebas dari kelebihan bagasi berjalan.

bitofagoob
sumber

Jawaban:

18

jika myjob.servicetidak mengandung [Install]blok, maka cukup dengan menonaktifkan timer saja. Penghitung waktu adalah satu-satunya hal yang memulai .servicefile, jadi dengan .timerdinonaktifkan, tidak ada yang akan memulai .servicefile.

Ingat juga untuk berlari systemctl --user stop myjob.timer. Menonaktifkan timer mencegahnya dimulai pada boot berikutnya, tetapi itu tidak menghentikan timer yang sedang berjalan.

Mark Stosberg
sumber
Saya memiliki blok [Instal] di setiap unit timer saya. Itu memiliki satu entri, mengatakan 'WantedBy = default.target'. Saya mendapatkan ini dari panduan yang saya ikuti. Bisakah saya menyingkirkan blok [Instal] sekaligus?
bitofagoob
1
BAIK. Saya telah membaca tentang bagian [Instal] dan saya pikir WantedBy = default.target ada di sana untuk memastikan bahwa unit, ketika diaktifkan, dihidupkan selama sesi boot normal (baik multi-user atau grafis). Saya akan menerima saran Mark Stosberg dan hanya menonaktifkan unit timer. Saya juga akan menandai jawabannya sebagai solusinya. Tanda Ceria!
bitofagoob
2
Anda ingin bagian [Instal] pada unit pengatur waktu Anda agar dijalankan pada saat boot. Biasanya WantedBy=timers.target. Anda hanya perlu [Install]bagian untuk layanan jika Anda ingin layanan dimulai pada saat boot, yang sepertinya tidak Anda inginkan dalam kasus ini.
Mark Stosberg
1
Terima kasih. Saya telah menghapus bagian [Instal] dari unit layanan dan mengubah bagian [Instal] di timer saya ke WantedBy = timers.target.
bitofagoob