exec cp를 찾고 한 줄에 시간/날짜로 출력을 리디렉션하는 Cron이 있습니까?

exec cp를 찾고 한 줄에 시간/날짜로 출력을 리디렉션하는 Cron이 있습니까?

cron기본 쉘 명령 세트를 실행하는 작업을 설정하려고 합니다 .

마지막 날에 생성된 모든 파일을 보고 다른 폴더에 복사한 다음 파일 복사 작업 날짜와 시간을 한 줄씩 설명하는 로그를 생성해야 합니다.

이 두 셸 명령은 독립적으로 실행되지만 cron. 첫 번째 명령( find) 을 증가시키려고 하면 cron작업이 실행되지 않고 오류가 발생합니다. 수동으로 실행하면 작동됩니다.

find /dir/ -type f -mtime -1 -exec cp -v -a --parents "{}" /dir2/ \; >> /dir2/LogsCopiaDBs_$(date +%d-%m-%Y).txt
exec &> >(while read line; do echo "$(date +'%h %d %Hh%Mm%Ss') $line" >> /dir2/LogsCopiaDBs.txt; done;)

어떤 아이디어가 있나요?

답변1

이 줄은 다른 순서로 되어 있어야 합니다.

exec &> >(while read line; do echo "$(date +'%h %d %Hh%Mm%Ss') $line" >> /dir2/LogsCopiaDBs.txt; done;)
find /dir/ -type f -mtime -1 -exec cp -v -a --parents "{}" /dir2/ \; >> /dir2/LogsCopiaDBs_$(date +%d-%m-%Y).txt

해당 줄은 지정된 명령으로 exec바뀌고 , 해당 줄은 복사 작업을 수행하고 출력을 로깅 명령으로 바꿉니다.STDOUTfindSTDOUT

한 번에 두 개의 로그 파일을 채우고 싶다고 생각합니다. 하나는 복사 명령의 출력이고 다른 하나는 날짜 접두어입니다. 이렇게 하려면 이 tee명령을 사용할 수 있습니다. 이 tee명령이 없으면 명령 출력이 find/cp다른 로그 파일로 리디렉션되고 exec명령으로 캡처되지 않습니다. 이 tee명령으로 문제가 해결되었습니다.

exec &> >(while read line; do echo "$(date +'%h %d %Hh%Mm%Ss') $line" >> /tmp/LogsCopiaDBs.txt; done;)
find /tmp/ -type f -mtime -1 -exec echo cp -v -a --parents "{}" /tmp/ \; |tee -a /tmp/LogsCopiaDBs_$(date +%d-%m-%Y).txt

관련 정보