파일이 존재하고 비어 있지 않은지 확인하십시오.

파일이 존재하고 비어 있지 않은지 확인하십시오.

xx_x__x.log매주 일요일 오전 2시 30분에 해당 위치에 파일이 존재하는지, 파일 크기가 0인지 확인 하고 싶습니다 . 파일 크기를 확인하고 파일이 있는지 확인하는 스크립트가 있지만 특정 시간에 확인하는 방법을 모르겠습니다.

답변1

~에서man bash | less '+/^\s*CONDITIONAL'

-s file
파일이 존재하고 크기가 0보다 크면 참입니다.

미리 정의된 시간에 스크립트를 실행하려면 코드를 실행 가능한 scipt에 넣고 cronjob에 로드합니다.

명령을 라이너에 넣고 이를 크로탭에 로드할 수 있을 것 같나요? (다른 사람이 이 작업을 성공적으로 수행했는지 알고 싶습니다.)
그러나 cron 명령의 문제점은

  1. 내가 아는 한 터미널에 연결되어 있지 않습니다. {비록 확인할 수는 있지만 lsof} 따라서 cron 명령을 빌드할 때 무엇이 ​​잘못되었는지에 대한 디버그 출력/피드백을 얻을 수 없습니다.
  2. cron 명령을 테스트하기 전에 잠시 기다려야 합니다.

이러한 이유로 코더 친화적인 환경(예: 터미널)에서 코드를 작성할 수 있도록 명령을 실행 가능한 스크립트에 넣은 다음 올바르게 작동한다고 만족할 때 호출 대상 명령을 로드하는 것이 좋습니다. 예약된 작업

그러니 이것이 당신의 스크립트라고 말해주세요/tmp/checksize.sh

#!/bin/bash

if [[ -s /tmp/xx_x__x.log  ]]
then 
        printf "\n\n%s\n\n\n" true > /tmp/sizelog.log
else 
        printf "\n\n%s\n\n\n" false > /tmp/sizelog.log
fi

그냥 실행 crontab -e하고 명령을 추가하세요

5 0 * * * /tmp/checksize.sh

의미는 다음과 같습니다#매일 자정 이후 5분간 달리기

적절한 순간을 포착하는 것에 대해

~에서man 5 crontab

Commands  are  executed by cron(8) when the minute, hour, and month of
       year fields match the current time, and when at least one  of  the  two
       day  fields  (day of month, or day of week) match the current time (see
       ``Note'' below).  cron(8) examines cron entries once every minute.  The
       time and date fields are:

          field      allowed values
          -----      --------------
          minute         0-59
          hour       0-23
          day of month   1-31
          month      1-12 (or names, see below)
          day of week    0-7 (0 or 7 is Sun, or use names)

[...]

EXAMPLE CRON FILE
       The following lists an example of a user crontab file.

       # use /bin/bash to run commands, instead of the default /bin/sh
       SHELL=/bin/bash
       # mail any output to `paul', no matter whose crontab this is
       MAILTO=paul
       #
       # run five minutes after midnight, every day
       5 0 * * *       $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
       # run at 2:15pm on the first of every month -- output mailed to paul
       15 14 1 * *     $HOME/bin/monthly
       # run at 10 pm on weekdays, annoy Joe
       0 22 * * 1-5    mail -s "It's 10pm" joe%Joe,%%Where are your kids?%
       23 0-23/2 * * * echo "run 23 minutes after midn, 2am, 4am ..., everyday"
       5 4 * * sun     echo "run at 5 after 4 every sunday"
       # Run on every second Saturday of the month
       0 4 8-14 * *    test $(date +\%u) -eq 6 && echo "2nd Saturday"

답변2

특정 위치에 파일이 있는지 확인하려면 명령문 -f에서 테스트를 사용할 수 있습니다.if

if [ -f "$FILE" ]; then

(the_velour_fog가 말했듯이 파일이 비어 있어도 표현식은 True를 반환합니다)

관련 정보