리눅스에서 실행한 명령어의 출력 결과를 파일로 저장해 두면 나중에 언제든 다시 확인할 수 있어 매우 유용합니다. 이 가이드에서는 명령어 출력을 파일에 기록하는 대표적인 방법들을 자세히 살펴보겠습니다.
왜 명령어 출력을 파일로 저장해야 할까?
리눅스 서버를 관리하다 보면 명령어를 실행할 때마다 화면에 수많은 메시지가 빠르게 지나가는 것을 자주 보게 됩니다. 이 중 일부는 사소한 정보이지만, 어떤 메시지는 시스템 운영에 매우 중요한 내용일 수 있습니다.
다행히 리눅스와 유닉스는 syslogd라는 훌륭한 로깅 엔진을 갖추고 있어, 대부분의 시스템 메시지는 /var/log 디렉터리 아래의 여러 로그 파일에 체계적으로 기록됩니다. 그럼에도 불구하고 직접 실행한 명령어나 스크립트의 출력을 별도의 파일에 저장해 두면 문제 분석이나 기록 관리에 큰 도움이 됩니다. 리눅스는 이를 위해 몇 가지 편리한 방법을 제공합니다.
방법 1: 리디렉션(>) 사용하기
가장 간단하고 널리 쓰이는 방법은 명령어 뒤에 부등호(>)를 붙이고 출력 파일의 경로를 지정하는 것입니다.
# ls /var/log > /tmp/varlog.log
위 명령어는 ls /var/log 명령의 출력 결과를 /tmp/varlog.log 파일에 저장합니다.
덮어쓰기와 추가하기의 차이
여기서 한 가지 주의할 점이 있습니다. 부등호를 하나만(>) 사용하면 해당 파일이 없을 경우 새로 생성하고, 이미 존재하는 파일이라면 기존 내용을 모두 지운 후 덮어씁니다. 따라서 기존 파일에 출력 내용을 이어서 추가하려면 부등호 두 개(>>)를 사용해야 합니다.
# ls /var/log >> /tmp/varlog.log
방법 2: logsave 명령어 활용하기
리눅스에는 logsave라는 전용 도구가 있으며, 부등호 리디렉션과 비슷한 역할을 합니다. 다음 명령어로 앞선 예제와 동일한 결과를 얻을 수 있습니다.
# logsave /tmp/varlog.log ls /var/log
이 명령어 역시 ls /var/log의 출력으로 새 파일을 생성하거나 기존 파일을 덮어씁니다. 덮어쓰지 않고 기존 파일에 내용을 추가하려면 -a 옵션을 함께 사용하면 됩니다.
# logsave -a /tmp/varlog.log ls /var/log
참고: tee 명령어로 화면과 파일에 동시에 출력하기
명령어 결과를 파일에 저장하면서 동시에 화면에서도 실시간으로 확인하고 싶다면 tee 명령어를 파이프(|)와 함께 사용하는 것이 좋습니다.
# ls /var/log | tee /tmp/varlog.log
기존 파일에 추가하려면 -a 옵션을 붙이면 됩니다.
# ls /var/log | tee -a /tmp/varlog.log
두 방식의 차이점 정리
부등호 리디렉션 방식과 logsave 방식 사이에는 큰 기능적 차이는 없습니다. 다만 실제로 사용해 보면 logsave 쪽이 출력 형식이 더 깔끔하고, 출력 파일에 날짜 정보까지 함께 기록해 주는 장점이 있습니다. 간단한 작업에는 부등호 리디렉션으로 충분하지만, 기록의 가독성과 추적성이 중요하다면 logsave를 활용해 보시기 바랍니다.