'find'의 동작이 -mtime -0과 +0을 사용하는 이유는 무엇입니까?


1

Ubuntu 14.04는 Tomcat 7에 대한 로그 회전을 제공하고 day로 이름 지정된 로그 파일을 가정하므로 해당 파일을 검색하고 기존 파일을 압축 및 삭제합니다. 로그 파일이 존재하고 얼마나 자주 변경되는지에 따라 Tomcat 7에서 호스팅하는 자체 웹 응용 프로그램에서 사용하는 월별 명명 체계와 충돌 할 수 있습니다.

/etc/cron.daily/tomcat7:

gzip: /var/log/tomcat7/…/RebootDevice/2017-05.log.gz already exists;       not overwritten

로그 메시지는 기본적으로 오류 만 포함하고 너무 자주 발생하지 않기 때문에 며칠 또는 몇 주마다 전송되는 메시지와 함께 살 수 있습니다. 내가 이해하지 못하는 것은 이미 이틀째에이 메시지를받는 이유입니다. 우분투는 다음을 수행합니다.

find /var/log/$NAME/ -name \*.$LOGEXT -daystart -mtime +0 -print0

실제 디렉토리에서 다음과 같은 결과를 테스트했습니다.

root@…:/var/log/tomcat7/…/RebootDevice# ls -lisa
[…]
1089049 0 -rw-r--r-- 1 tomcat7 tomcat7    0 Mai 29 09:09 2017-05.log
1089047 4 -rw-r--r-- 1 tomcat7 adm      402 Mai 26 10:22 2017-05.log.gz

root@…:/var/log/tomcat7/…/RebootDevice# find . -name \*.log -daystart -mtime -0
root@…:/var/log/tomcat7/…/RebootDevice# find . -name \*.log -daystart -mtime +0
./2017-05.log

보시다시피, +02 일 전에 마지막으로 작성된 파일을 사용하여 호출하면 내 파일 을 찾지 만 사용 -0하지는 않습니다. -mtimen*24시간 으로 정의 되므로 +/-0차이가 없어야하며 내 이해 -daystart에서 테스트를 하루 종일 시작에만 고정시키는 것 00:00입니다.

그렇다면 왜이 -0대가 +0다르게 행동합니까? 1*24시간 의 차이를 만드는 것 같습니다 .

답변:


0

보낸 사람 man find:

-mtime n
파일 데이터는 n*24몇 시간 전에 마지막으로 수정 되었습니다. […]

-daystart반올림 작동 방식에 관계없이 사용 여부 에 관계없이 특정 find호출의 경우 모든 파일을 어떻게 든 여러 개의 분리 된 세트로 나눌 수 있습니다 .

  • A : 0 일 전에 수정 된 파일,
  • B : 1 일 전에 수정 된 파일,
  • C : 2 일 전에 수정 된 파일,
  • D : 3 일 전에 수정 된 파일,

매뉴얼에는 다음과 같이 명시되어 있습니다.

숫자 인수는 다음과 같이 지정할 수 있습니다

+n보다 큼 n,
-n보다 작음 n,
n정확히 n.

보시다시피, 마이너스 부호는 (수학적) 마이너스 1의 요인이 아닙니다. 대신 :

-mtime -0아무것도 일치하지 않습니다.
-mtime 0세트 A와 일치합니다.
-mtime +0B, C, D,…와 일치합니다.

-mtime -1세트 A와 일치합니다.
-mtime 1세트 B와 일치합니다.
-mtime +1C, D,…와 일치합니다.

-mtime -2A와 B와 일치합니다 (와 동일 함 ! -mtime +1).
등등.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.