사용자의 크론 작업을 일시적으로 비활성화하는 방법은 무엇입니까?


14

하나 이상의 사용자 크론 작업을 일시적으로 비활성화하려면 어떻게합니까? 특히, 나는 사용자의 cron 권한을 일시 중단하고 싶지 않습니다. 단지 어떤 작업도 해고하지 않습니다.

SLES 11 SP2 및 SP3 시스템에 있습니다.


당신은 단지 사용할 수 없습니다 -u user의 스위치 crontab명령을하고 넣어 #주어진 사용자에 대해 사용하지 않도록 설정하는 작업의 앞에 주석 문자를?
Janis

@Janis는 사용자가 이미 주석 처리 한 내용을 추적해야하며 사용자는 계속해서 다른 것을 추가 할 수 있습니다 (/etc/cron.deny에 추가하지 않음). 너무 많은 수동 작업 :(
Dinesh

Dinesh, 나는 당신이 비활성화 한 것에 대해 세분화 된 제어가 필요하다는 것을 이해했습니다.
Janis

답변:


10

touch /var/spool/cron/crontabs/$username; chmod 0 /var/spool/cron/crontabs/$username트릭을해야합니다. chmod 600및로 복원 touch하십시오 (파일의 mtime을 변경하여 cron을 다시로드하도록 시도하십시오).

적어도 데비안과 아마도 Vixie cron을 사용하는 경우 chmod 400 /var/spool/cron/crontabs/$username에도 트릭을 수행합니다.이 구현은 권한이 정확히 600임을 주장하기 때문입니다. 그러나 이것은 사용자가 crontab명령을 실행할 때까지만 지속됩니다 .

강력한 방법을 원한다면 crontab을 일시적으로 이동하거나 권한을 변경 하고 일시적으로에 추가하는 것 보다 낫다고 생각하지 않습니다 /etc/cron.deny.


감사. 내 시스템에서는 / var / spool / cron / tabs / $ username입니다. 그러나 여전히 후에도 실행 chmod됩니다.
Dinesh

파일 권한을 변경 한 후 cron을 중지 / 다시 시작해야했습니다. 나는 cron이 물건을 메모리에 담을 수 있기 때문에 아마 생각했습니다. 그래서 나는 touch $username뒤에 추가 했습니다 chmod. 그러나 그것은 도움이되지 못했습니다. (btw 귀하의 포인트를 얻었습니다 cron.deny)
Dinesh

@Dinesh 실제로 파일의 mtime을 업데이트해야합니다. 그렇지 않으면 cron은 파일이 변경되지 않았다고 생각하고 캐시 된 정보를 유지합니다. 어제 테스트하는 동안이를 알았지 만 대답에서 언급하는 것을 잊었습니다. 미안합니다.
Gilles 'SO- 악의를 그만두십시오'

당신은 모든 표준 사용자를 비활성화하려면 :chgrp root /var/spool/cron/crontabs
shrimpwagon

9

사용자 crontab을 비활성화하는 방법은 다음과 같습니다.

crontab -l -u [username] >/tmp/[username].cron.tmp
crontab -r -u [username]

다시 활성화하려면 다음을 수행하십시오.

crontab -u [username] /tmp/[username].cron.tmp

이것은 루트 없이도 사용자로 실행할 수 있다는 이점이 있습니다 (-u 매개 변수를 제거).


0

데비안을 사용한다면, 이것은 데비안 AFAIK에만 적용됩니다 :

cronjob의 이름에 점을 추가하면됩니다.

행동은 데비안 공식 문서에서 참조됩니다 :

https://www.debian.org/doc/debian-policy/#cron-job-file-names

cron 작업 파일 이름에는 마침표 나 더하기 문자 (. 또는 +)를 포함해서는 안됩니다. cron이 파일을 무시하게됩니다. 대신 밑줄 (_)을 사용해야합니다. + 문자.


0

cron예를 들어, 시스템 유지 관리를 수행하는 동안 모든 작업을 완전히 중지하려는 경우 명령이 정상적으로 수행됩니다.

systemctl stop crond.service

그리고, 재개

systemctl start crond.service

나는 그것들을 실행하기 위해 루트 또는 휠 권한이 필요하다고 가정합니다. 필요한 경우 sudo 또는 (마지막으로) 루트를 통해 로그인하여 실행하십시오.

제기 된 특정 질문에 대해서는 지나치지 만 "원 스톱 쇼핑"을 제공하며 파일 시스템 또는 임시 파일을 가지고 놀 필요가 없습니다.


3
이것은 모든 사용자에 대해 cron을 비활성화하므로 실제로 질문에 대답하지는 않습니다.
Scott

-1

나는 systemctl을 통한 경로가 취할 길이라는 것에 동의합니다. 라즈베리에서 발가락 코 만드는

sudo systemctl stop cron.service
sudo systemctl start cron.service

1
전체 cron서비스 가 중지됩니다 . OP는 비활성화 할 사용자의 crontab을 선택할 수 있기를 원했습니다.
roaima

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.