stdout redirection應用問題 - Linux

Erin avatar
By Erin
at 2021-12-22T20:51

Table of Contents

我寫了一支長時間運行的程式,在運行過程中會持續產生訊息至stdout,我不想太
頻繁的讀寫儲存空間,所以我目前以

$my_app > /dev/shm/my_app.log

的方式運行程式,將訊息輸出到記憶體構成的檔案系統中,當想要看即時訊息時以

$tail -f /dev/shm/my_app.log

的方式將輸出訊息顯示到終端,目前運行的還不錯,但考慮到如果程式持續運行超過
一個月,我的/dev/shm/可能會不夠,請問有沒有什麼方法讓my_app.log在超過指定
行數的時候,清除最頂端開始的n行呢?

謝謝。

--
Tags: Linux

All Comments

Jack avatar
By Jack
at 2021-12-23T01:18
改成寫進Redis然後設定Expire XD
Emily avatar
By Emily
at 2021-12-23T05:46
或者可以試logrotate
Vanessa avatar
By Vanessa
at 2021-12-23T10:13
你要不要直接放在 tmux 裡面跑?只有看最後的 log 的話
Donna avatar
By Donna
at 2021-12-23T14:40
sed '1,nd' infile > outfile #刪頂端1~n行
Steve avatar
By Steve
at 2021-12-23T19:08
tail -n +2 infile > outfile #刪頂端1行,依此類推
Quanna avatar
By Quanna
at 2021-12-23T23:35
awk NR\>n infile > outfile #刪頂端1~n行
Anthony avatar
By Anthony
at 2021-12-24T04:03
沒真的測試過僅提供想法,用stat測試fd 1,如果S_IFBLK顯示
為block device(被輸出導向),就定期 lseek 到檔案開頭
以上未經實際測試,可行性不敢保證
Ula avatar
By Ula
at 2021-12-24T08:30
更正,應該用truncate而非lseek
Audriana avatar
By Audriana
at 2021-12-24T12:57
我記得鳥哥在講crontab的時候有提到類似的應用
Oscar avatar
By Oscar
at 2021-12-24T17:25
今早特地man了一下,必須再更正 XD 是ftruncate才對
Ina avatar
By Ina
at 2021-12-24T21:52
能夠用 logrotate 一般要配合程式可以收 SIGHUP 信號
Robert avatar
By Robert
at 2021-12-25T02:19
一般主要是可以重讀設定與關閉重開之前的 log 檔案
這樣子就可以讓 log 的寫入重新開啟處理
Edwina avatar
By Edwina
at 2021-12-25T06:47
若是你用 > 這類重導要考慮問題就比較少
因為 io 重導是 shell 幫你處理的,所以常見就是
Oliver avatar
By Oliver
at 2021-12-25T11:14
上面提到 truncate, 一般 shell像是 true > file.log

read cmd 超乎預期求原因

Dorothy avatar
By Dorothy
at 2021-12-22T12:08
1. 在當前目錄下建立檔案 abs 2. read input:[abc] echo $REPLY 顯示:a 3. read input: [cba]bs echo $REPLY 顯示:abs 4. read input: [k]bs echo $REPLY 顯示:[k] ...

安裝dhcp

Dora avatar
By Dora
at 2021-12-21T10:12
各位大大好 有個問題想請教,就是我的系統在無法連外網的狀況下,我在安裝dhcp(透過usb傳rpm) 的同時發現它需要其他package,然後這些package 有些也需要額外的package…,這樣是 不是代表我只能一個一個慢慢再傳到系統安裝或者買張網卡之類的… https://i.imgur.com/ ...

LDAP SSSD Client 問題

Faithe avatar
By Faithe
at 2021-12-17T15:39
各位大神安安 目前我有在公司重新建一台LDAP,需求是可以讓NAS以及幾台Ubuntu Server帳號可 以統一管理 目前適用Docker osixia/openldap架設 用LDAP Admin管理 目前NAS連線沒有問題,但是那幾台Ubuntu都發生 Ubuntu 都是用 SSSD做連線 ...

Redhat7.2 usb碟無法讀取

Anonymous avatar
By Anonymous
at 2021-12-10T09:39
想請問各位大大有關Redhat7.2usb碟無法讀取 系統是新安裝的RH7.2 插上usb碟是win系統下格式化的NTFS 會出現以下資訊 https://i.imgur.com/DzPii1L.jpg 想請教各位前輩高手 NTFS / exFAT格式在linux上需要讀取的話,要另外安裝什麼套件才能支援? ...

Ubuntu21.10哪個輸入法能自訂碼表?

Kumar avatar
By Kumar
at 2021-12-01T21:51
我用 dvorak 和行列,以前都是用 gcin 並自行替換成dvorak版本的gtab。 然而新電腦裝了Ubuntu 21.10之後…… ibus 可以運行,但它似乎沒有自訂碼表的功能,中文輸入無法保持dvorak鍵盤。 fcitx 4 和 5 都沒辦法用,一開始有成功打開但還是只能打出英文, 弄一弄就變 ...