세 줄 모두 실행할 수 있습니다.
debian8@hwy:~$ trafficlog="/var/log/traffic.log"
debian8@hwy:~$ echo `date "+%Y-%m-%d %H:%M:%S "` | sudo tee -a $trafficlog
2017-02-04 21:20:41
debian8@hwy:~$ sudo iptables -v -L INPUT |grep Chain | sudo tee -a $trafficlog
Chain INPUT (policy ACCEPT 122 packets, 28381 bytes)
확인해 보겠습니다.
debian8@hwy:~$ cat /var/log/traffic.log
2017-02-04 21:20:41
Chain INPUT (policy ACCEPT 122 packets, 28381 bytes)
이제 내 debian8의 runlevel6에서 실행해 보겠습니다.
sudo vim /etc/init.d/K99trafficLog.sh
#!/bin/bash
trafficlog="/var/log/traffic.log"
echo `date "+%Y-%m-%d %H:%M:%S "` | sudo tee -a $trafficlog
sudo iptables -v -L INPUT |grep Chain | sudo tee -a $trafficlog
sudo chmod +x /etc/init.d/K99trafficLog.sh
sudo ln -s /etc/init.d/K99trafficLog.sh /etc/rc6.d/K99trafficLog
이제 테스트해 보겠습니다.
echo "" | sudo tee /var/log/traffic.log
그런 다음 재부팅하여 확인하십시오.
sudo cat /var/log/traffic.log
불행하게도 /var/log/traffic.log에는 아무 것도 기록되지 않습니다. 이유는 무엇입니까?
답변1
이러한 초기화 스크립트는 루트로 실행됩니다. 따라서 이러한 sudo/tee 해킹이 모두 필요하지 않습니다.
#!/bin/bash
exec >/var/log/traffic.log
date "+%Y-%m-%d %H:%M:%S "
iptables -v -L INPUT |grep Chain
또한 다음 /etc/rc*.d/K*
에서 실행됩니다.떠나다런레벨, /etc/rc*.d/S*
실행 중입력하다런레벨.
런레벨 6은 특별합니다. 이 런레벨에 들어가면 시스템이 재부팅되므로 실제로는 해당 레벨에서 나갈 수 없습니다.
언제든지 수동 디버깅 스크립트를 사용할 수 있습니다 sudo bash -x /etc/rc6.d/K99trafficLog
.
또한 현재 Debian 시스템이 systemd
서비스를 관리하는 데 사용됩니다. systemd에 대해 읽어 보십시오. 이전 런레벨 기반 접근 방식과 다르게 처리합니다.
답변2
sudo vim /etc/systemd/system/graphical.target.wants/Ktraffic.service
[Unit]
Description=Record net traffic
[Service]
Type=oneshot
ExecStart=/bin/bash /etc/init.d/K01trafficLog.sh
[Install]
WantedBy=poweroff.target
sudo vim /etc/init.d/K011trafficLog.sh
#!/bin/bash
trafficlog="/var/log/traffic.log"
date "+%Y-%m-%d %H:%M:%S " >> $trafficlog
iptables -v -L INPUT |grep Chain >> $trafficlog
systemctl enable ktraffic.service