启动脚本未在 amazon linux 上执行

启动脚本未在 amazon linux 上执行

我正在尝试将 syslog 转发到 logentries.com,这需要在 /etc/rsyslog.conf 中添加一行,到目前为止一切顺利。但是,我在 amazon elastic beanstalk 上运行,并且有 3 个环境(dev、staging、prod),我想根据环境将它们路由到不同的端口(logentries 根据转发的端口区分环境)

我创建了一个在端口 8001 上运行的 Apache 站点,它仅输出我想要用于该特定服务器的端口(由于 Elastic beanstalk 容器属性附加到 php.ini,我需要一种方法来输出 php.ini 变量)。然后我写了一个脚本:

#!/bin/bash
LOGENTRIES_PORT=`curl 127.0.0.1:8001`
if [ "${LOGENTRIES_PORT}" == '' ]; then
  exit -1
fi

echo "*.* @@46.51.181.128:${LOGENTRIES_PORT}" >> /etc/rsyslog.conf
service rsyslog restart

从终端运行时效果很好,但我似乎无法在启动时运行。

我把它塞在里面了/etc/rc.d/rc.local,我把它放进去了/etc/rc.d/rc3.d/S99logentries(带有777烫发),但没有成功。有什么想法可能是为什么吗?

答案1

将脚本作为 cron 作业或在启动时运行的“老”技巧是将 stderr 和 stdout 重定向到文件以查看会发生什么:

/path/to/your/script > /var/log/script.log 2>&1

还要记住:始终使用命令的绝对路径。将最后一行更改为/sbin/service rsyslog restart,然后重试。

附言:绝不 chmod 777用于 shell 脚本!

相关内容