Bagaimana mencegah pekerjaan cron agar tidak dijalankan pada waktu-waktu tertentu di Debian? (a 'permainan' / 'mode kinerja')

12

Sepertinya saya telah logcheck ditetapkan sebagai tugas cron dan setiap kali itu proses berjalan grepdengan logcheckmemakan sekitar ¼ dari CPU saya.

Sekarang saya memiliki waktu-waktu tertentu di mana saya membutuhkan kapasitas CPU penuh saya dan sistem saya mengambil sumber daya sesedikit mungkin kecuali untuk spesifik / proses (yang saya mungkin dapat menentukan entah bagaimana).

Apakah mungkin untuk mengatur Debian 9.1 saya dengan mesin KDE menjadi semacam mode kinerja (atau 'mode permainan') yang mencegah proses yang tidak dimulai secara eksplisit oleh pengguna dari mengambil banyak sumber daya sistem, menurunkan beban proses latar belakang dan yang paling penting : menunda pekerjaan cron hingga mode itu dihentikan lagi?

mYnDstrEAm
sumber
6
Solusi sederhana adalah tidak menjalankan logcheck di pekerjaan cron, tetapi sebaliknya untuk menulis skrip khusus dan menjalankannya di pekerjaan cron. Dalam skrip, pertama-tama lakukan pemeriksaan apa pun yang Anda perlukan dan kemudian jalankan centang di akhir skrip jika semua cek lolos.
SauceCode
5
Periksa prioritas. Jika sudah diturunkan ke 19 hanya berjalan ketika cpu tidak ada lagi yang harus dilakukan.
Thorbjørn Ravn Andersen

Jawaban:

18

Jika "waktu-waktu tertentu" tidak diperbaiki, yaitu Anda ingin menentukan secara manual ketika sistem Anda memasuki dan meninggalkan "mode kinerja", Anda bisa berhenti dan mulai cron:

sudo systemctl stop cron

akan mencegah pekerjaan cron dari berjalan, dan

sudo systemctl start cron

akan mengaktifkannya kembali.

Anda juga bisa mengecek anacronalih-alih cron, mungkin akan lebih mudah untuk mengubah secara global dengan cara yang sesuai dengan penggunaan Anda.

Stephen Kitt
sumber
12

Saya akan mempertimbangkan dua pendekatan

  1. Biarkan penjadwalan tidak tersentuh tetapi jalankan semua cronpekerjaan di bawah nice, dan mungkin bahkan ionice:

    0 * * * *    root    ionice -c3 nice /some/command and parameters
    
  2. Larang cronpekerjaan apa pun selama waktu tertentu. Ingat bahwa setiap pengguna yang dapat membuat (atau menghapus) file flag dapat mengendalikan pendekatan ini. Itu mungkin berhasil jika Anda ingin memiliki mode permainan yang diatur sesuai permintaan , dengan menambahkan touchdan rmperintah ke skrip start-up permainan Anda. (Anda mungkin perlu menggunakan /tmpdaripada /var/run, tapi kemudian sepele terbuka untuk pengguna mana pun.)

    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...
    

Setelah diatur, tidak ada pendekatan yang membutuhkan akses root. Selain itu, Anda dapat memutuskan sebelumnya pekerjaan mana yang harus dikontrol, dan mana yang tidak.

roaima
sumber
1
Benar. Mengapa menghambat proses ketika ada banyak CPU yang tersedia? Prioritas OS muncul ketika ada kelangkaan, tidak semena-mena.
MSalters
Saya tidak percaya -c3 -n7kombinasi ini masuk akal, setidaknya di Linux. Kelas penjadwalan siaga tidak memiliki prioritas.
gardenhead
@gardenhead oops Anda benar. Saya menggunakan -c2 -n7diri saya sendiri tetapi ketika saya menjatuhkan kelas untuk menganggur untuk jawaban ini saya dihilangkan untuk menghapus prioritas.
roaima