私は以下のsystemdサービスtcpdumpd.service
を書いて、永続的なtcpdump記録を開始しました。systemdをエスケープする方法ExecStartのコマンドに渡す指定子
[Unit]
Description=TCPDumpd
After=multi-user.target network.target
[Service]
Type=simple
ExecStart=/usr/sbin/tcpdump -pni eth0 -s65535 -G 3600 -w '/var/log/tcpdump/trace_%Y-%m-%d_%H:%M:%S.pcap' -z gzip
Restart=on-abort
[Install]
WantedBy=multi-user.target
tcpdumpが、時間%のHのようにstrftime-プレースホルダを可能分間%Mというように、あなたがタイムスタンプのファイルを作成できるように。
しかし、systemdには、(%n、%N、%p、%i、%U、%u、%m、%H、%b、%v)のような特殊な指定子があります。重複する指定子は、%mや%Hのように、systemdからの情報を渡し、プレースホルダをtcpdumpに渡してタイムスタンプを作ることを許可しません。
私は%mと%Hをtcpdumpに渡すことができるように、systemdの指定子をエスケープする方法があるかどうか知りませんか?
これが解決策です。あなたの正確な解決策に私を得た[この回答](http://stackoverflow.com/questions/28881758/how-can-i-use-spaces-in-systemd-command-line-arguments?rq=1)ありがとう! –
'systemd'バージョン215では' EnvironmentFile'の代わりに 'Environment =" TCPDUMP_FORMAT = %% Y - %% m - %% d _ %% H:%% M:%% S "'を使用できます。 –