나는 다음과 같은 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, 분을위한 %의 M처럼의 strftime-자리를 허용 등등 당신은 시간 스탬프 파일을 만들 수 있도록.
그러나 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"'를 사용할 수 있습니다. –