crontab -l에서 모든 것을 비활성화하는 방법은 무엇입니까?


68

모든 것을 일시 중지하고 싶습니다. 에 나열된 항목을 실행하지 마십시오 crontab -l.

답변:


61

crontab -e그런 다음 실행하고 싶지 않은 각 줄을 주석 처리하십시오 #.


133

먼저 crontab을 백업하십시오.

crontab -l > my_cron_backup.txt

그런 다음 비울 수 있습니다.

crontab -r

복원하려면

crontab my_cron_backup.txt
crontab -l

2
이것은 특히 /tmp손상된 경우 (그리고 crontab -e가 mktemp에서 사용하는 경우에 유용 합니다 /tmp.
Kevin Lee

1
+1 마지막으로, 이것이 나를 위해 일한 것입니다. 감사합니다
Pavan

@ 알렉스이 허용 대답해야한다
루이스 Ferrao

crontab -r내가 찾던 것입니다. 감사 !
forzagreen

64

루트 액세스 권한이 있습니까? 그냥 cron을 일시 중지

sudo /etc/init.d/crond stop

그런 다음 준비가되면 다시 시작하십시오.

sudo /etc/init.d/crond start

5
루트를 포함하여 모든 사용자에 대해 crontab을 중지한다고 가정합니다. 선택한 답변과 kubanskamac의 답변은 현재 (원하는 사람) 사용자에게만 해당됩니다.
Kevin K

우리의 crond 서비스가 중단되었습니다. 이것은 올바른 방향으로 우리에게 crond가 실행되고 있는지 확인하고 다시 시작하도록 지시했습니다.
Paul

4
Ubuntu를 사용하는 경우 다음을 사용할 수 있습니다.sudo service cron stop
Joel

1
데비안에서 이것은입니다 /etc/init.d/cron stop.
Faheem Mitha

2
요즘 데비안에 @Faheem도 있습니다 service cron stop.
Stephen Kitt

10

vi를 편집기로 사용하는 경우 :%s/^/#/명령 모드로 들어가십시오 . 모든 줄 (%)에서 줄의 시작 (^)을 해시 (#)로 대체합니다 (s ///).


vi를 기본 편집기로 사용하지 않는 경우 vi와 같은 vi 사용을 "강제" EDITOR=vi; crontab -e할 수 있으며 위의 트릭을 사용할 수 있습니다.
Betlista

2
주석을 해제하려면 명령은 다음과 같습니다:%s/^#//
NP01

3

하나의 라이너가 아니기 때문에 위의 옵션에 만족하지 않았습니다.

비활성화하려면 crontab -l | perl -nle 's/^([^#])/# $1/;print' | crontab

사용하려면 crontab -l | perl -nle 's/^#\s*([0-9*])/$1/;print' | crontab

사용 예 (댓글을 비활성화하지 않도록 표시하도록 편집 됨)

$ crontab -l
# Comment
0 0 * * 0 /opt/something.sh

$ crontab -l|perl -nle 's/^([^#])/# $1/;print'|crontab
$ crontab -l
# Comment
# 0 0 * * 0 /opt/something.sh

$ crontab -l|perl -nle 's/^#\s*([0-9*])/$1/;print'|crontab
$ crontab -l
# Comment
0 0 * * 0 /opt/something.sh

이것을 RHEL 및 AIX에서 테스트했으며 설치할 필요없이 즉시 사용할 수 있습니다.


1
또한 cronjob crontab -l | perl -nle 's / ^ # \ s * ([0-1 *]) / $ 1 /;/.+ mytexttofind. + /'인 경우 인쇄
Jason

댓글이 왜 영향을받지 않는지 설명해 주시겠습니까? 그것들을 탐지하기 위해 사용하는 패턴은 무엇입니까?
Sopalajo de Arrierez

흠, 데비안 Jessie에서 다음과 같은 오류가 발생 crontab: usage error: file name must be specified for replace합니다. crontab매개 변수없이 사용하면 파일 (?)을 지정해야합니다 ( replace기본적으로).
fritzmg

2

제한된 테스트에서는 셸을 / bin / false로 설정하면 작동합니다. 여전히 /opt/job.sh로그에서 실행되는 것을 볼 수 있지만 그것은 noop이 될 것입니다.

SHELL=/bin/false

*/1 * * * *    root  /some/job.sh

1

내가 아는 유닉스 / 리눅스 :

mv /var/spool/cron  /var/spool/cron_is_disabled

이:

  • 모든 사용자의 crontab을 비활성화합니다
  • 시스템 /etc/crontab(/etc/cron.daily 등)은 아님
  • 재부팅 후에도 지속
  • 하나의 라이너입니다, duh :)

1

@segaps가 제공 한 답변에서 아이디어를 얻었습니다.

비활성화하려면 :

crontab -l | awk '{print "# "$1}' | crontab

사용하려면:

crontab -l | cut -c 3- | crontab

segaps가 제공하는 솔루션의 유일한 문제점은 사용자가 이미 주석 처리 한 작업의 주석을 해제한다는 것입니다.


0

이를 위해 편집기로 nano를 사용하십시오.

sudo env EDITOR=nano crontab -e

그런 다음 실행하고 싶지 않은 각 줄을 주석으로 처리하십시오.

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