【转载:未测试, 通常操作是 关闭 SELINUX】
Linux Postgresql Log中出现Do you want to choose a different one?的解决方法
前几天,公司要装Postgresql 数据库,并且要加入Linux的Service里,部分脚本如下:
case $1 instart)echo -n "Starting PostgreSQL: "su - $PGUSER -c "$DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1echo "ok";;stop)echo -n "Stopping PostgreSQL: "su - $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast"echo "ok";;restart)echo -n "Restarting PostgreSQL: "su - $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast -w"su - $PGUSER -c "$DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1echo "ok";;reload)echo -n "Reload PostgreSQL: "su - $PGUSER -c "$PGCTL reload -D '$PGDATA' -s"echo "ok";;status)su - $PGUSER -c "$PGCTL status -D '$PGDATA'";;*)# Print helpecho "Usage: $0 {start|stop|restart|reload|status}" 1>&2exit 1;; *)在 Linux系统里用service 命令启动都是正常,但是系统重启后该服务就是起不来。后来发现Postgresql 的log中有这么一句话:Do you want to choose a different one? 刚开始就是不能理解,后来发现系统启动了SELinux,在网上一查,有的Linux 发行版中的SELinux对于 su user -c 命令不是很友好。后来我改用runuser命令,问题就解决了。修改后的脚本如下:case $1 instart)echo -n "Starting PostgreSQL: "runuser -s /bin/bash $PGUSER -c "$DAEMON -i -D '$PGDATA' &" >>$PGLOG 2>&1echo "ok";;stop)echo -n "Stopping PostgreSQL: "runuser -s /bin/bash $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast"echo "ok";;restart)echo -n "Restarting PostgreSQL: "runuser -s /bin/bash $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast -w"runuser -s /bin/bash $PGUSER -c "$DAEMON -i -D '$PGDATA' &" >>$PGLOG 2>&1echo "ok";;reload)echo -n "Reload PostgreSQL: "runuser -s /bin/bash $PGUSER -c "$PGCTL reload -D '$PGDATA' -s"echo "ok";;status)runuser -s /bin/bash $PGUSER -c "$PGCTL status -D '$PGDATA'";;*)