lsof -ti находит открытые файлы (сокеты - это файлы в системах на основе nix) -t удаляет заголовки, так что мы можем направить в kill (нам просто нужен идентификатор процесса), -i позволяет lsof найти файл на основе Интернет-адрес. Нам не нужно предоставлять полный адрес, мы можем просто искать по порту, используя шаблон: порт.
Некоторые команды принимают входные данные из stdin, и мы можем направить их напрямую, kill не является одной из этих команд, поэтому мы должны использовать xargs (он читает из stdin и вызывает указанную команду с вводом из stdin).
Наконец-то; позволяет нам выполнять обе команды независимо друг от друга. Независимо от того, lsof -ti: 3000 | Xargs Kill успешно или неудачно,
lsof -ti: 5000 | xargs kill будет запущен, и наоборот.
lsof -ti:3000 | xargs kill; lsof -ti:5000 | xargs kill