Geçerli çalışan crontab görevlerini nasıl görebilir / durdurabilirim?


20
  1. Devam eden crontab görevlerini nasıl görebilirim?
  2. Devam eden crontab görevlerini manuel olarak nasıl durdurabilirim ?

[Bu] soru mevcut çalışan cron süreçlerini görmek hakkında mı?

Evet

Bir işlemi manuel olarak öldürmek için pkill kullanmaktır.

Pkill / killall'ı düşünmüştüm, fakat crontab dosyasındaki komutlarımın bazıları sırasıyla! bu, bir komutu bitirdikten sonra bir sonrakinin başlatılacağı anlamına gelir! Örneğin:

sudo crontab -e
00 10 * * * /usr/bin/wget LINK ; shutdown -h now

Öyleyse, öldürürsem wget, bilgisayar kapatılacak !!! -> Bir cron görevini tamamen öldürmek istiyorum, bunun bir parçası değil!

Sıradaki pkillproblem: Peki senaryolardan ne haber? (Bazı bash komut dosyalarını içe aktardım crontab -e) ->sudo pkill ???


Şu anki çalışan cron işlemlerini görmekle ilgili sorunuz mu var? veya cron işleri listesi? Bu konuda daha net olmak için lütfen sorunuzu düzenleyin. Çalışan cron işini durdurmak için ( askubuntu.com/q/272419/66980 ) gidin
Mohammad Etemaddar

Düzenlenen; 1. evet, mevcut çalışan cron işlemlerini izlemek? (Süreçleri ön plana çıkarmak istiyorum); 2. Sonra elle durdurmak mı istiyorum? (crontab çizelgesinden değil)
mini 19

Sorunuza ek bilgi eklemenin en iyi yolu, düzenleme butonu ile düzenlemektir . Bu şekilde daha iyi görülebilir ve yorumlar çoğunlukla ikincil, geçici amaçlar içindir. Yorumlar çeşitli koşullar altında kaldırılmıştır. Sorunuz için önemli olan her şey sorunun kendisinde olmalıdır.
guntbert

Yanıtlar:


42

Öncelikle, crontab'daki her satır için sadece bir komut kullanın. Bu crontab satırını değiştirin:

00 10 * * * /usr/bin/wget LINK ; shutdown -h now

bu yüzden benziyor:

00 10 * * * /path/to/my/crontab/script1.sh

ve /path/to/my/crontab/script1.shbu içerikle oluşturun:

#!/bin/bash
/usr/bin/wget LINK
shutdown -h now

Tabii ki, yürütme izni vermeyi unutmayın:

chmod +x /path/to/my/crontab/script1.sh

İkincisi, çalışan crontab görevlerini, çıktılarında yararlı ve okunabilir bir biçimde görebilirsiniz:

ps -o pid,sess,cmd afx | egrep -A20 "( |/)cron( -f)?$"

İlk satırlarda görünecekler, bunun gibi:

1108  1108 cron
4288  1108 \_ CRON
4289  4289     \_ /bin/sh -c /path/to/my/crontab/script1.sh
4290  4289         \_ /bin/bash /path/to/my/crontab/script1.sh
4295  4289             \_ /usr/bin/wget LINK

İlk sütun PID, ikinci oturum kimliği ve üçüncü sütun cron tarafından başlatılan komuttur. Oturum Kimliğini kullanarak belirli bir cron göreviyle ilgili tüm işlemleri öldürebilirsiniz, bu nedenle yukarıdaki örnekte Oturum Kimliği 4289'u öldürmelisiniz:

pkill -s 4289

1
"Çalışan crontab görevlerini" komutunu çalıştırırken sh ps: cmd: keyword not found ps: illegal argument: afx
bunu alıyorum

Yani cron süreçlerini göstermek için "kullanışlı" bir yol vermiyor mu?
Cirelli94

@alecrust: Bunu deneps -o pid,sess,cmd -afx | egrep "( |/)cron( -f)?$"
Bulrush

0

Bir işlemi manuel olarak öldürmek için bir yol kullanmaktır pkill. pkill, adında aşağıdaki örneğe sahip tüm işlemleri durduracaktır. örneğin tüm wget işlemlerini durdurmak için kullanın:

sudo pkill wget

Pkill / killall'ı düşünmüştüm, fakat crontab dosyasındaki komutlarımın bazıları sırasıyla! bu, bir komutu bitirdikten sonra bir sonrakinin başlatılacağı anlamına gelir! örneğin: sudo crontab -e=> 00 10 * * * /usr/bin/wget LINK ; shutdown -h now=> Öyleyse, wget'i öldürürsem , bilgisayar kapatılacak !!! -> Bir cron görevini tamamen öldürmek istiyorum, bunun bir parçası değil! Bir sonraki pkill problemi: Ya senaryolar? (Bazı bash komut dosyalarını içe aktardım crontab -e) ->sudo pkill ???
mini 19

0

cronjob'ını böyle değiştir

00 10 * * * /usr/bin/wget LINK && shutdown -h now

Bunun çalışması gerekir, çünkü &&ikinci komutun yalnızca birincisi doğru bir şekilde tamamlandığında (0 statüsünü konsola / sisteme döndürerek) uygulandığı anlamına gelir, (işlem kullanıcı tarafından öldürüldüğü için) 0 sonra başka bir değer döndürmelidir.

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.