crontab을 처음 사용하고 있습니다. 매우 간단한 몇 가지 테스트 크론 작업을 작성하고 실행하고 싶습니다.
$crontab * * * * * echo "Hi"
아무것도 생산하지 않습니다.
crontab */1 * * * * echo "hi"
말한다 */1: No such file or directory
.
또한 현재 실행중인 크론 작업 (내 소유 한 작업뿐만 아니라 루트와 같은 다른 사용자가 시작한 작업)을 나열하는 방법은 무엇입니까?
특정 cron 작업을 어떻게 삭제합니까?
답변
그렇게 사용할 수 없습니다 crontab
. 사용 man crontab
이 유틸리티를 호출하는 올바른 방법에 대해 읽을 수 있습니다.
crontab -e
현재 사용자의 cron 항목을 편집하는 데 사용하려고 합니다 (행을 추가 / 수정 / 제거 할 수 있음). crontab -l
구성된 작업의 현재 목록을 보는 데 사용 합니다.
다른 사용자의 crontab을 볼 때 기본 설치에 루트가 없으면 불가능합니다. 모든 것을 루트로 나열하는 방법 은 모든 사용자의 모든 cron 작업을 나열하는 방법을 참조하십시오 .
참고 :이 명령 줄 (에 쉘 글 로빙 문자를 사용할 때 매우 조심해야 *
하고 ?
특히). *
현재 디렉토리의 파일 목록으로 확장되어 예기치 않은 결과가 발생할 수 있습니다. 당신이 통과하려면 *
뭔가에 인수로 그것을 인용 ( '*'
).
답변
편집 방법에는 두 가지가 있습니다 crontab
.
-
대화 형으로 사용
crontab -e
을 열 것이다,crontab
에 의해 지정된 편집기$VISUAL
나$EDITOR
, 또는 -
비 대화식으로 사용하여
crontab crontab.txt
간단하게 가져올 것이다,crontab
파일에서 항목을crontab.txt
, 대체 현재 사용자에 대한 기존의 활성의 crontab을.
당신이 가진 문제는 단순히 crontab
명령을 잘못 사용한다는 것입니다.
다음은 비 대화식 crontab 조작에 관한 것입니다.
따라서 프로그래밍 방식으로 특정 작업 을 제거 하려면 다음과 같은 작업을 수행 할 수 있습니다
$ crontab -l | grep -v 'PATTERN' >crontab.txt && crontab crontab.txt
여기서 PATTERN
제거하려는 작업과 일치하는 정규식이 있습니다. 여기, crontab -l
당신에게 당신의 현재를 줄 것 crontab
입니다.
또는 파일 crontab-fragment.txt
에 활성 crontab에서 제거하려는 항목이있는 경우 ,
$ crontab -l | grep -v -Fx -f crontab-fragment.txt >crontab.txt && crontab crontab.txt
현재 crontab을 읽고 crontab-fragment.txt
현재 디렉토리 의 파일 에서 발생하는 모든 행을 필터링 (제거)합니다 (전체 행 문자열 비교 사용). 결과는 crontab.txt
현재 crontab을 대체하기 위해 저장되고 거기에서로드됩니다.
하나 이상의 작업 을 추가 하려면 다음과 같이하십시오.
$ crontab -l | cat - crontab-fragment.txt >crontab.txt && crontab crontab.txt
파일 crontab-fragment.txt
에 추가하려는 항목이 포함되어 있다고 가정합니다 . 현재 crontab을 읽고 여기에 항목을 추가 crontab-fragment.txt
하고를 만듭니다 crontab.txt
. 그러면 crontab.txt
파일이 현재 crontab을 대체합니다.
답변
crontab을 대화식으로 수정하려면 crontab -e
다른 옵션없이 명령을 실행하십시오 . crontab 사본에서 편집기가 시작됩니다. editor를 종료하면 편집 된 사본이 새로운 crontab이됩니다. VISUAL
및 EDITOR
환경 변수를 통해 시작되는 편집기를 제어 할 수 있습니다 . crontab을 나열하려면을 실행하십시오 crontab -l
.
당신이 스크립트 세트에서의 crontab을 수정하려면 VISUAL
및 EDITOR
스크립트 나 쉘의 경로에 그 수정을 제자리에 제공된 파일을 니펫을. 편집기 ed
는 여기서 가능하거나 sed -i
구현 sed
에이 옵션이있는 경우 가능합니다 . 무조건 행을 추가하려면을 사용할 수 있습니다 echo … >>
. 인용에주의하십시오. 의심스러운 경우 스크립트를 작성하고 스크립트 이름을로 전달하십시오 EDITOR
.
script=$(mktemp)
cat <<'EOF' >"$script"
#!/bin/sh
ed -s "$1" <<'EOS'
g/^ *[^= ][^ =]* *[^= ][^ =]* *[^= ][^ =]* *[^= ][^ =]* *[^= ][^ =]* *echo "hi"$/d
$a
* * * * * echo "hi"
.
w
q
EOS
EOF
답변
조금 늦었지만 다른 사람들이 여기를 찾고 있습니다. VISUAL
및로 입력 / 출력 스트림을 조작하는 것보다 쉬운 방법이 EDITOR
있습니다.
당신은 단순히 파일에 크론 일정을 쓰기 줄에 1 일 및 명령을 사용할 수 crontab [filename]
있도록 할 수 있습니다 cat
로 당신의 작업 filename
당신 같은 경우 마지막 말에 crontab을 호출 한 다음 스크립트의 일부로합니다.
실제로 이것은 man crontab
힌트를 먼저 나열하여 힌트 로 가장 많이 사용됩니다.
답변
crontab
자동화 또는 명령 행에서 항목을 추가 하려면 원하는 시간을 설정하십시오.
echo "* * * * * /yourpath/yourcommand 2>&1 >> /var/log/somelog.log" >> /var/spool/cron/root (or appropriate username)
그때:
service crond reload
crontab을 다시로드하십시오.
답변
이 명령으로 시도하십시오 :
crontab -e
그런 다음 cron 작업을 추가하십시오.
*/1 * * * * echo "hi"
그 파일에.
답변
이전에 다른 의견에서 언급되었지만 아래에서 설명하는 방식을 강조하고 싶습니다. 파일에 항목을 추가 한 다음 파일을 crontab에 추가 할 때 매우 유용합니다. 이 파일에는 아래의 두 항목이 포함되며 파일 이름은입니다 hello-world-crontab.txt
.
0 09 * * * echo "Hello world!" >> /home/user/greeting.txt
0 09 * * * python /home/user/greeting.py
그런 다음 아래 명령을 실행하여 이러한 항목을 crontab에 추가했습니다.
$ crontab hello-world-crontab.txt
다음 단계는 이러한 항목이 추가되었는지 확인하는 것입니다.
$ crontab -l
각 항목의 기능에 대한 간단한 설명 :
- 이 crontab 항목은 “Hello world!”입니다.
/home/user/greeting.txt
매일 오전 9시에 파일에 .0 09 * * * echo "Hello world!" >> /home/user/greeting.txt
- 이 crontab은 ‘Hello world!’명령 행에 인쇄되는 python 파일을 실행합니다. 매일 오전 9시에.
0 09 * * * python /home/user/greeting.py