把centos6上的项目迁移到centos7上时,发现一个问题,原来在centos6上运行的程序,是忽略了所有日志输出的,在centos7上用同样的语法不生效了,所有日志都打印到/var/log/messages里去了,导致messages文件多出了很多不需要的日志信息,影响日常维护。
先来看看centos6上是怎么做的:
......忽略......
mhr=/usr/bin/test
start()
{
echo -n $"Starting $prog"
PSRUNPID=`ps -ef|grep $mhr|grep -v grep|wc -l`
if(test $PSRUNPID -lt 1)
then $mhr 2>/dev/null 1>/dev/null &
RETVAL=$?
return $RETVAL
else
echo
return 1
fi
}
.......忽略......
可以看到,centos6上是通过把日志输出重定向到/dev/null中来实现的。
那么在centos7上怎么做呢?是否也可以这么做?比如下面代码是否可以满足要求?
答案显然是否定的。
[Service]
ExecStart=/usr/bin/test 2>/dev/null 1>/dev/null
经过隔壁老王仔细研究发现,centos7 service文件可以帮我们做到。
[Service]
StandardOutput=null
StandardError=null
如上图所示,可以通过对StandardOutput和StandardError赋值达到日志重定向的目的。
本服务需要忽略日志,所以把两者都赋值成了null。
可选值有:inherit, null,

将CentOS6项目迁移至CentOS7时遇到日志问题,原本在CentOS6上通过重定向日志到/dev/null实现日志忽略,在CentOS7上此方法无效。经研究,CentOS7的service文件提供了通过设置StandardOutput和StandardError为null来忽略日志的功能,以避免日志写入/var/log/messages导致维护困扰。
最低0.47元/天 解锁文章
1448

被折叠的 条评论
为什么被折叠?



