Pythonサブプロセスの出力はsystemdによって2回記録されます。

Pythonサブプロセスの出力はsystemdによって2回記録されます。

私のアプリケーションには次のコードがあります。

def ifdown(iface):
    rc = subprocess.run(['/sbin/ifdown', iface]).returncode
    if rc:
        print(f'ifdown({iface}) returned {rc}')
        return False
    return True

アプリケーションはシステムサービスとして実行されます。問題は、関数を呼び出すとサブプロセス出力が2倍になることですjournalctl -e -u <my_service>

May 10 13:42:25 evolve-4 dhclient[6319]: Killed old client process
May 10 13:42:25 evolve-4 python[1134]: Killed old client process
May 10 13:42:26 evolve-4 dhclient[6319]: Internet Systems Consortium DHCP Client 4.4.1
May 10 13:42:26 evolve-4 python[1134]: Internet Systems Consortium DHCP Client 4.4.1
May 10 13:42:26 evolve-4 python[1134]: Copyright 2004-2018 Internet Systems Consortium.
May 10 13:42:26 evolve-4 python[1134]: All rights reserved.
May 10 13:42:26 evolve-4 python[1134]: For info, please visit https://www.isc.org/software/dhcp/
May 10 13:42:26 evolve-4 dhclient[6319]: Copyright 2004-2018 Internet Systems Consortium.
May 10 13:42:26 evolve-4 python[1134]: Listening on LPF/wwan0/ee:bc:6c:be:6d:7c
May 10 13:42:26 evolve-4 python[1134]: Sending on   LPF/wwan0/ee:bc:6c:be:6d:7c
May 10 13:42:26 evolve-4 python[1134]: Sending on   Socket/fallback
May 10 13:42:26 evolve-4 dhclient[6319]: All rights reserved.
May 10 13:42:26 evolve-4 dhclient[6319]: For info, please visit https://www.isc.org/software/dhcp/
May 10 13:42:26 evolve-4 dhclient[6319]: 
May 10 13:42:26 evolve-4 python[1134]: DHCPRELEASE of 100.68.214.247 on wwan0 to 100.68.214.248 port 67
May 10 13:42:26 evolve-4 dhclient[6319]: Listening on LPF/wwan0/ee:bc:6c:be:6d:7c
May 10 13:42:26 evolve-4 dhclient[6319]: Sending on   LPF/wwan0/ee:bc:6c:be:6d:7c
May 10 13:42:26 evolve-4 dhclient[6319]: Sending on   Socket/fallback
May 10 13:42:26 evolve-4 dhclient[6319]: DHCPRELEASE of 100.68.214.247 on wwan0 to 100.68.214.248 port 67

ベストアンサー1

私はこれがPython固有の問題だとは思わない。私の考えでは、dhclientは端末で実行しているようにsyslogとstderr(またはstdout)の両方にログを書き込むと思います。

つまり、stdout/stderr をifdownリダイレクトすると/dev/null、出力は倍増しません。もちろん、これがあなたの特定の状況に最適なソリューションであるかどうかはわかりません。

おすすめ記事