Глупый вопрос ... Я не могу запустить xinetd на моем Linux-сервере (CENTOS 4.8).
Дошло до того, что удалить и переустановить через yum. Когда я пытаюсь запустить его, остановить и т. Д., Я вообще не получаю ошибки.
[root@server ~]# service xinetd stop
[root@server ~]# service xinetd start
[root@server ~]# service xinetd restart
Я ожидаю увидеть какой-то стандартный статус от системы (например, «Служба запущена - [OK]». Я также не вижу никаких записей журнала в / var / log / messages
Я пробовал запустить сценарий инициализации с параметром -d, но нет. Ошибок нет. Нет подтверждающих сообщений о запуске службы. Ничего.
Любые идеи?
[ОБНОВЛЕНИЕ] - Согласно рекомендациям, вот вывод 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
Вы можете получить полезную информацию, если полностью обойдете сценарий запуска и запустите xinetd напрямую с флагом отладки -d.
/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, вы сможете использовать netstat, чтобы увидеть, как xinetd прослушивает порт chargen, выполнив следующую команду:
netstat -tap | grep xinetd
Результат должен выглядеть примерно так:
tcp 0 0 *:chargen *:* LISTEN 23439/xinetd
Если служба не запускается и не выдает сообщения об ошибке, вероятно, стоит попробовать запустить службу вручную. Первым делом нужно запустить:
# bash -x /etc/init.d/xinetd start
Это покажет вам все команды, которые запускаются для запуска службы. Это может дать вам понять, почему он не запускается. Если это не так, вы можете найти последнюю команду, используемую для запуска демона, и запустить ее вручную. Обычно это оказывается полезным. Если это по-прежнему не помогает, вам следует запустить команду под strace.
(Примечание: я не использовал CentOS долгое время, поэтому пути и вещи могут быть неправильными. Я не думаю, что он еще использует выскочку, но если это так, посмотрите в /etc/event.d/xinetd или / etc / init / xinetd.conf, и в нем должна быть команда для запуска вручную.)
Используйте команду "strace" для отладки xinetd, например:
yum install strace
strace /usr/sbin/xinetd 2>&1 | tee log.txt
Затем просмотрите файл log.txt, чтобы узнать, что не так с вашей конфигурацией.
Я бы порекомендовал вам сделать резервную копию ваших конфигураций, удалить xinedt, удалить /etc/xinetd.conf и /etc/xinetd.d/, а затем снова установить его с помощью yum. Когда вы сможете запустить его, вы сможете шаг за шагом добавлять дополнительные услуги.
xinetd - странный зверь. Как упоминал Зоредак, он не запустится, если ему нечего делать. Вы заявляете, что пытаетесь запустить tftpd, который работает через xinetd.
По умолчанию, когда установлен tftpd-сервер, он помещает файл с именем tftp в /etc/xinetd.d. Каталог xinetd заглядывает, когда начинает видеть, есть ли у него что-нибудь делать. В файле /etc/xinetd.d/tftp см. Строчку с надписью «disable = yes». Если он есть, вероятно, это ваша проблема. xinetd запускается, читает файл, но получает сообщение, что tftp отключен. Так что делать нечего.
Чтобы решить эту проблему (если это действительно проблема), отредактируйте файл /etc/xinetd.d/tftp и измените «disable = yes» на «disable = no». Теперь попробуйте перезапустить xinetd.
Для меня обычно это признак того, что что-то не так со сценарием для управления службой, т.е. переменная, в которой находится двоичный файл, не указывает на правильное место.
Вы можете пропустить /etc/init.d/xinetd и показать нам, что там написано?
Пара вещей, которые стоит проверить:
Ваш /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 оставаться «живым», даже если ничего не запущено, возможно, это даст вам больше информации.
Была аналогичная проблема на CentOS x64, работающем на OpenVZ с veth.
Закомментировал эту строку: ["$ {NETWORKING}" = "yes"] || выход 0
Просто поместите # перед этой строкой в /etc/init.d/xinetd, и теперь у меня это работает. Думаю проблема с проверкой сети при использовании veth интерфейса.
Если он не работает с командой службы, убедитесь, что xinetd действительно зарегистрирован как служба с помощью chkconfig (в вашем сценарии он выглядит так, как будто он зарегистрирован, но все же ...):
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
В RHEL переменная NETWORK оценивается в / etc / sysconfig / network, источником которого является сценарий инициализации. Вероятно, ваша переменная установлена в NETWORKING = no или не установлена вообще. Если вы установите это значение, все должно быть настроено