Crontab -l de her şey nasıl devre dışı bırakılır?


70

Sadece her şeyi duraklatmak istiyorum. Üzerinde listelenen hiçbir şeyi çalıştırma crontab -l.

Yanıtlar:


63

crontab -esonra çalıştırmak istemediğiniz her satırı yorumlayın #.


134

İlk önce crontab'ı yedekleyin:

crontab -l > my_cron_backup.txt

O zaman boşaltabilirsiniz:

crontab -r

Yenilemek:

crontab my_cron_backup.txt
crontab -l

2
Bu özellikle yararlı olan /tmpbozuk (ve crontab -e kullanıyorsa mktempiçinde /tmp.
Kevin Lee

1
+1 Sonunda, bu benim için çalıştı. Teşekkür ederim
Pavan

@alex Bu kabul edilen cevap olmalıdır
Luis Ferrao

crontab -raradığım şey buydu. Teşekkürler !
forzagreen

64

Kök erişiminiz var mı? Sadece cron'u duraklat

sudo /etc/init.d/crond stop

Sonra hazır olduğunuzda yeniden başlatın

sudo /etc/init.d/crond start

5
Bu, root dahil tüm kullanıcılar için crontab'ı durdurmak istediğinizi varsayar. Seçilen cevap ve kubanskamac'ın cevabı sadece güncel (istenen?) Kullanıcı için yapacaktır.
Kevin K

Crond servisimiz durduruldu. Bu, Crond'un çalışıp çalışmadığını kontrol etmek için bizi doğru yönde gösterdi ve yeniden başlattı.
Paul

4
Eğer Ubuntu'daysanız kullanabilirsinizsudo service cron stop
Joel

1
Debian'da bu /etc/init.d/cron stop.
Faheem Mitha

2
Bugünlerde Debian'da @Faheem de var service cron stop.
Stephen Kitt

10

Vi'yi editör olarak kullanıyorsanız, sadece :%s/^/#/komut moduna giriniz . Tüm satırlarda (%), satırın (^) başlangıcını (s / /) ile değiştirir (s ///).


Vi'yi varsayılan düzenleyici olarak kullanmıyorsanız, vi'nin kullanımını "zorlayabilir" EDITOR=vi; crontab -eve yukarıdaki numarayı kullanabilirsiniz.
Betlista

2
Açıkçası, komut şudur::%s/^#//
NP01 14:13

3

Tek seçenek olmadığı için yukarıdaki seçeneklerden memnun değildi.

Devre dışı bırakmak için crontab -l | perl -nle 's/^([^#])/# $1/;print' | crontab

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

kullanım örneği (yorumları devre dışı bırakmadığını göstermek için düzenlendi)

$ 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

Bunu RHEL ve AIX üzerinde test etti ve herhangi bir şey monte edilmeden kutunun dışında çalışmalıdır.


1
Ayrıca cronjob crontab içinde belirli detayları arayabilirsin -l | perl -nle; 's / ^ # \ s * ([0-1 *]) / 1 $ / eğer /.+mytexttofind.+/ yazdırmak'
Jason

Lütfen yorumların neden etkilenmediğini açıklayabilir misiniz? Onları tespit etmek için kullandığınız kalıp nedir?
Sopalajo de Arrierez

Hımm, Debian Jessie altında aşağıdaki hatayı alıyorum: crontab: usage error: file name must be specified for replace. crontabHerhangi bir parametre kullanmadan ( replacevarsayılan olarak) bir dosya (?) Belirtmeniz gerekiyor gibi görünüyor .
fritzmg

2

Sınırlı testimde, kabuğu / bin / false olarak ayarlamak. /opt/job.shKayıtlarınızda çalıştırmayı göreceksiniz , ancak bir not olacak:

SHELL=/bin/false

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

1

Tanıdığım Unix / Linux'un tadında:

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

Bu:

  • Tüm kullanıcıların crontabs devre dışı bırakır
  • ancak sistem / etc / crontab değil (/etc/cron.daily. vs.)
  • yeniden başlatma boyunca ısrar ediyor
  • tek gömlek, duh :)

1

@Segaps tarafından verilen cevaptan fikrim var

Devre dışı bırakmak için:

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

Etkinleştirmek:

crontab -l | cut -c 3- | crontab

Segaps tarafından sağlanan çözüm ile ilgili tek sorun, kullanıcı tarafından zaten yorumlanmış olan işleri rahatsız etmesidir.


0

Bunu yapmak için, nano'yu editör olarak kullanmak:

sudo env EDITOR=nano crontab -e

sonra çalıştırmak istemediğiniz her satırı yorumlayın.

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.