2
我已經編寫了以下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的允許的strftime-佔位符像小時%H,%M是分等等,讓您創建時間戳的文件。 (%n,%N,%p,%i,%U,%u,%m,%H,%b,%v)所以,systemd具有特殊的說明符,可以在其中使用。任何重疊的說明符(如%m和%H)會傳遞systemd中的信息,並且不允許將佔位符傳遞給tcpdump以創建時間戳。
有誰知道是否有辦法在systemd中轉義說明符,以便我可以將%m和%H傳遞給tcpdump?
這是解決方案。找到[這個答案](http://stackoverflow.com/questions/28881758/how-can-i-use-spaces-in-systemd-command-line-arguments?rq=1),讓我到你的確切解決方案。謝謝! –
對於'systemd'版本215,你可以使用'Environment =「TCPDUMP_FORMAT = %% Y - %% m - %% d - %% H:%% M:%% S - ''而不是'EnvironmentFile'。 –