Вопрос или проблема
Я новенький в этом сообществе.
Я пытаюсь убить процесс с PID и получить его с помощью lsof -t
, но безуспешно. Команда lsof -t -i:port
не находит PID. Однако он явно отображается, когда я выполняю netstat -pln
:
deploy@debian-4gb-nbg1-2:~/apps/ssr/splitfire.ai$ netstat -pln
(Не все процессы могли быть идентифицированы, информация о процессе, не принадлежащем пользователю,
не будет показана, вам нужно быть root, чтобы увидеть всё.)
Активные интернет-соединения (только серверы)
Протокол Recv-Q Send-Q Локальный адрес Удаленный адрес Состояние PID/Имя программы
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN 1648178/puma 5.6.1
tcp 0 0 0.0.0.0:3002 0.0.0.0:* LISTEN 1446467/puma 5.6.1
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
tcp6 0 0 :::5432 :::* LISTEN -
tcp6 0 0 :::3003 :::* LISTEN 987025/node
tcp6 0 0 :::3010 :::* LISTEN 1302684/next-server
Команда, которую я использую для убийства PID kill -9 $(lsof -t -i:3010)
. Есть какие-нибудь подсказки?
Ответ или решение
В вашем случае, проблема заключается в том, что команда lsof
не отображает процесса, который показывает команда netstat -pln
. Давайте разберем, почему это может происходить и предложим возможные решения.
Понимание ситуации
Ваша задача заключается в том, чтобы завершить процесс, который прослушивает порт 3010
. Вы используете команды lsof
и netstat
, чтобы это сделать, но получаете разные результаты:
netstat -pln
отображает процесс с PID1302684
и говорит, что это процессnext-server
.- При использовании команды
lsof -t -i:3010
, вы не получаете PID, который выводитсяnetstat
.
Возможные причины несоответствий
-
Проблемы с правами доступа: Сообщение от
netstat
, указывающее, что не все процессы можно идентифицировать, намекает на то, что вы не обладаете необходимыми привилегиями, чтобы видеть информацию о процессах, не принадлежащих вашему пользователю. Командаlsof
также требует прав суперпользователя для отображения всех процессов. Попробуйте выполнить командуsudo lsof -t -i:3010
. -
Различия в синтаксисе: Uбедитесь, что вы вводите команды правильно. Для
lsof
должно быть достаточноlsof -t -i:3010
, чтобы найти PID, но необходимо выполнить это с правами суперпользователя, если процесс не принадлежит текущему пользователю. -
Версия программ: Разные версии
lsof
иnetstat
могут по-разному обрабатывать вывод, особенно в случае сложных сценариев с разными типами соединений и сокетов. Убедитесь, что у вас установлены актуальные версии, и при необходимости обновите их.
Рекомендации по решению
-
Проверьте права доступа:
- Выполните команду с
sudo
:sudo lsof -t -i:3010
- Если ваша учетная запись имеет права суперпользователя, эта команда должна вернуть PID нужного процесса.
- Выполните команду с
-
Запустите обе команды:
- Попробуйте выполнить
sudo netstat -pln
и посмотрите, отображается ли процесс с PID1302684
. Это позволит вам убедиться, что у вас есть доступ к информации о процессе.
- Попробуйте выполнить
-
Наблюдение за активными процессами:
- Если проблема сохраняется, вы можете использовать другие команды, такие как
ps
для получения списка всех процессов. Например:ps aux | grep next-server
- Это может помочь вам выяснить, работает ли процесс в данный момент и каковы его атрибуты.
- Если проблема сохраняется, вы можете использовать другие команды, такие как
-
Завершение процесса:
- Если вы нашли нужный PID с помощью
lsof
,netstat
илиps
, используйте командуkill
для завершения процесса:sudo kill -9 <PID>
- Если вы нашли нужный PID с помощью
Заключение
Ваши проблемы с PID могут быть вызваны различиями в привилегиях доступа, поэтому использование прав суперпользователя является ключевым моментом. Убедитесь, что команды выполняются с достаточными правами, и вы сможете успешно завершить нужный вам процесс.
Если у вас возникнут дополнительные вопросы или потребуется помощь, не стесняйтесь обращаться. Удачи в вашем проекте!