>

/etc/cron.daily 에 3 개의 스크립트가 있습니다 . 내 cron 로그는 /var/log/cron 로 작성되었습니다. . 아래는 위의 cron에 대한 항목입니다.

(root) CMD (run-parts /etc/cron.hourly)

여기서 stdout  또는 stderr  cron 내부의 스크립트 중 하나를 사용할 수 없으면 run-parts  이 폴더에서 명령이 실행되었습니다.

3 개의 스크립트가 실행되는 동안 발생한 일을 기록하는 데 도움이되는 요령이 있습니까?

참고 : cron.daily 에서 스크립트를 편집 할 수 없습니다  아웃 및 오류를 로그 파일로 리디렉션합니다.

  • 답변 # 1

    유닉스에서 메일 시스템은 시스템 알림이 사용자에게 전달되는 수단이다. 작업 표시 줄에 무언가를 알려 주어야 할 경우 팝업 메시지와 함께 표시되는 Windows와 같은 것으로 생각할 수 있습니다. cronjobs (이론적으로)는 출력을 생성하지 않아야하므로 (아무도 보지 않아야하므로) 출력 (stdout 또는 stderr)은 오류 또는 문제의 가능한 표시 인 것처럼 처리되어 전자 메일이 cronjob의 소유자가 확인하라는 메시지를 표시합니다.

    따라서 모든 출력 (stdout 및 stderr)은 로컬 메일 시스템을 통해 cronjob 소유자에게 전송됩니다. 소유자가 개인 계정이 아닌 경우 별칭을 설정하여 로컬 MTA가 실제 전자 메일 계정으로 릴레이하도록 지시 할 수 있습니다. 예를 들어 /etc/aliases 에 추가했습니다. :

    root: joel.davis@xxx.com
    
    
    그런 다음 newaliases 를 실행  명령 (메일 별명 데이터베이스를 재 빌드하기 위해). 그 후 회사 이메일의받은 편지함에 루트 이메일을 받기 시작했습니다.

    root@xxxxxxvlp05 ~ $ echo "the game" | mutt root -s "No Diggity"
    sendmail: warning: inet_protocols: IPv6 support is disabled: Address family not supported by protocol
    sendmail: warning: inet_protocols: configuring for IPv4 support only
    postdrop: warning: inet_protocols: IPv6 support is disabled: Address family not supported by protocol
    postdrop: warning: inet_protocols: configuring for IPv4 support only
    
    

    그래서 다소 일반적인 방법입니다 (시스템에서 알림 이메일을 보내도록 함). 통지를 처리하는 다른 방법이 있습니다. 몇 가지 대안 :

    이메일을 특정 파일에 저장하기 위해 별칭 수정 :

    root: /var/log/rootMails
    
    

    메일을 스크립트로 보내는 방법 :

    root: |/usr/local/bin/filterMail
    
    

    별명을 엉망으로 만드는 대안은 MAILTO= 를 사용하는 것  많은 cron 데몬이 지원하는 사용자 crontab 내의 옵션. 이는 특정 사용자의 알림 세트 만 받고 사서함에 떨어 뜨릴 것이없는 경우에 바람직 할 수 있습니다 ( aliases  달성합니다).

    다른 것들이 많이 있다고 확신하지만 아마도 첫 번째 또는 마지막 작업을 수행하고 싶을 것입니다.

  • 답변 # 2

    -s 로 cron을 실행할 수 있습니다.  메일을 보내는 대신 syslog를 사용하는 옵션. 이것은 최소한 RHEL과 그 파생물, FreeBSD 및 MacOS에서 작동합니다.

  • 답변 # 3

    bash 스크립트 안에 직접 로그인 할 수 있습니다 :

    logfile=/var/log/mine/whatever.log
    log () {
        timestamp=$(date +'%F %T')
        echo -e "$timestamp $1" >> $logfile
        shift
        for a; do
            echo -ne "$a" >> $logfile
        done
    }    
    log "Hello world.\nAnd so on..."
    [...]
    
    

    출력이있는 명령을 실행중인 경우 다음과 같이 기록하십시오.

    somecommand 2>&1 >> $logfile
    
    

    시스템 로거에 메시지와 오류를 보낼 수도 있습니다 ( man logger 참조) ) 및 syslog 구성을 통해 잠재적으로 정렬합니다.

  • 이전 ubuntu - apt-get으로 어떤 파일 (스크립트 및 구성)을 설치했는지 어떻게 알 수 있습니까?
  • 다음 compiling - mpih를 찾을 수 없습니다