Linux 컴퓨터의 전원이 켜져있는 한 bash 스크립트가 있습니다. 아래 그림과 같이 시작합니다.
( /mnt/apps/start.sh 2>&1 | tee /tmp/nginx/debug_log.log ) &
lauches 후, 아래와 같이 ps 출력 에서 tee 명령을 볼 수 있습니다.
$ ps | grep tee
418 root 0:02 tee /tmp/nginx/debug_log.log
3557 root 0:00 grep tee
로그가 특정 크기에 도달하면 티가 생성 하는 로그의 크기를 모니터링 하고 티 명령을 종료하는 기능이 있습니다.
monitor_debug_log_size() {
## Monitor the file size of the debug log to make sure it does not get too big
while true; do
cecho r "CHECKING DEBUG LOG SIZE... "
debugLogSizeBytes=$(stat -c%s "/tmp/nginx/debug_log.log")
cecho r "DEBUG LOG SIZE: $debugLogSizeBytes"
if [ $((debugLogSizeBytes)) -gt 100000 ]; then
cecho r "DEBUG LOG HAS GROWN TO LARGE... "
sleep 3
#rm -rf /tmp/nginx/debug_log.log 1>/dev/null 2>/dev/null
kill -9 `pgrep -f tee`
fi
sleep 30
done
}
놀랍게도, tee 명령을 종료 하면 start.sh 인스턴스로도 종료됩니다. 왜 이런거야? tee 명령을 끝내고 start.sh를 계속 실행하려면 어떻게해야합니까? 감사.
tee -a
에 대한tee
그렇지 않으면 티 같은 맥 OS 그것에 당신이 그것을 (절단 후 동일한 오프셋에서 파일로 작성과 스파 스 파일을 지원하지 않는 시스템에서 수행되며, 추가 모드에서 파일을 여는 의지 디스크 공간의 두 배를 차지하면서 해당 위치로 이어지는 파일 섹션을 다시 할당하십시오.