로그 파일을 정리하는 더 좋은 방법이 있습니까? 저는 주로 기존 로그 파일을 삭제하고 새 로그 파일을 생성하며, 더 짧은 유형/bash/명령 프로그램을 찾고 있습니다. 별칭을 사용하는 방법은 무엇입니까?
답변1
> logfile
또는
cat /dev/null > logfile
또는
true | tee logfile
(예를 들어 에서 수행되는 것과 false
같이 출력을 생성하지 않는 명령이나 다른 명령을 자유롭게 바꾸십시오 .) 좀 더 설득력 있게 표현하려면 모두 비워 두십시오 (실제로 크기가 0으로 잘립니다).:
bash
logfile
"걸리는" 시간을 알고 싶다면 다음을 사용할 수 있습니다.
dd if=/dev/null of=logfile
dd if=/dev/null > logfile
(BTW, 이것은 동일합니다)
당신은 또한 사용할 수 있습니다
truncate --size 0 logfile
(또는 truncate -s 0 logfile
) 완전히 명시적이거나 원하지 않는 경우
rm logfile
(이 경우 로그 파일이 아직 없는 경우 일반적으로 다시 생성하는 애플리케이션의 일반적인 동작에 의존하고 있습니다.)
그러나 로그 파일은 유용한 경우가 많으므로 복사본을 압축하여 저장하는 것이 좋습니다. 자신만의 스크립트로 이 작업을 수행할 수 있지만 최소한 기존 작업 솔루션을 사용해 보는 것이 가장 좋습니다. logrotate
이 경우에는 정확히 이 작업을 수행하고 합리적으로 구성할 수 있습니다.
여러 파일에 대해 이 작업을 수행해야 하는 경우 안전한 방법은 다음과 같습니다.
truncate -s 0 file1 file2 ...
또는
> file1 > file2 ...
일부 쉘( zsh
)에서는 여러 리디렉션 대상을 지정할 수도 있습니다.
이는 필요한 모든 리디렉션을 생성하므로 (적어도 bash
) 작동합니다. 단, 마지막 리디렉션만 입력을 캡처합니다(또는 이 경우 아무것도 캡처하지 않음). 여러 파일이 포함된 예제는 tee
어떤 경우에도 작동합니다( tee
여러 출력 파일을 처리하는 방법을 실제로 알고 있다고 가정).
물론 이전 쉘 루프도 작동합니다.
for f in file1 file2 ... ; do
# pick your favourite emptying method
done
각 파일에 대해 개별적으로 명령을 실행하기 때문에 속도가 훨씬 느려집니다. 다음 방법을 사용하는 것이 도움이 될 수 있습니다 find
.
find <criteria matching required files> \
-exec <command capable of zeroing several files> {} \+
또는
find <criteria matching required files> -delete