web-dev-qa-db-ja.com

xinetdが起動しない

ばかげた質問... 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オプションを使用してinitスクリプトを実行しようとしましたが、nadaです。エラーはありません。サービスが開始されたことを示す確認メッセージはありません。何もない。

何か案は?

[更新]-推奨事項に従って、ここに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
2
Mike B

Snetコマンドを使用してxinetdをデバッグします。例:

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

次に、log.txtを調べて、構成の問題点を確認します。

構成をバックアップし、xinedtをアンインストールし、/ etc /xinetd.confと/etc/xinetd.d/を削除してから、yumを使用して再インストールすることをお勧めします。開始できるようになったら、段階的にサービスを追加できます。

2
vitalie

サービスが開始されず、エラーメッセージが表示されない場合は、手動でサービスを開始することをお勧めします。最初に行うことは、実行することです。

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

これにより、サービスを開始するために実行されているすべてのコマンドが表示されます。これは、なぜそれが開始されないのかについての手がかりを与えるかもしれません。そうでない場合は、デーモンを起動して手動で実行するために使用される最後のコマンドを見つけることができます。これは通常役に立ちます。それでも問題が解決しない場合は、straceでコマンドを実行する必要があります。

(注:CentOSを長い間使用していないため、パスや状況が正しくない可能性があります。まだupstartを使用しているとは思いませんが、使用している場合は、/ etc/event.d/xinetdまたは/ etc/init/xinetd.confと手動で実行するコマンドがあるはずです。)

3
David Pashley

起動スクリプトを完全にバイパスし、デバッグフラグ-dを指定してxinetdを直接実行すると、役立つ情報が得られる場合があります。

/usr/sbin/xinetd -f /etc/xinetd.conf -d

Gentooボックスで、サービスが定義されていない場合、上記のコマンドは、以下のデバッグ出力の後に終了します

09/10/26@21:26:05: DEBUG: 23117 {cnf_start_services} mask_max = 0, services_started = 0
09/10/26@21:26:05: CRITICAL: 23117 {init_services} no services. Exiting...

サービスが有効になっている場合(この場合はchargen、/ etc/xinetd.d/chargen-streamで行「disable = yes」を「disable = no」に変更)、上記のコマンドを実行すると次の出力が生成され、xinetdは終了しませんCtrl-cを押すまで。

09/10/26@21:41:00: DEBUG: 23261 {cnf_start_services} Started service: chargen-stream
09/10/26@21:41:00: DEBUG: 23261 {cnf_start_services} mask_max = 6, services_started = 1
09/10/26@21:41:00: NOTICE: 23261 {main} xinetd Version 2.3.14 started with libwrap loadavg options compiled in.
09/10/26@21:41:00: NOTICE: 23261 {main} Started working: 1 available service
09/10/26@21:41:00: DEBUG: 23261 {main_loop} active_services = 1

補足として、chargenを有効にしてinitスクリプトを実行すると、次のコマンドを実行することにより、netstatを使用してxinetdがchargenポートをリッスンしていることを確認できます。

netstat -tap | grep xinetd

出力は次のようになります。

tcp    0   0 *:chargen        *:*       LISTEN     23439/xinetd
3
user24091

私にとって、これは通常、サービスを制御するスクリプトに問題があることを示しています。つまり、バイナリを持つ変数が正しい場所を指していません。

/etc/init.d/xinetdをcatして、それが何を言っているか見てみましょう。

1
Natalie Adams

xinetdは奇妙な獣です。 Zoredacheが述べたように、何かすることがない限り、それは開始されません。 xinetdを介して実行されるtftpdを実行しようとしていることを述べます。

デフォルトでは、tftpd-serverがインストールされると、tftpというファイルが/etc/xinetd.dに配置されます。ディレクトリxinetdは、何かする必要があるかどうかを確認し始めるときに調べます。 /etc/xinetd.d/tftpファイルに、「disable = yes」という行があります。もしあれば、それはおそらくあなたの問題です。 xinetdが起動し、ファイルを読み取りますが、tftpが無効になっていると言われています。したがって、何もすることなく、それは終了します。

この問題を解決するには(これが実際に問題である場合)、/ etc/xinetd.d/tftpファイルを編集し、「disable = yes」を「disable = no」に変更します。 xinetdを再起動してみてください。

1
David

チェックするいくつかの事柄:

きみの /etc/xinetd.confは次のようになります。

defaults
{
    instances               = 60
    log_type                = SYSLOG authpriv
    log_on_success          = Host PID
    log_on_failure          = Host
    cps                     = 25 30
}
includedir /etc/xinetd.d

また、xinetdスクリプトと関連するバイナリとファイルのアクセス許可を確認し、必要に応じて実行可能であることを確認する必要があります。ささいなことのように聞こえますが、これらは見過ごされがちです(何時間ものラングリングの後、管理者はがっかりするでしょう)。

'disable = yes'ビットはすでにカバーされているので、それは問題ではありません。

/ etc/sysconfig/xinetdを編集して、これらの引数をxinetdに渡すことができます。

-d -dontfork-これにより、デバッグモードが有効になり、何も実行されていなくてもxinetdが「生きた」ままになります。おそらく、より多くの洞察が得られます。

1
Sam Halicke

Vethを使用してOpenVZで実行されているCentOSx64でも同様の問題が発生しました。

この行をコメント化しました:["$ {NETWORKING}" = "yes"] ||出口0

/etc/init.d/xinetdのこの行の前に#を置くだけで、今は問題なく動作します。 vethインターフェースを使用する場合のネットワークチェックの問題だと思います。

0
user32483

Serviceコマンドで機能しない場合は、chkconfigを使用してxinetdが実際にサービスとして登録されていることを確認してください(スクリプトからは登録されているように見えますが、それでも...):

chkconfig --list xinetd

君は見るべきだ:

xinetd          0:off   1:off   2:off   3:on    4:on    5:on    6:off

すべてのレベルがオフの場合、またはxinetdがサービスとして登録されていない場合:

chkconfig --add xinetd
chkconfig --level 345 xinetd on
0
gareth_bowles

RHELでは、NETWORK変数はinitスクリプトから供給される/ etc/sysconfig/networkで評価されます。変数はおそらくNETWORKING = noに設定されているか、まったく設定されていません。この値を設定すると、すべてが設定されます

0
crazybones