Linux

xinetd 無法啟動

  • October 29, 2014

愚蠢的問題…我無法在我的 linux 機器(CENTOS 4.8)上啟動 xinetd。

到目前為止,我已經將其刪除並通過 yum 重新安裝。當我嘗試啟動它、停止它等時,我根本沒有收到任何錯誤。

  [root@server ~]# service xinetd stop
  [root@server ~]# service xinetd start
  [root@server ~]# service xinetd restart

我希望從系統中看到一些標準狀態(例如“服務已啟動 -

$$ OK $$" 我也沒有在 /var/log/messages 中看到任何日誌條目 我嘗試使用 -d 選項執行初始化腳本,但 nada。沒有錯誤。沒有服務啟動的確認消息。沒有。

有任何想法嗎?

$$ UPDATE $$- 根據建議,這是 cat /etc/init.d/xinetd 的輸出

#!/bin/bash
#
# xinetd        This starts and stops xinetd.
#
# chkconfig: 345 56 50
# description: xinetd is a powerful replacement for inetd. \
#              xinetd has access control mechanisms, extensive \
#              logging capabilities, the ability to make services \
#              available based on time, and can place \
#              limits on the number of servers that can be started, \
#              among other things.
#
# processname: /usr/sbin/xinetd
# config: /etc/sysconfig/network
# config: /etc/xinetd.conf
# pidfile: /var/run/xinetd.pid

PATH=/sbin:/bin:/usr/bin:/usr/sbin

# Source function library.
. /etc/init.d/functions

# Get config.
test -f /etc/sysconfig/network && . /etc/sysconfig/network

# More config

test -f /etc/sysconfig/xinetd && . /etc/sysconfig/xinetd

# Check that we are root ... so non-root users stop here
[ `id -u` = 0 ] || exit 1

# Check that networking is up.
[ "${NETWORKING}" = "yes" ] || exit 0

[ -f /usr/sbin/xinetd ] || exit 1
[ -f /etc/xinetd.conf ] || exit 1

RETVAL=0

prog="xinetd"

start(){
   echo -n $"Starting $prog: "

# Localization for xinetd is controlled in /etc/synconfig/xinetd
   if [ -z "$XINETD_LANG" -o "$XINETD_LANG" = "none" -o "$XINETD_LANG" = "NONE" ]; then
       unset LANG LC_TIME LC_ALL LC_MESSAGES LC_NUMERIC LC_MONETARY LC_COLLATE
   else
       LANG="$XINETD_LANG"
       LC_TIME="$XINETD_LANG"
       LC_ALL="$XINETD_LANG"
       LC_MESSAGES="$XINETD_LANG"
       LC_NUMERIC="$XINETD_LANG"
       LC_MONETARY="$XINETD_LANG"
       LC_COLLATE="$XINETD_LANG"
       export LANG LC_TIME LC_ALL LC_MESSAGES LC_NUMERIC LC_MONETARY LC_COLLATE
   fi
   unset HOME MAIL USER USERNAME
   daemon $prog -stayalive -pidfile /var/run/xinetd.pid "$EXTRAOPTIONS"
   RETVAL=$?
   echo
   touch /var/lock/subsys/xinetd
   return $RETVAL
}

stop(){
   echo -n $"Stopping $prog: "
   killproc $prog
   RETVAL=$?
   echo
   rm -f /var/lock/subsys/xinetd
   return $RETVAL

}

reload(){
   echo -n $"Reloading configuration: "
   killproc $prog -HUP
   RETVAL=$?
   echo
   return $RETVAL
}

restart(){
   stop
   start
}

condrestart(){
   [ -e /var/lock/subsys/xinetd ] && restart
   return 0
}


# See how we were called.
case "$1" in
   start)
       start
       ;;
   stop)
       stop
       ;;
   status)
       status $prog
       ;;
   restart)
       restart
       ;;
   reload)
       reload
       ;;
   condrestart)
       condrestart
       ;;
   *)
       echo $"Usage: $0 {start|stop|status|restart|condrestart|reload}"
       RETVAL=1
esac

exit $RETVAL

使用“strace”命令調試 xinetd,例如:

yum install strace
strace /usr/sbin/xinetd 2>&1 | tee log.txt

然後檢查 log.txt 以查看您的配置出了什麼問題。

我建議您備份您的配置,解除安裝 xinedt,刪除 /etc/xinetd.conf 和 /etc/xinetd.d/,然後使用 yum 重新安裝。當您能夠啟動它時,您可以逐步添加更多服務。

當服務沒有啟動並且沒有給出錯誤消息時,可能值得嘗試手動啟動服務。首先要做的是執行:

# bash -x /etc/init.d/xinetd start

這將顯示為啟動服務而執行的所有命令。這可能會給你一個關於它為什麼沒有啟動的線索。如果沒有,那麼您可以找到用於啟動守護程序的最終命令並手動執行它。這通常被證明是有幫助的。如果這仍然沒有幫助,您應該在 strace 下執行該命令。

(注意:我很久沒用CentOS了,所以路徑和東西可能不正確。我認為它還沒有使用upstart,但如果是,請查看/etc/event.d/xinetd或/ etc/init/xinetd.conf 並且應該有手動執行的命令。)

引用自:https://serverfault.com/questions/78002