Всех приветствую на своем сайте! Думаю, многие сисадмины сталкивались с тем, что если у них на сервере установлено много сервисов, то и множество портов тоже начинают быть заняты. и чтобы не гадать, какие порты к чему принадлежат, в Arch есть возможность вывести все занятые порты удобным списком.
Команды для вывода списка занятых портов в Arch Linux
В Arch Linux есть несколько вариантов вывести списки занятых портов. Выбирайте то, что будет удобнее для вас.
Способ 1: смотрим порты через встроенный ss
ss — это встроенный в Arch инструмент, который показывает активные слушающие порты, имя процесса и сам номер порта.
Для этого введите в терминале вот эту команду, а затем подтвердите пароль от вашей системы:sudo ss -tulnp | awk 'NR>1 {print $5, $7}' | column -t

Скриншотом выше вы увидите вывод данной команды.
Если вам нужно посмотреть список попроще, вроде Порт:Имя, для этого можно использовать вот эту команду:
sudo ss -tulnp | awk 'NR>1 {split($5,a,":"); split($7,b,"\""); print a[length(a)] "\t" (b[2] ? b[2] : $7)}' | sort -n -u | column -t -s $'\t'
Важно: Команда sudo нужна обязательно, так как в противном случае утилита не сможет показать системные процессы или процессы других пользователей, если таковые имеются в системе и выведет вместо них пустоту.

Как видите, теперь список портов и процессов показаны более компактно.
Способ 2: Смотрим порты через lsof
При желании можно поставить специальную утилиту lsof, которая выведет удобную таблицу без лишего хлама.
Для установки утилиты используйте команду:
sudo pacman -S lsof
После установки введите:
sudo lsof -i -P -n | grep LISTEN | awk '{print $1, $9}' | column -t

После этого список будет выведен таким образом.
Лайфхак: как сделать короткую команду для вывода портов
Чтобы не вводить каждый раз длинную команду с awk и всем остальным, мы настроим короткую команду всего из одного слова.
Для этого мы добавим новую функцию в конфигурационный файл вашей оболочки (`~/.zshrc` или `~/.bashrc`).
Почему именно функция, а не команда alias? Из-за обилия кавычек в команде терминал у меня выдавал ошибки, выводя «quotes>». Поэтому сделаем надежный вариант, который точно выйдет без возможных ошибок.
В зависимости от вашей оболочки, введите одну из этих команд ниже. Чтобы узнать какая оболочка конкретно у вас, введите echo ~/.${SHELL##*/}rc и команда выведет название вашей оболочки.
Если у вас Zsh:
nano ~/.zshrc
Если у вас Bash:
nano ~/.bashrc
Затем в конец открывшегося файла добавьте следующий блок:
ports() {
sudo ss -tulnp | awk 'NR>1 {split($5,a,":"); split($7,b,"\""); print a[length(a)] "\t" (b[2] ? b[2] : $7)}' | sort -n -u | column -t -s $'\t'
}
Теперь сохраните файл и выйдите из редактора, используя по очереди комбинации клавиш Ctrl+O, Enter, Ctrl+X.
Теперь перезагрузите сеесию вашего терминала с помощью команды source ~/.zshrc или source ~/.bashrc
После этого вам в терминал будет достаточно ввести ports, и команда мгновенно выведет список портов.
Надеюсь, данная статься была полезна! Спасибо за внимание и хорошего дня!
Больше статей про Arch Linux:
Установка VistaThemePlasma на Arch Linux с KDE Plasma
Archinstall: устанавливаем Arch Linux без опыта
И многое другое — здесь
