bagaimana cara menonaktifkan sementara cronjobs pengguna?
14
Bagaimana cara saya menonaktifkan sementara satu atau lebih pekerjaan cron pengguna? Secara khusus, saya tidak ingin menunda hak cron pengguna - hanya tidak memecat pekerjaan mereka.
Tidak bisakah Anda hanya menggunakan -u usersakelar crontabperintah dan meletakkan #karakter komentar di depan pekerjaan untuk menonaktifkan pengguna yang diberikan?
Janis
@Janis maka saya perlu melacak apa yang sudah dikomentari oleh pengguna, ditambah pengguna dapat melanjutkan dan menambahkan hal lain (saya tidak menambahkannya ke /etc/cron.deny). Terlalu banyak pekerjaan manual :(
Dinesh
Dinesh, saya (salah-) mengerti Anda ingin kontrol granular baik tentang apa yang Anda menonaktifkan.
Janis
Jawaban:
10
touch /var/spool/cron/crontabs/$username; chmod 0 /var/spool/cron/crontabs/$usernameharus melakukan trik. Pulihkan dengan chmod 600dan touch(Anda perlu mengubah waktu file untuk membuat cron (berupaya) memuatnya kembali).
Pada setidaknya Debian dan mungkin dengan cron Vixie secara umum, chmod 400 /var/spool/cron/crontabs/$usernamejuga melakukan trik, karena implementasi itu menekankan pada izin yang tepat 600. Namun ini hanya berlangsung sampai pengguna menjalankan crontabperintah.
Jika Anda menginginkan cara yang kuat, saya rasa tidak ada yang lebih baik daripada memindahkan crontab sementara atau mengubah izin, dan menambahkannya untuk sementara /etc/cron.deny.
Terima kasih. Pada sistem saya ini adalah / var / spool / cron / tabs / $ username. Tetapi masih dijalankan, bahkan setelah chmod.
Dinesh
Setelah mengubah perms file, saya juga perlu menghentikan / memulai ulang cron. Saya pikir itu mungkin karena cron mungkin memegang barang-barang itu di memori. Jadi saya menambahkan touch $usernamesetelah chmod. Tapi itu tidak membantu. (btw mengerti maksud Anda cron.deny)
Dinesh
@Dinesh Memang Anda perlu memperbarui mtime file atau cron berpikir itu tidak berubah dan menyimpan informasi yang di-cache. Saya perhatikan ini saat menguji kemarin tetapi lupa menyebutkannya dalam jawaban saya, maaf tentang itu.
Gilles 'SO- berhenti bersikap jahat'
Jika Anda ingin menonaktifkan untuk semua pengguna standar, cukup:chgrp root /var/spool/cron/crontabs
shrimpwagon
9
Bagaimana dengan hal seperti ini untuk menonaktifkan crontab pengguna:
Nama file tugas cron tidak boleh menyertakan periode atau karakter plus (. Atau +) karakter karena ini akan menyebabkan cron mengabaikan file. Garis bawah (_) harus digunakan sebagai ganti. dan + karakter.
Jika Anda hanya ingin menghentikan semua cronpekerjaan untuk sementara waktu - misalnya, saat melakukan pemeliharaan sistem yang mereka mungkin berinteraksi dengan buruk - perintah biasanya
systemctl stop crond.service
dan, untuk melanjutkan
systemctl start crond.service
Saya kira Anda membutuhkan root atau otoritas roda untuk menjalankannya; jika perlu, jalankan melalui sudo atau (pilihan terakhir) login sebagai root.
Berlebihan untuk pertanyaan spesifik yang diajukan, tetapi memberikan "one-stop shopping" dan tidak perlu bermain dengan sistem file atau file sementara.
-u user
sakelarcrontab
perintah dan meletakkan#
karakter komentar di depan pekerjaan untuk menonaktifkan pengguna yang diberikan?Jawaban:
touch /var/spool/cron/crontabs/$username; chmod 0 /var/spool/cron/crontabs/$username
harus melakukan trik. Pulihkan denganchmod 600
dantouch
(Anda perlu mengubah waktu file untuk membuat cron (berupaya) memuatnya kembali).Pada setidaknya Debian dan mungkin dengan cron Vixie secara umum,
chmod 400 /var/spool/cron/crontabs/$username
juga melakukan trik, karena implementasi itu menekankan pada izin yang tepat 600. Namun ini hanya berlangsung sampai pengguna menjalankancrontab
perintah.Jika Anda menginginkan cara yang kuat, saya rasa tidak ada yang lebih baik daripada memindahkan crontab sementara atau mengubah izin, dan menambahkannya untuk sementara
/etc/cron.deny
.sumber
chmod
.touch $username
setelahchmod
. Tapi itu tidak membantu. (btw mengerti maksud Andacron.deny
)chgrp root /var/spool/cron/crontabs
Bagaimana dengan hal seperti ini untuk menonaktifkan crontab pengguna:
dan untuk mengaktifkan kembali:
Ini memiliki keuntungan tambahan bahwa Anda dapat menjalankannya sebagai pengguna itu tanpa perlu root (cukup ambil parameter -u).
sumber
Jika Anda menggunakan Debian, ini hanya berlaku untuk Debian AFAIK :
Anda dapat melakukannya dengan menambahkan titik pada nama cronjob.
Perilaku disebutkan pada dokumen resmi Debian:
https://www.debian.org/doc/debian-policy/#cron-job-file-names
sumber
Jika Anda hanya ingin menghentikan semua
cron
pekerjaan untuk sementara waktu - misalnya, saat melakukan pemeliharaan sistem yang mereka mungkin berinteraksi dengan buruk - perintah biasanyadan, untuk melanjutkan
Saya kira Anda membutuhkan root atau otoritas roda untuk menjalankannya; jika perlu, jalankan melalui sudo atau (pilihan terakhir) login sebagai root.
Berlebihan untuk pertanyaan spesifik yang diajukan, tetapi memberikan "one-stop shopping" dan tidak perlu bermain dengan sistem file atau file sementara.
sumber
Saya setuju, jalur via systemctl adalah yang harus diambil. Pada raspberry, perintah kaki akan menjadi
sumber
cron
layanan. OP ingin dapat memilih crontab pengguna mana yang akan dinonaktifkan.