Logger命令在CentOS中不起作用?

问题描述:

我试图在我的脚本中使用logger因为initlog将被弃用,但它似乎不能在CentOS 5.8中工作,或者我在这里做错了什么。 我使用参数stop运行此脚本并检入/var/log/messages,并且它没有出现任何日志。我在CentOS 6.4中试过,它工作正常。Logger命令在CentOS中不起作用?

这里是我的代码部分:

stop() { 
    #---------------------------------------------------------------------- 
    # logging the stop 
    #---------------------------------------------------------------------- 
    logger -i "Stopping $service" -t "$service" # it seems not be working 

    #---------------------------------------------------------------------- 
    # getting the process PID 
    #---------------------------------------------------------------------- 
    pid_process=`ps -ef | grep "program.jar" | grep -v grep |awk -F' ' '{ print $2 }'`; 

    if [ $pid_process ]; then 
    action $"Stopping $service: " su - program_deployer -c $shutdown 
    RETVAL=$? 
    else 
    echo "#######################" 
    echo "$service is not running" 
    echo "#######################" 
    fi 

    #---------------------------------------------------------------------- 
    # now, delete the lock file 
    #---------------------------------------------------------------------- 
    rm -f /var/lock/subsys/$service 
    echo 
} 

什么是我的错吗?

+1

在命令行上做了一个简单的** echo test | logger **将任何内容写入syslog? – tink 2013-03-14 19:35:52

+0

这是因为'-t'的说法。记录器工作正常,没有指定标签。似乎是一个'记录器'中的错误。 – remort 2014-02-06 08:47:46

对于我在CentOS 5.8上的工作方式如上所述。我将所有*.info消息发送到/var/log/messages

您应该检查syslog是否正确配置为将这些消息发送到正确的目标,该syslog正在运行并且stop()函数实际上被调用。

我还假设stop()被称为root,因为我可以看到你做了su - program_deployer来关闭进程。

试试这个,

echo "Stopping $service" | tee -a /var/log/messages 

回声输出追加到/ var/log/messages中。

+0

但这种方式不会使用'logger'命令,对吗? – 2013-03-14 18:20:47

+0

这是正确的。该方法没有记录器命令。 – Bilzard 2013-03-14 18:33:23

+5

对于非root用户,直接写入系统日志文件将失败。 – 2013-03-14 20:59:20