네, split
명령은 이미 생성된 파일을 분할하는 데 사용됩니다. 즉, tee
로 생성된 로그 파일을 작성 중에 분할하는 것은 불가능하며, 로그 파일이 완전히 생성된 후에야 split
명령을 사용할 수 있습니다.
split
동작 방식
파일 크기를 기준으로 분할:
split -b 100M large_file.txt small_file_
-b 100M
: 각 분할된 파일의 크기를 최대 100MB로 제한.- 결과 파일:
small_file_aa
,small_file_ab
, ...
줄 수를 기준으로 분할:
split -l 1000 large_file.txt small_file_
-l 1000
: 각 분할된 파일에 최대 1000줄 포함.
결과 파일 이름 지정:
split -b 50M large_file.txt --additional-suffix=.log small_file_
- 결과 파일:
small_file_aa.log
,small_file_ab.log
, ...
- 결과 파일:
실시간 분할이 필요한 경우
split
은 사후 작업이므로 실시간으로 로그를 분할하려면 다른 방법이 필요합니다.
실시간 로그 분할 대안
1. logrotate
(실시간 로그 관리)
logrotate
를 사용하면 로그 파일 크기가 일정 크기 이상이 되면 자동으로 분할 가능.
설정 예제:
/path/to/logfile.txt {
size 100M
rotate 5
copytruncate
compress
}
2. 스크립트를 통한 실시간 분할
아래와 같은 Bash 스크립트를 작성하여 로그를 실시간으로 분할할 수 있습니다.
#!/bin/bash
output_dir="./logs"
mkdir -p "$output_dir"
file_prefix="logfile"
max_size=100000000 # 100MB
current_file="${output_dir}/${file_prefix}_part1.txt"
part=1
while read -r line; do
echo "$line" >> "$current_file"
if [ $(stat -c%s "$current_file") -ge $max_size ]; then
part=$((part + 1))
current_file="${output_dir}/${file_prefix}_part${part}.txt"
fi
done
사용:
command | ./split_logger.sh
결론
split
: 생성된 파일을 나누는 데 적합.- 실시간 로그 분할:
logrotate
, 스크립트, 또는multilog
와 같은 다른 도구를 사용하는 것이 적합합니다. 필요에 따라 위 방법을 선택하면 됩니다.
'IT > 리눅스' 카테고리의 다른 글
grep 으로 문자열 검색하기 (0) | 2025.01.22 |
---|---|
tcl - regsub 문자열 치환 함수 (0) | 2025.01.13 |
쉡 스크립트 if []; then 에 등장하는 세미콜론의 의미? (0) | 2025.01.09 |
쉡 스크립트에서 환경변수 값 비교시 null, empty 체크를 위한 팁 (0) | 2025.01.09 |
특정 이름의 폴더만 빼고 복사 하고 싶을 때 - rsync (1) | 2024.12.05 |