У меня есть приложение, которое выплевывает время, когда оно запрашивается от клиента. У меня нет разрешений на использование порта 13, поэтому я поместил его в порт с действительно высоким номером. Теперь я не могу убить этот порт и не могу использовать порт ни для чего другого. Как мне найти демона, чтобы убить его (ps -ef не показывает его) и закрыть порт? Я не могу использовать «lsof», потому что я использую Redhat.
1 ответ
Теперь я не могу убить этот порт и не могу использовать порт ни для чего другого. Как мне найти демона, чтобы убить его (
ps -ef
не показывает его) и закрыть порт? Я не могу использоватьlsof
потому что я использую Redhat.
Другие указали на одну из ошибок в приведенном выше. Вторая ошибка в том, что нельзя "убить" порты. Порты не являются процессами. Третья ошибка - предположение, что у вас есть какой-то секретный магический процесс, который ps -e
не покажет вам. Если в списке нет процессов, за исключением некоторых неясных угловых случаев , процесс отсутствует. Четвертая ошибка, по иронии судьбы, возможно, самая главная, предполагает, что соединение с портом все еще открыто.
Гораздо более обыденным объяснением, которое соответствует описанному поведению, не требуя магически невидимых процессов, является то, что процесс завершился, но ничто еще не может привязаться к порту, потому что соединение TCP все еще находится в TIME_WAIT
. Опция -o
netstat
- это ваш друг. Так же как и опция -p
.
Кстати, SuperUser - не то место, где нужно спрашивать, как пишут такие демоны. И StackOverflow, то есть, решает этот и связанные вопросы снова и снова.
дальнейшее чтение
- Vic Metcalfe, Andrew Gierth и др. (1998-05-21). "Написание серверных приложений (TCP/SOCK_STREAM)". Программирование UNIX-сокетов на C - Часто задаваемые вопросы.
- https://stackoverflow.com/questions/14388706/