2017-10-05 71 views
0

Journalctl似乎在跳過相應服務輸出的進程的某些輸出。這是怎麼發生的?Systemd丟棄stdout的隨機數

這裏有一個小例子:我有叫tester.py

import time 
count = 0 
while True: 
    time.sleep(.001) 
    count += 1 
    print count 

下面的腳本和我有以下服務稱爲tester.service

[Unit] 
Description=lots of output 
After=network.target 

[Service] 
User=django 
Group=django 
WorkingDirectory=/home/django 
ExecStart=/usr/bin/python -u tester.py 
Restart=always 
RestartSec=3 

[Install] 
WantedBy=multi-user.target 

運行sudo systemctl start tester和等待幾秒鐘後,然後我運行sudo journalctl -u tester

我注意到輸出跳過了大塊的數字。例如,下面是摘錄:

Oct 05 23:44:00 staging python[23185]: 999 
Oct 05 23:44:00 staging python[23185]: 1000 
Oct 05 23:44:00 staging python[23185]: 1001 
Oct 05 23:44:29 staging python[23185]: 26829 
Oct 05 23:44:29 staging python[23185]: 26830 
Oct 05 23:44:29 staging python[23185]: 26831 
Oct 05 23:44:29 staging python[23185]: 26832 
Oct 05 23:44:29 staging python[23185]: 26833 
+0

包括您正在使用的'systemd'版本。 –

+0

如果你看完整的'journalctl'輸出,那裏還有差距嗎? –

+2

哦,我的天哪,它的速度有限!沒有任何參數的journalctl顯示'Suppressed xxx messages from/system.slice/tester.service' ..默認情況下是每30秒1000條消息。謝謝@MarkStosberg – theicfire

回答

1

Systemd會限制您的輸出!默認值是30秒內的1000行輸出。您可以在/etc/systemd/journald.conf中更改

您可以通過單獨運行journalctl來驗證這是問題所在。您將看到以下格式的消息:Suppressed xxx messages from /system.slice/tester.service