Как отлаживать, когда xinetd говорит: получил сигнал 17 (ребенок вышел)
Я пытаюсь запустить службы vsftpd и sshd, используя xinetd. мои конфигурационные файлы следующие.
/etc/xinetd.conf
defaults { instances = 60 log_type = FILE /var/log/xinetdlog log_on_success = HOST PID log_on_failure = HOST cps = 25 30 only_from = localhost } includedir /etc/xinetd.d
/etc/xinetd.d/ftp
service ftp { disable = no server = /usr/sbin/vsftpd server_args = -l user = root socket_type = stream protocol = tcp wait = no instances = 4 flags = REUSE nice = 10 log_on_success += DURATION HOST USERID only_from = 127.0.0.1 10.0.0.0/24 }
/etc/xinetd.d/ssh
service ssh { disable = no log_on_failure += USERID server = /usr/sbin/sshd user = root socket_type = stream protocol = tcp wait = no instances = 20 flags = REUSE only_from = 127.0.0.1 10.0.0.0/24 }
Несмотря на то, что я включил атрибут only_from, сервер vsftp, а также сервер ssh отказывают в подключении от localhost. В то время как серверы vsftp и ssh работают нормально по отдельности, когда я проверяю "service vsftpd start" и "service ssh start". когда я отлаживал с помощью терминала xinetd -d, я получал вывод
13/10/20@00:06:08: DEBUG: 3592 {cnf_start_services} Started service: ftp
13/10/20@00:06:08: DEBUG: 3592 {cnf_start_services} Started service: ssh
13/10/20@00:06:08: DEBUG: 3592 {cnf_start_services} mask_max = 8, services_started = 2
13/10/20@00:06:08: NOTICE: 3592 {main} xinetd Version 2.3.14 started with libwrap loadavg options compiled in.
13/10/20@00:06:08: NOTICE: 3592 {main} Started working: 2 available services
13/10/20@00:06:08: DEBUG: 3592 {main_loop} active_services = 2
13/10/20@00:06:16: DEBUG: 3592 {main_loop} select returned 1
13/10/20@00:06:16: DEBUG: 3592 {server_start} Starting service ftp
13/10/20@00:06:16: DEBUG: 3592 {main_loop} active_services = 2
13/10/20@00:06:16: DEBUG: 3607 {exec_server} duping 9
13/10/20@00:06:16: DEBUG: 3592 {main_loop} active_services = 2
13/10/20@00:06:16: DEBUG: 3592 {main_loop} select returned 1
13/10/20@00:06:16: DEBUG: 3592 {check_pipe} Got signal 17 (Child exited)
13/10/20@00:06:16: DEBUG: 3592 {child_exit} waitpid returned = 3607
13/10/20@00:06:16: DEBUG: 3592 {server_end} ftp server 3607 exited
13/10/20@00:06:16: DEBUG: 3592 {svc_postmortem} Checking log size of ftp service
13/10/20@00:06:16: INFO: 3592 {conn_free} freeing connection
13/10/20@00:06:16: DEBUG: 3592 {child_exit} waitpid returned = -1
обе службы начинают работу, но ни одна из них не работает.
после 3-4 часов я все еще не имею ни малейшего представления об этой ошибке. Любая помощь будет оценена. Спасибо!
1 ответ
Справочная страница signal(7) гласит:
Signal Value Action Comment --------------------------------------------------------- SIGCHLD 20,17,18 Ign Child stopped or terminated
Это означает, что всякий раз, когда дочерний процесс останавливается, т.е. vsftpd или sshd, родительский элемент - xinetd - получает сигнал 17 (который будет игнорироваться по умолчанию, но в вашем случае это не так).
Вам также нужно запустить SSHD с -i
:
-я
Указывает, что sshd запускается из inetd(8). sshd обычно не запускается из inetd, потому что ему нужно сгенерировать ключ сервера, прежде чем он сможет ответить клиенту, а это может занять десятки секунд. Клиенты должны будут ждать слишком долго, если ключ будет обновляться каждый раз. Однако при небольших размерах ключей (например, 512) использование sshd из inetd может быть осуществимо.
Я не знаю, какую версию vsftpd вы используете, но vsftpd-2.2.2-6.el6_0.1 работает нормально, если я установил listen=NO
в /etc/vsftpd/vsftpd.conf и запустите его без каких-либо аргументов.