2017-05-08 7 views
1

유닉스 및 다른 도구의 로그 회전에 대해 말하지 마십시오. 이 스크립트가 필요해. , 나는이 일을하려고하고 때 :nginx의 각 로그 파일에 대해 gzip을 작성하는 스크립트가 작동하지 않습니다.

find /root/nginx.log* -type f -print0 -and ! -name "*.gz" -and ! -name "nginx.log.2017.05.08" -exec gzip "{}" \; 

모든 것이 괜찮아, 내가 필요,이 결과를 가지고이 :

-rw-r--r-- 1 root root 1381791 May 8 10:33 nginx.log.2017.05.07.gz 
-rw-r--r-- 1 root root 17942221 May 8 10:33 nginx.log.2017.05.08 
-rw-r--r-- 1 root root 1381791 May 8 10:33 nginx.log.2017.05.09.gz 
-rw-r--r-- 1 root root 1381791 May 8 10:33 nginx.log.2017.05.10.gz 
-rw-r--r-- 1 root root 1381791 May 8 10:33 nginx.log.2017.05.11.gz 
-rw-r--r-- 1 root root 1381791 May 8 10:33 nginx.log.2017.05.12.gz 

내가 스크립트를 작성하는 것을 시도하고있다 :

#!/bin/bash 

name="nginx" 
data=$(date +%Y.%m.%d) 
current_nginx=$name.$data 
echo $current_nginx 

find /root/nginx.log* -type f -print0 -and ! -name "*.gz" -and ! -name "$current_nginx" -exec gzip "{}" \; 

이 스크립트를 실행 한 후에 내가 가지고있는 것 :

-rw-r--r-- 1 root root 1379440 May 8 10:35 nginx.log.2017.05.07.gz 
-rw-r--r-- 1 root root 1379440 May 8 10:35 nginx.log.2017.05.08.gz 
-rw-r--r-- 1 root root 1379440 May 8 10:35 nginx.log.2017.05.09.gz 
-rw-r--r-- 1 root root 1379440 May 8 10:35 nginx.log.2017.05.10.gz 
-rw-r--r-- 1 root root 1379440 May 8 10:35 nginx.log.2017.05.11.gz 
-rw-r--r-- 1 root root 1379440 May 8 10:35 nginx.log.2017.05.12.gz 
스크립트의 17,451,515,

디버그 :

bash -x test.sh 
+ name=nginx 
++ date +%Y.%m.%d 
+ data=2017.05.08 
+ current_nginx=nginx.2017.05.08 
+ echo nginx.2017.05.08 
nginx.2017.05.08 
+ find /root/nginx.log.2017.05.07.gz /root/nginx.log.2017.05.08.gz /root/nginx.log.2017.05.09.gz /root/nginx.log.2017.05.10.gz /root/nginx.log.2017.05.11.gz /root/nginx.log.2017.05.12.gz /root/nginx.log.2017.05.13.gz /root/nginx.log.2017.05.14.gz -type f -print0 -and '!' -name '*.gz' -and '!' -name nginx.2017.05.08 -exec gzip '{}' ';' 
/root/nginx.log.2017.05.07.gz/root/nginx.log.2017.05.08.gz/root/nginx.log.2017.05.09.gz/root/nginx.log.2017.05.10.gz/root/nginx.log.2017.05.11.gz/root/nginx.log.2017.05.12.gz/root/nginx.log.2017.05.13.gz/root/nginx.log.2017.05.14.gz 

내 조건 -and ! -name "$current_nginx"이 작동하지 않습니다. 내가 어디에서 실수 한거야? 도와주세요.

답변

0

current_nginx에서 .log가 누락되었습니다.

+0

큰 문제가 있습니다. 나는 그것을 잊었다. 감사. – Piduna