Bagaimana cara menonaktifkan semua yang ada di crontab -l?


71

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

Jawaban:


64

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


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

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

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 (#).


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


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

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 :)

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.


0

Untuk melakukan ini, gunakan nano sebagai editor:

sudo env EDITOR=nano crontab -e

lalu komentari setiap baris yang tidak ingin Anda jalankan dengan #

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.