![vi에서 대용량 스토리지 로그 파일 열기](https://linux55.com/image/103611/vi%EC%97%90%EC%84%9C%20%EB%8C%80%EC%9A%A9%EB%9F%89%20%EC%8A%A4%ED%86%A0%EB%A6%AC%EC%A7%80%20%EB%A1%9C%EA%B7%B8%20%ED%8C%8C%EC%9D%BC%20%EC%97%B4%EA%B8%B0.png)
AIX 파티션에 스토리지 로그가 있습니다. vi 명령을 사용하여 파일을 편집하려고 하면 다음 메시지가 나타납니다.ex: 0602-101 Out of memory saving lines for undo delete lines
파일을 읽기 위해 파일 제한을 확장하고 싶지 않습니다. 대신 파일 크기를 줄이기 위해 일부 줄을 삭제하고 싶습니다.
파일의 마지막 10,000줄을 제외하고 모두 삭제되도록 지정하려면 어떻게 해야 합니까?
나는 이것이 올바른 접근 방식이라고 생각하지만 잘 작동하지 않습니다.1,$-10000d
답변1
바꾸다삭제Vi를 사용하여 마지막 10000줄을 제외한 모든 줄을 새 파일로 필터링합니다(일반적으로 원하지 않는 경우)편집하다어쨌든 로그 파일).
$ tail -n 10000 logfile >logfile.tail
원하는 경우 다음 logfile
으로 바꿀 수 있습니다.logfile.tail
$ mv logfile.tail logfile
로그 파일에 쓰는 일부 프로그램은 프로그램이 종료될 때까지 쓰기 위해 로그 파일을 열어 둘 수 있으므로 이전 로그 파일이 더 짧은 버전으로 대체된 경우에도 일부 새 메시지가 이전 로그 파일에 기록될 수 있습니다. 이러한 로그 메시지는 손실됩니다.
이 문제를 해결하려면:
$ cat logfile.tail >logfile
이것은 것이다자르기 logfile
(삭제하지 않고 지우기) 그 내용을 logfile.tail
. 이는 logfile
쓰기 기능이 켜져 있는 프로그램의 메시지가 손실되지 않는다는 의미이기도 합니다 .
또한 로그 파일이 너무 커지는 것을 방지하기 위해 일종의 자동 로그 파일 순환 기능을 도입하는 것도 고려해보세요.