crontab에 항목을 어떻게 추가합니까? 있습니다. 매우 간단한 몇 가지 테스트 크론

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.

  1. 대화 형으로 사용 crontab -e을 열 것이다, crontab에 의해 지정된 편집기 $VISUAL$EDITOR, 또는

  2. 비 대화식으로 사용하여 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이됩니다. VISUALEDITOR환경 변수를 통해 시작되는 편집기를 제어 할 수 있습니다 . crontab을 나열하려면을 실행하십시오 crontab -l.

당신이 스크립트 세트에서의 crontab을 수정하려면 VISUALEDITOR스크립트 나 쉘의 경로에 그 수정을 제자리에 제공된 파일을 니펫을. 편집기 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