Я написал следующую службу systemd tcpdumpd.service
, чтобы начать постоянную запись tcpdump.Как избежать системного указателя для передачи команды в 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
ТСРйитр позволяет STRFTIME-заполнители, как% H на час,% M за минуту и так далее, чтобы создавать временные штампованных файлы.
Однако система имеет специальные спецификаторы, которые могут быть использованы в ней, например: (% n,% N,% p,% i,% U,% u,% m,% H,% b,% v) So любой из спецификаторов, которые перекрываются, например,% 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'. –