मेरे पास एक बैश स्क्रिप्ट है जो तब तक चलती है जब तक लिनक्स मशीन चालू होती है। मैं इसे नीचे दिखाए अनुसार शुरू करता हूं:
( /mnt/apps/start.sh 2>&1 | tee /tmp/nginx/debug_log.log ) &
इसकी सराहना करने के बाद, मैं अपने ps आउटपुट में टी कमांड देख सकता हूं जैसा कि नीचे दिखाया गया है:
$ 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 -a
लिए भी उपयोग करना चाहते हैंtee
, अन्यथा, टी उसी फ़ाइल पर लिखने के बाद आपको उसी ट्रंक के माध्यम से लिखेगा (और सिस्टम पर जो macOS की तरह विरल फ़ाइलों का समर्थन नहीं करता है। फ़ाइल के अनुभाग को उस स्थिति तक ले जाएं, जो डिस्क स्थान से दोगुना हो)।