0 0 * * 1 루트 호스트 이름 >> /tmp/hostname.txt가 crontab으로 작동하지 않는 이유는 무엇입니까?

0 0 * * 1 루트 호스트 이름 >> /tmp/hostname.txt가 crontab으로 작동하지 않는 이유는 무엇입니까?
0 0 * * 1 root hostname >> /tmp/hostname.txt

위 cron 항목은 월요일 자정에 실행되어야 하며 명령의 출력이 포함된 파일을 /tmp생성 해야 합니다 . 하지만 빈 파일만 생성됩니다. 왜?hostname.txthostname

답변1

crontab 항목을 처리할 때 일반적으로 다음 위치 중 하나에 있는 시스템 전체 크론을 구별하는 것이 중요합니다.

  • /etc/crontab
  • /etc/cron.d/*
  • /etc/cron.daily/*
  • /etc/cron.weekly/*
  • 등.

또는 해당 디렉토리에 저장된 실제 사용자 수준 변경 사항은 다음과 같습니다 /var/spool/cron.

$ sudo ls -l /var/spool/cron/
total 0
-rw------- 1 saml root 0 Jun  6 06:43 saml

crontab -e특정 사용자로서 명령을 사용하여 이러한 항목에 액세스할 수 있습니다. 루트에도 이러한 항목이 있을 수 있습니다.

너의 문제

포함된 예는 시스템 레벨 유형을 생성할 때 지정한 행 유형에 대한 것입니다 cron. 유일한 차이점은 명령을 실행하는 사용자입니다. 일부 유형의 항목을 생성할 때 crontab -ecrontab 항목이 해당 항목을 생성한 사용자에게 이미 할당되어 있으므로 중복되므로 이는 필요하지 않습니다.

따라서 줄을 다음과 같이 변경하십시오.

0 0 * * 1 hostname >> /tmp/hostname.txt

문제를 해결하세요.

일일 및 주간 크론은 어떻게 작동하나요?

일반적으로 /etc/crontab기본 파일에 다음과 같은 항목이 표시됩니다.

01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

해당 디렉터리의 스크립트가 실행되는 시기를 제어합니다. 따라서 일일 시간은 현지 시간으로 매일 오전 4시 20분입니다.

따라서 해당 명령을 매일 실행하려면 hostname >> /tmp/hostname.txt해당 명령을 스크립트에 넣고 실행 가능하게 만든 다음 스크립트 파일을 cron.daily디렉터리에 넣으면 됩니다.

/etc/cron.daily/catchhostname.bash

#!/bin/bash

hostname >> /tmp/hostname.txt

일일 플래너

# ls -l |grep catch
-rwxr-xr-x 1 root root  118 Feb 28  2013 catchhostname.bash

답변2

위의 내용이 루트의 crontab에 있는 실제 줄이라고 가정합니다.

0 0 * * 1 root hostname >> /tmp/hostname.txt

이 줄은 "root"라는 명령을 실행하고 "hostname" 매개변수를 전달합니다. /bin 또는 /usr/bin(cron의 기본 경로)에 명령 이름 "root"가 없으면 빈 파일 출력이 표시됩니다.

관련 정보