我在Centos7上有一项服务,该服务在/usr/local/sbin/restarthelp2.sh中运行脚本,并通过检查网络连接状态来输出隧道检查。该输出的结果以/ var / log / messages结尾,并使文件很大。我已经将输出发送到其自己的日志文件中,如何将脚本/服务的输出结果保留在“消息”文件之外?
[Unit]
Description=CHECK the wlan
[Service]
Type=simple
ExecStart=/usr/local/sbin/restarthelp2.sh
[Install]
WantedBy=default.target
上述脚本的代码:
#!/bin/bash
while true;
do
status=$(</sys/class/net/wlan0/operstate)
tunstate=$(</sys/class/net/tun0/carrier)
now=$(date)
if [ $status == up ] && [ $tunstate -eq 1 ];
then
echo "everything was good at $now, tunnel status was $tunstate" >> /var/log/wlancheck.log
echo "tunnel status is UP"
sleep 10
fi
done
答案 0 :(得分:0)
您可以在该行的[Service]
部分添加行
StandardOutput=null
,以便此输出不会记录到日志,也不会从那里记录到syslog。
有关其他值,请参见man systemd.exec
。
如果您使用的是rsyslogd
,则可以在邮件放入/var/log/messages
之前过滤邮件。删除上面的“单位”行以恢复正常的日志记录。查找类似/etc/rsyslog.conf
的文件和类似
*.info;... /var/log/messages
在此行前面添加一个过滤器,该过滤器将属性与您要禁止的内容进行比较,并使用 action {{1 }},例如:
stop
有大量的rsyslog文档,但是由于仍然支持许多旧格式,因此很难遵循,因此您必须注意不要混淆它们。
如果还将单位if $programname startswith "restarthelp" then stop
if $msg contains 'tunnel status is UP' then stop
更改为StandardOutput=null
,您将不再获得记录在systemd日志中的消息,它们将直接进入rsyslogd。我不知道这是否会为您提供所需的状态信息。