[bash] 큰 파일을 자르는 Unix 쉘 스크립트

3GB의 공간에 도달하면 응용 프로그램에 의해 지속적으로 작성 / 열리는 파일을 자르거나 비우는 Unix 스크립트를 작성하려고합니다. 나는 아래 명령이 그것을 할 것이라는 것을 알고 있습니다.

cp /dev/null [filename]

그러나 나는 이것을 cron 작업으로 프로덕션 환경에서 자동으로 실행할 것입니다. 여기에 게시하여 이와 유사한 작업을 수행하는 동안 문제가 발생했는지 확인하십시오.



답변

다른 답변을 추가하기 위해

: > filename

: bash (POSIX 호환)에서 작동하지 않으므로 본질적으로 쓰기 위해 파일을 열고 (물론 파일을 자른 다음) 즉시 닫습니다.

편집 : 쉘터가 언급했듯이 실제로 리디렉션과 함께 이동하는 명령이 필요하지 않습니다.

$ echo foo > foo.txt
$ cat foo.txt
foo
$ > foo.txt
$ cat foo.txt
$

단순한 리디렉션만으로도 파일이 지워집니다.


답변

데비안에서 다음 명령을 사용했습니다.

truncate -s 0 filename


답변

그것은 나에게 합리적인 것 같습니다. 물론 유닉스에서는 약 50 가지 다른 방법으로이를 수행 할 수 있습니다. 예를 들면

echo -n "" >filename
cat /dev/null >filename


답변

trunc filename

UNIX의 AIX 풍미에서 작동


답변