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 -a
iç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).