xinetd не запустится

  • Знайте, как программировать. Да, это важно: как один комментатор сказал, если Вы делаете это несколько раз, затем запишите сценарий - и запишите это хорошо.
  • Знайте инструменты, включенные в стандартную установку операционной системы. Для администраторов UNIX это означает инструменты как Korn Shell (ksh) и Perl и vi. Не полагайтесь на Emacs или Ruby или Tcl или присутствующий C shell.
  • Знайте сеть. Как пакеты Ethernet соединены? На что похож пакет? Каковы отличающиеся типы пакетов? Узнайте инструменты как tcpdump, wireshark, ищейка и другие.
  • Напишите портативный код. Если код собирается работать в соответствии с Linux - и Tru64 - и Солярисом - и OpenVMS - затем пишут портативный код. Даже если это будет работать под двумя версиями UNIX только - делают это портативным. Но затем, если это не должно быть портативно, не проводят дополнительное время на нем.
  • Знайте, где документация. Для Perl это означает perldoc, Торговцев Perl, perl.org, и т.д. Для ksh это означает страницу справочника и Ваши любимые книги оболочки Korn.
  • Документ, документ, документ, документ! Зарегистрируйте свой код, создайте страницы справочника, создайте встроенную документацию Perl, и независимо от того, что является соответствующим. Объясните, как использовать программу и почему Вы кодировали ее тот путь.
  • Знайте упаковочные инструменты своей системы. Знайте, как создать RPMs для Red Hat, или склады HP-UX или пакеты Соляриса: это позволит Вам создавать пакеты для своих систем и таким образом интегрировать их в процесс установки.
2
задан 25 October 2009 в 03:48
9 ответов

Используйте команду "strace" для отладки xinetd, примера:

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

Затем исследуйте log.txt для наблюдения то, что идет не так, как надо с конфигурацией.

Я рекомендовал бы Вам скопировать свои конфигурации, удалить xinedt, удалить/etc/xinetd.conf и/etc/xinetd.d/и затем установить его снова использование конфетки. Когда Вы сможете запустить его, можно добавить больше сервисов шаг за шагом.

2
ответ дан 3 December 2019 в 08:40
  • 1
    Интересный. Так это xinetd (и сервисы) работы, превосходные, если я просто ввожу/usr/sbin/xinetd. I' m не совсем уверенный, что это означает, но по крайней мере it' s прогресс.Спасибо. –  Mike B 27 October 2009 в 06:47

Когда сервис не запускает и не дает сообщение об ошибке, вероятно, стоит попытаться запустить сервис вручную. Первое, что нужно сделать состоит в том, чтобы работать:

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

Это покажет Вам все команды, которые выполняются для запуска сервиса. Это могло бы дать Вам ключ к разгадке относительно того, почему он не запускается. Если это не делает затем, можно найти, что заключительная команда раньше запускала демона и выполняла это вручную. Это обычно оказывается полезным. Если это все еще не помогает, необходимо выполнить команду под strace.

(Примечание: я не использовал CentOS в долгое время, таким образом, пути и вещи не могли бы быть корректными. Я не думаю, что это использует выскочку все же, но если это делает, посмотрите в/etc/event.d/xinetd или/etc/init/xinetd.conf, и это должно иметь команду для выполнения вручную.)

3
ответ дан 3 December 2019 в 08:40

Вы могли бы получить некоторую полезную информацию, если Вы обходите сценарий запуска в целом и работаете, xinetd непосредственно с отладкой отмечают-d.

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

На моем хинду поле, когда у меня не будет сервисов определенными, вышеупомянутая команда выйдет после ниже отладочной информации

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 изменении строка 'отключают = yes' для 'отключения = не') выполнение вышеупомянутой команды производит следующий вывод, и 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

Как примечание стороны, если Вы запускаете init скрипт с chargen, включенным затем, необходимо смочь использовать netstat, чтобы видеть, что xinetd слушает на chargen порте путем выполнения следующей команды:

netstat -tap | grep xinetd

Вывод должен выглядеть примерно так:

tcp    0   0 *:chargen        *:*       LISTEN     23439/xinetd
3
ответ дан 3 December 2019 в 08:40

Мне обычно, который является признаком, что существует что-то не так со сценарием для управления сервисом, т.е. переменная, которая имеет двоичный файл, не указывает на правильное местоположение.

Можете Вы кошка/etc/init.d/xinetd и позволять нам видеть то, что она говорит?

1
ответ дан 3 December 2019 в 08:40
  • 1
    Добавленный вывод сценария к основной сводке вопроса выше... извините - I' m все еще вполне до скорости с Linux. Что-нибудь выделяется? –  Mike B 25 October 2009 в 03:48
  • 2
    То, что Вы могли сделать, добавляют операторы эха после некоторых строк для наблюдения, где в сценарии это добирается. В сценариях Linux это идет сверху донизу. Так, я поместил бы некоторые операторы эха перед некоторыми тестовыми операторами как эхо " Тестирование на sysconfig/network" И также помещенные операторы эха перед тестами в [] скобки как эхо " Проверка root" Таким образом, Вы видите, где сценарий перестал работать и точно почему. Я не гуру CentOS, но это - вызывающе хорошее место для запуска, по-моему. Хотите, чтобы я отправил сценарий, отредактированный с комментариями (операторы эха)? –  Natalie Adams 25 October 2009 в 04:06
  • 3
    Это было бы большим, если Вы могли. I' ve никогда не редактировал init сценарий прежде. –  Mike B 25 October 2009 в 04:08
  • 4
    Это должно работать: pastebin.com/m700ca094; я работал бы: " CP/etc/init.d/xinetd ~ " Так, чтобы это скопировало исходную версию в Ваш корневой каталог. Затем просто передайте версию, которую я записал до Вашего сервера с помощью vi, CP, кошки, нано ect. –  Natalie Adams 25 October 2009 в 05:44

xinetd является странным зверем. Как упомянутый Zoredache, это не запустится, если это не будет иметь что-то, чтобы сделать. Вы заявляете свою попытку получить выполнение tftpd, которое пробегает xinetd.

По умолчанию, когда tftpd-сервер установлен, он помещает файл, названный tftp в/etc/xinetd.d. Каталог xinetd заглядывает, когда он начинает видеть, имеет ли он что-нибудь, чтобы сделать. В/etc/xinetd.d/tftp файле посмотрите существует строка, которая говорит, "отключают = да". Если существует один, который является, вероятно, Вашей проблемой. xinetd запускает, читает файл, но говорится, что tftp отключен. Таким образом ни с чем, чтобы сделать это выходит.

Для решения этой проблемы (если это - действительно проблема) отредактируйте/etc/xinetd.d/tftp файл и изменитесь, "отключают = да" для "отключения = не". Теперь попытайтесь перезапустить xinetd.

1
ответ дан 3 December 2019 в 08:40
  • 1
    Привет David. Спасибо за быструю обратную связь, но xinetd все еще doesn' t запускаются, к сожалению. –  Mike B 25 October 2009 в 05:02
  • 2
    xinetd регистрируется к/var/log/messages, когда он запускается. Посмотрите, существуют ли какие-либо сообщения об ошибках там. Например, на моем поле CentOS 4.7, я вижу: 24 октября 23:04:55 ослабляет xinetd: запуск xinetd, за которым следуют 24 октября 23:04:55, ослабляет xinetd[12517]: Версия 2.3.13 xinetd, запущенная с libwrap loadavg опции, скомпилированные в. 24 октября 23:04:55 ослабляет xinetd[12517]: Запущенная работа: 4 доступных сервиса –  David 25 October 2009 в 05:06
  • 3
    Если Вы изменяете первую строку/etc/init.d/xinetd к " #!/bin/bash-x" это распечатает все команды выполнения сценария. Думайте о нем как о подробном режиме. Возможно, одна из команд перестала работать. –  David 25 October 2009 в 05:10

Вещи пары проверить:

Ваш /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 сценария и любых связанных двоичных файлов и файлов, удостоверьтесь, что они - исполняемый файл и т.д. Звучит тривиальным, но эти вещи иногда пропускаются (очень к тревоге администратора после часов пререкания.)

Начиная с 'отключают =, бит ye был уже покрыт, это не проблема.

Можно отредактировать/etc/sysconfig/xinetd для передачи этих аргументов xinetd:

-d -dontfork - это включит режим отладки и заставит xinetd оставаться "живым" даже при том, что ничто не работает, возможно, он даст Вам больше понимания.

1
ответ дан 3 December 2019 в 08:40

Имел подобную проблему на работе CentOS x64 OpenVZ с veth.

Прокомментированный эта строка: ["$ {СЕТИ}" = "да"] || выходят 0

Просто поместите # перед этой строкой в/etc/init.d/xinetd, и это работает на меня теперь. Я думаю, что это - проблема с сетевой проверкой при использовании veth интерфейса.

0
ответ дан 3 December 2019 в 08:40

Если это не работает с сервисной командой, удостоверьтесь, что 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
0
ответ дан 3 December 2019 в 08:40

В RHEL СЕТЕВАЯ переменная оценена в/etc/sysconfig/network, который получен vi init сценарий. Ваша переменная, вероятно, установлена на NETWORKING=no или не набор вообще. Если Вы устанавливаете это значение, Вы должны быть все установлены

0
ответ дан 3 December 2019 в 08:40

Теги

Похожие вопросы