내 crontab에 항목을 어떻게 추가합니까?

내 crontab에 항목을 어떻게 추가합니까?

crontab을 처음 사용해봤습니다. 매우 간단한 테스트 크론 작업을 작성하고 실행하고 싶습니다.

$crontab * * * * * echo "Hi"

아무것도 생산하지 않습니다.

crontab */1 * * * * echo "hi"

설명하다 */1: No such file or directory.

또한 현재 실행 중인 크론 작업(내가 소유한 작업뿐만 아니라 루트와 같은 다른 사용자가 시작한 작업도 포함)을 나열하는 방법은 무엇입니까?

특정 cron 작업을 삭제하는 방법은 무엇입니까?

답변1

이 방법으로는 사용할 수 없습니다 crontab. man crontab이 유틸리티를 호출하는 올바른 방법을 배우는 데 사용됩니다 .

crontab -e현재 사용자를 편집하려면 cron 항목이 필요합니다 (행을 추가/수정/삭제할 수 있음). crontab -l현재 구성된 작업 목록을 보는 데 사용됩니다 .

다른 사용자의 crontab을 보는 경우에는 기본적으로 루트 권한이 설치되어 있지 않으면 불가능합니다. 바라보다모든 사용자의 모든 크론 작업을 나열하는 방법모든 것을 나열하는 방법을 알아보세요(루트로).

참고: 쉘 와일드카드를 사용할 때(특히 명령줄에서) 매우 *주의 하십시오 ?. *현재 디렉터리의 파일 목록으로 확장되며 이로 인해 예상치 못한 결과가 발생할 수 있습니다. *이를 매개변수로 무언가에 전달 하려면 인용 부호( '*')를 사용하세요.

답변2

편집하는 방법에는 두 가지가 있습니다 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을 대체합니다.

답변3

조금 늦었지만 여기 보시는 다른 분들을 위해. 입력/출력 스트림을 사용하고 조작하는 것보다 더 간단한 VISUAL방법이 있습니다 EDITOR.

한 줄에 1개의 작업이 있는 파일에 cron 일정을 작성한 다음 명령을 사용하여 작업을 스크립트의 일부로 crontab [filename]작성한 다음 필요한 경우 마지막에 crontab을 호출할 수 있습니다.catfilename

실제로 이것은 man crontab알림으로 나열된 가장 일반적인 사용법입니다.첫 번째

답변4

crontab을 대화형으로 수정하려면 crontab -e추가 옵션 없이 명령을 실행하세요. 그러면 crontab 사본에서 편집기가 시작됩니다.편집기를 종료하면, 편집된 복사본이 새로운 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

관련 정보