![exec cp를 찾고 한 줄에 시간/날짜로 출력을 리디렉션하는 Cron이 있습니까?](https://linux55.com/image/77308/exec%20cp%EB%A5%BC%20%EC%B0%BE%EA%B3%A0%20%ED%95%9C%20%EC%A4%84%EC%97%90%20%EC%8B%9C%EA%B0%84%2F%EB%82%A0%EC%A7%9C%EB%A1%9C%20%EC%B6%9C%EB%A0%A5%EC%9D%84%20%EB%A6%AC%EB%94%94%EB%A0%89%EC%85%98%ED%95%98%EB%8A%94%20Cron%EC%9D%B4%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
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
바뀌고 , 해당 줄은 복사 작업을 수행하고 출력을 로깅 명령으로 바꿉니다.STDOUT
find
STDOUT
한 번에 두 개의 로그 파일을 채우고 싶다고 생각합니다. 하나는 복사 명령의 출력이고 다른 하나는 날짜 접두어입니다. 이렇게 하려면 이 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