Bagaimana cara menonaktifkan semua yang ada di crontab -l?

71

Saya hanya ingin menghentikan semuanya. Jangan mengeksekusi apa pun yang terdaftar di crontab -l.

Alex
sumber

Jawaban:

64

crontab -ekemudian komentari setiap baris yang tidak ingin Anda jalankan #.

gregf
sumber
135

Pertama, buat cadangan crontab:

crontab -l > my_cron_backup.txt

Maka Anda dapat mengosongkannya:

crontab -r

Untuk mengembalikan:

crontab my_cron_backup.txt
crontab -l
kubanczyk
sumber
2
Hal ini sangat membantu ketika /tmprusak (dan jika -e crontab Anda menggunakan mktempdalam /tmp.
Kevin Lee
1
+1 Akhirnya, inilah yang bekerja untuk saya. Terima kasih
Pavan
@alex Ini seharusnya jawaban yang diterima
Luis Ferrao
crontab -radalah apa yang saya cari. Terima kasih!
forzagreen
65

Apakah Anda memiliki akses root? Jeda cron saja

sudo /etc/init.d/crond stop

Kemudian restart ketika Anda siap

sudo /etc/init.d/crond start
muffinista
sumber
5
Itu dengan asumsi Anda ingin menghentikan crontab untuk semua pengguna termasuk root. Jawaban yang dipilih, dan jawaban kubanskamac akan melakukannya hanya untuk pengguna saat ini (diinginkan?).
Kevin K
layanan crond kami telah dihentikan. Ini mengarahkan kami ke arah yang benar untuk memeriksa apakah crond berjalan, dan restart.
Paul
4
Jika Anda menggunakan Ubuntu, Anda dapat menggunakansudo service cron stop
Joel
1
Di Debian ini /etc/init.d/cron stop.
Faheem Mitha
2
@Faheem pada Debian saat ini juga service cron stop.
Stephen Kitt
10

Jika Anda menggunakan vi sebagai editor, maka cukup masukkan :%s/^/#/dalam mode perintah. Di semua baris (%), ia menggantikan (s ///) awal baris (^) dengan hash (#).

andunix
sumber
Jika Anda tidak menggunakan vi sebagai editor default, Anda dapat "memaksa" penggunaan vi like EDITOR=vi; crontab -e, dan daripada Anda dapat menggunakan trik di atas.
Betlista
2
Untuk :%s/^#//
membatalkan
3

Tidak senang dengan opsi di atas karena mereka bukan satu baris.

Untuk menonaktifkan crontab -l | perl -nle 's/^([^#])/# $1/;print' | crontab

Untuk mengaktifkan crontab -l | perl -nle 's/^#\s*([0-9*])/$1/;print' | crontab

contoh penggunaan (diedit untuk menunjukkan tidak menonaktifkan komentar)

$ crontab -l
# Comment
0 0 * * 0 /opt/something.sh

$ crontab -l|perl -nle 's/^([^#])/# $1/;print'|crontab
$ crontab -l
# Comment
# 0 0 * * 0 /opt/something.sh

$ crontab -l|perl -nle 's/^#\s*([0-9*])/$1/;print'|crontab
$ crontab -l
# Comment
0 0 * * 0 /opt/something.sh

Menguji ini di RHEL dan AIX, dan harus bekerja di luar kotak tanpa perlu diinstal

segaps
sumber
1
Juga dapat mencari detail spesifik di cronjob crontab -l | perl -nle 's / ^ # \ s * ([0-1 *]) / $ 1 /; cetak jika /.+mytexttofind.+/'
Jason
Bisakah Anda jelaskan mengapa komentar tidak terpengaruh? Apa pola yang Anda gunakan untuk mendeteksinya?
Sopalajo de Arrierez
Hm, di bawah Debian Jessie saya mendapatkan error berikut: crontab: usage error: file name must be specified for replace. Tampaknya Anda harus menentukan file (?) Saat menggunakan crontabtanpa parameter apa pun (yang secara replacedefault).
fritzmg
2

Dalam pengujian terbatas saya, pengaturan shell ke / bin / false works. Anda masih akan melihat /opt/job.sheksekusi di log Anda, tetapi itu akan menjadi noop:

SHELL=/bin/false

*/1 * * * *    root  /some/job.sh
Abu
sumber
1

Dalam rasa apa pun dari Unix / Linux yang saya tahu:

mv /var/spool/cron  /var/spool/cron_is_disabled

Ini:

  • menonaktifkan crontab semua pengguna
  • tetapi bukan sistem / etc / crontab (/etc/cron.daily. dll.)
  • tetap berlanjut saat reboot
  • satu kalimat, ya :)
kubanczyk
sumber
1

Saya mendapat ide dari jawaban yang diberikan oleh @segaps

Untuk menonaktifkan:

crontab -l | awk '{print "# "$1}' | crontab

Untuk mengaktifkan:

crontab -l | cut -c 3- | crontab

Satu-satunya masalah dengan solusi yang disediakan oleh segaps, adalah bahwa itu akan menghapus komentar pekerjaan, yang sudah dikomentari oleh pengguna.

Sarvsav Sharma
sumber
0

Untuk melakukan ini, gunakan nano sebagai editor:

sudo env EDITOR=nano crontab -e

lalu komentari setiap baris yang tidak ingin Anda jalankan dengan #

samsmith
sumber