Linux makinesi açık olduğu sürece çalışan bir bash betiğim var. Aşağıda gösterildiği gibi başlatırım:
( /mnt/apps/start.sh 2>&1 | tee /tmp/nginx/debug_log.log ) &
Lauches sonra, aşağıda gösterildiği gibi benim ps çıkış tee komut görebilirsiniz :
$ ps | grep tee
418 root 0:02 tee /tmp/nginx/debug_log.log
3557 root 0:00 grep tee
Tee belirli bir boyuta ulaştığında tee üreten ve tee komutunu öldüren günlük boyutunu izleyen bir işlevi var :
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
}
Şaşırtıcı bir şekilde , tee komutunu öldürmek de start.sh örneğiyle öldürür. Bu neden? Tee komutunu nasıl sonlandırabilirim ama start.sh dosyam çalışmaya devam edebilir? Teşekkürler.
tee -aiçin de kullanmak istersiniztee, aksi takdirde tee, dosyayı kestikten sonra aynı ofsette (ve macOS'taki gibi seyrek dosyaları desteklemeyen sistemlerde yazmaya devam eder) dosyanın bu konuma giden bölümünü iki kat daha fazla disk alanı kaplar).