Debian'da cron işlerinin belirli zamanlarda yürütülmesini nasıl önleyebilirim? (bir 'oyun' / 'performans modu')


12

Ben logcheck bir cron işi olarak kurdunuz gibi görünüyor ve onu çalıştırmak süreç her greptarafından logcheckbenim CPU ¼ etrafında kaplıyor.

Şimdi tam CPU kapasiteme ihtiyacım olan belirli zamanlarım var ve sistemimin belirli / işlemler (belki bir şekilde belirtebileceğim) dışında mümkün olan en az kaynağı almasını sağlıyorum.

Debian 9.1'imi KDE makinesiyle, kullanıcı tarafından açıkça başlatılmayan işlemlerin çok fazla sistem kaynağı almasını engelleyen, arka plan süreçlerinin yükünü azaltan ve en önemlisi bir tür performans moduna (veya 'Oyun modu') ayarlamak mümkün müdür? : bu mod tekrar durdurulana kadar cron işlerini geciktirir mi?


6
Basit bir çözüm, cron işinde logcheck çalıştırmak değil, bunun yerine özel bir komut dosyası yazmak ve bunu cron işinde çalıştırmak olacaktır. Komut dosyasında, önce ihtiyacınız olan tüm denetimleri gerçekleştirin ve ardından tüm denetimler başarılı olursa, komut dosyasının sonunda logcheck komutunu çalıştırın.
SauceCode

5
Önceliği kontrol edin. Eğer 19'a kadar niced ise, sadece cpu'nun yapacak başka bir şeyi olmadığında çalışır.
Thorbjørn Ravn Andersen

Yanıtlar:


18

"Belirli zamanlar" sabit değilse, yani sisteminizin "performans moduna" girdiğinde ve bu moddan ne zaman çıktığını manuel olarak belirtmek istiyorsanız, durup başlatabilirsiniz cron:

sudo systemctl stop cron

herhangi bir cron işinin çalışmasını engelleyecek ve

sudo systemctl start cron

bunları yeniden etkinleştirir.

Bunun anacronyerine kontrol cronedebilirsiniz, kullanımlarınıza uyacak şekilde küresel olarak ince ayar yapmak daha kolay olabilir.


12

İki yaklaşımı düşünürdüm

  1. Zamanlamayı el değmeden bırakın ancak cronaltındaki tüm işleri çalıştırın niceve hatta muhtemelen ionice:

    0 * * * *    root    ionice -c3 nice /some/command and parameters
    
  2. cronBelirli zamanlarda işlere izin verme . Bayrak dosyasını oluşturabilen (veya kaldırabilen) herhangi bir kullanıcının bu yaklaşımı denetleyebileceğini unutmayın. İsteğe bağlı olarak ayarlanmış bir oyun moduna sahip olmak istiyorsanız , oyununuzun başlangıç ​​komut dosyasına touchve rmkomutlarını ekleyerek bu işe yarayabilir . (Bunun /tmpyerine kullanmanız gerekebilir /var/run, ancak daha sonra herhangi bir kullanıcıya açıktır.)

    0 18 * * *      root    touch /var/run/no_cron
    0 19 * * *      root    rm -f /var/run/no_cron
    
    0 * * * *       root    test ! -f /var/run/no_cron && /some/command...
    

Kurulduktan sonra, her iki yaklaşım da kök erişimi gerektirmez. Dahası, hangi işlerin bu kontrole tabi tutulması ve hangilerinin yapılmaması gerektiğine önceden karar verebilirsiniz.


1
Doğru. Neden bol miktarda CPU bulunduğunda bir süreci tıkayın? OS öncelikleri keyfi olarak değil, bir kıtlık olduğunda devreye girer.
MSalters

-c3 -n7Kombinasyonun en azından Linux'ta mantıklı olduğuna inanmıyorum . Boşta zamanlama sınıfı hiçbir öncelikleri var.
gardenhead

@gardenhead ayy haklısın. Kendimi kullanıyorum -c2 -n7ama bu cevap için boşta bırakmak için sınıfı düşürdüğümde önceliği kaldırmayı ihmal ettim.
roaima
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.