Сценарий Linux для уничтожения процесса, слушающего на конкретном порте

Вы думали о подвергании приложения при управлении версиями? Вы могли настроить систему, где обновления только выполняются на тестовой машине, затем зарегистрировались к системе управления версиями, такой как SVN. Каждое развертывание могло затем быть контролем управляемого версией репозитория.

2
задан 15 March 2010 в 01:57
6 ответов

Также можно сделать тем путем:

kill -9 $( lsof -i:?0003 -t )
5
ответ дан 3 December 2019 в 08:33
  • 1
    Очень изящный! Я часто использую вещи как lsof-ni:80,443 - но не знал о переключателе-t Спасибо! –  ThorstenS 15 March 2010 в 08:33
  • 2
    Действительно. ? подстановочный знак doesn' t работают над моей версией lsof, но несколькими-i работой опций. Изменение принятого ответа этому. –  EMP 16 March 2010 в 00:26
kill $(netstat -ntpl 2>/dev/null | egrep "^tcp  .*:[0-9]0003"|awk '{print $7}'|cut -d / -f 1 )

Можно сделать kill -9 вместо Вас думают, что эти-9 требуются. Я перенаправляю netstat stderr, потому что он опускает сообщение, когда выполнено как некорневое, который неважен с этой целью. Я включаю tcp в regex для отфильтровывания tcp6.

5
ответ дан 3 December 2019 в 08:33
  • 1
    Используя задние апострофы удерживается от использования, потому что это приводит к связанным с заключением в кавычки проблемам и ошибкам. Переключитесь на $() и поверните использование его в привычку. –   15 March 2010 в 02:30

там Вы идете, одна строка для Вас

netstat -ntlp | awk '$4~/:*0003$/{gsub(/\/.*/,"",$NF);cmd="kill -9 "$NF;system(cmd)}'
3
ответ дан 3 December 2019 в 08:33
  • 1
    +1 Работа очень приятно, спасибо. I' m принятие Peter Lyons' ответ, просто потому что it' s одна строка и может быть вставлен в командную строку более легко.:) –  EMP 15 March 2010 в 02:26
  • 2
    Хорошо затем, еще +1 здесь на Отказе сервера. –  EMP 16 March 2010 в 00:23

Я беру его что python команда является просто первым сроком в полной команде, правильно? Если у Вас есть название скрипта, запущенного, можно посмотреть на что-то как pgrep -f

Если Вы уверены в уникальности, можно также использовать связанное pkill -f

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

Что относительно killall <command> есть ли больше чем один из этих процессов?

Если это не работает попытка:

PID=`netstat -ntlp |grep -P "\*\:\d0003"`; kill -9 $PID

Это должно добиться цели.

0
ответ дан 3 December 2019 в 08:33
  • 1
    Нет, there' s всего один, и я can' t идут именем процесса, потому что it' s обычно просто " python" или " java". –  EMP 15 March 2010 в 02:05

Возможно, команда термофиксатора с-k и-n опциями может помочь. Скажите "термофиксатор человека" для большего количества информации.

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

Теги

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