데비안에서 특정 시간 동안 크론 작업이 실행되는 것을 방지하는 방법은 무엇입니까? ( '게임'/ '성능 모드')


12

cron 작업으로 로그 검사를 설정하고 프로세스 grep가 실행될 때마다 logcheck내 CPU의 약 1/4을 차지합니다.

이제는 전체 CPU 용량이 필요한 특정 시간이 있으며 시스템이 특정 / 프로세스를 제외하고 가능한 한 적은 리소스를 차지하게합니다 (어떻게 든 지정할 수 있음).

KDE 시스템과 함께 데비안 9.1을 사용자가 명시 적으로 시작하지 않은 프로세스가 많은 시스템 리소스를 차지하지 못하게하고 백그라운드 프로세스의 부하를 줄이고 가장 중요한 성능 모드 (또는 '게임 모드')로 설정할 수 있습니까? : 해당 모드가 다시 중지 될 때까지 cron 작업을 지연합니까?


6
간단한 해결책은 cron 작업에서 logcheck를 실행하는 것이 아니라 사용자 정의 스크립트를 작성하여 cron 작업에서 실행하는 것입니다. 스크립트에서 먼저 필요한 검사를 수행 한 다음 검사가 모두 통과되면 스크립트 끝에서 logcheck를 실행하십시오.
소스 코드

5
우선 순위를 확인하십시오. CPU가 19로 줄어든 경우 CPU에 다른 작업이 없을 때만 실행됩니다.
Thorbjørn Ravn Andersen

답변:


18

"확실한 시간"이 고정되어 있지 않은 경우, 시스템이 "성능 모드"에 들어가고 나올 때 수동으로 지정하려면 간단히 중지하고 시작할 수 있습니다 cron.

sudo systemctl stop cron

cron 작업이 실행되지 못하게하고

sudo systemctl start cron

다시 활성화합니다.

anacron대신에 체크 아웃 cron할 수도 있습니다. 용도에 맞는 방식으로 전 세계적으로 조정하는 것이 더 쉬울 수 있습니다.


12

나는 두 가지 접근법을 고려할 것이다.

  1. 그대로 일정을두고 있지만, 모든 실행 cron중인 작업을 nice가능성도하고 ionice:

    0 * * * *    root    ionice -c3 nice /some/command and parameters
    
  2. cron특정 시간 동안 작업을 금지하십시오 . 플래그 파일을 만들거나 제거 할 수있는 모든 사용자가이 방법을 제어 할 수 있습니다. 게임 시작 스크립트에 및 명령을 추가하여 필요에 따라 설정되는 게임 모드를 사용하려는 경우에는 효과가있을 수 있습니다 . ( 대신 에 사용해야 할 수도 있지만 모든 사용자에게 공개적으로 열려 있습니다.)touchrm/tmp/var/run

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

일단 설정되면 두 가지 방법 모두 루트 액세스가 필요하지 않습니다. 또한이 제어를 받아야하는 작업과 그렇지 않은 작업을 미리 결정할 수 있습니다.


1
옳은. 사용 가능한 CPU가 많을 때 병목 현상이 발생하는 이유는 무엇입니까? OS 우선 순위는 부족하지 않은 경우 임의로 시작됩니다.
MSalters

-c3 -n7적어도 리눅스에서는 그 조합이 의미가 있다고 생각하지 않습니다 . 유휴 스케줄링 클래스에는 우선 순위가 없습니다.
gardenhead

@gardenhead 죄송합니다. 나는 -c2 -n7나 자신을 사용 하지만 이 대답 을 위해 유휴 상태 로 수업을 중단했을 때 우선 순위를 제거하기 위해 생략했습니다.
roaima
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.