前幾天,公司要裝Postgresql 數(shù)據(jù)庫(kù),并且要加入Linux的Service里,部分腳本如下:
case $1 in
start)
echo -n "Starting PostgreSQL: "
su - $PGUSER -c "$DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1
echo "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>&1
echo "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 help
echo "Usage: $0 {start|stop|restart|reload|status}" 1>&2
exit 1
;; *)
在Linux系統(tǒng)里用service 命令啟動(dòng)都是正常,但是系統(tǒng)重啟后該服務(wù)就是起不來(lái)。后來(lái)發(fā)現(xiàn)Postgresql 的log中有這么一句話:Do you want to choose a different one? 剛開始就是不能理解,后來(lái)發(fā)現(xiàn)系統(tǒng)啟動(dòng)了SELinux,在網(wǎng)上一查,有的Linux 發(fā)行版中的SELinux對(duì)于 su user -c 命令不是很友好。
后來(lái)我改用runuser命令,問題就解決了。修改后的腳本如下:
case $1 in
start)
echo -n "Starting PostgreSQL: "
runuser -s /bin/bash $PGUSER -c "$DAEMON -i -D '$PGDATA' &" >>$PGLOG 2>&1
echo "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>&1
echo "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'"
;;
*)
本文出自:億恩科技【www.allwellnessguide.com】
服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]
|