В Linux есть множество утилит командной строки, которые администраторы изучали много лет назад, но сейчас многие из них устарели. Они всё ещё работают, man-страницы никуда не делись, и никто не запрещает их использовать, однако большинство таких инструментов больше не развивается активно.

Современные альтернативы справляются с теми же задачами эффективнее и доступны по умолчанию в большинстве дистрибутивов Linux.

Многие из устаревших команд относятся к сетевым утилитам из пакета net-tools, который уже много лет не развивается активно. Некоторые дистрибутивы Linux по умолчанию его даже не устанавливают.

Ниже перечислены 9 устаревших команд Linux, причины их замены и современные аналоги.

1. Команда ifconfig

Команда Linux ifconfig традиционно применялась для просмотра и настройки сетевых интерфейсов. С её помощью можно проверять IP-адреса, включать и отключать интерфейсы, менять MTU, смотреть MAC-адреса и выполнять другие базовые сетевые задачи.

Много лет это была одна из первых команд, которые администраторы Linux запускали после входа на сервер. Сейчас ifconfig заменила команда ip из пакета iproute2.

ip address
ip addr
ip a
ip link

Все эти команды показывают информацию о сетевых интерфейсах. Отличие только в записи: ip addr и ip a это короткие формы ip address, причём ip a пользователи Linux набирают чаще всего.

Команда ip мощнее, продолжает активно развиваться и даёт единый интерфейс для управления сетью.

Именно поэтому многие современные дистрибутивы Linux, включая минимальные установки Debian, Ubuntu, Fedora и RHEL, по умолчанию уже не содержат пакет net-tools. В итоге команда ifconfig может быть недоступна, если не установить её отдельно.

2. Команда netstat

Команда netstat показывает активные сетевые соединения, слушающие порты, таблицы маршрутизации и статистику сетевых интерфейсов. Долгое время это был основной инструмент для диагностики сетевых проблем и проверки того, какие службы слушают те или иные порты.

Сейчас её заменила команда ss. Она получает информацию о сокетах прямо из ядра, поэтому работает заметно быстрее и эффективнее, особенно на системах с большим числом активных соединений.

ss -t
ss -l
ss -tulpn

Эти команды показывают TCP-соединения, слушающие сокеты, а также все слушающие порты TCP и UDP вместе с процессами, которые используют эти порты.

Команда ss быстрее, потому что обращается напрямую к ядру Linux, а не читает данные из /proc. Она активно поддерживается и значительно эффективнее работает на системах с большим количеством сетевых соединений.

В итоге именно ss рекомендуется использовать для проверки сетевых соединений и открытых портов в современных системах Linux.

3. Команда scp

Команду scp десятилетиями используют для безопасного копирования файлов между системами Linux по SSH. Она простая, привычная и по-прежнему широко доступна. Однако у исходного протокола SCP есть несколько архитектурных ограничений и проблем с безопасностью.

В RHEL 9 поддержку устаревшего протокола SCP перевели в разряд устаревших, а современные версии OpenSSH по умолчанию используют протокол SFTP. Для многих сценариев передачи файлов лучше подходят rsync или sftp:

rsync -zvh backup.tar.bz2 /tmp/backups/
sftp [[email protected]](/cdn-cgi/l/email-protection)

rsync хорошо подходит для резервного копирования и повторной передачи файлов, потому что копирует только изменённые части файла. В свою очередь, sftp открывает интерактивную сессию передачи файлов с возможностями навигации по каталогам, поэтому это хорошая альтернатива для тех, кто раньше полагался на scp.

4. Команда route

Команда route показывает и изменяет таблицу IP-маршрутизации ядра. Сейчас её заменила ip route, входящая в набор команд ip, который используется для управления интерфейсами, адресами, маршрутами и соседними хостами.

ip route
ip route show

Эта команда выводит таблицу маршрутизации системы. Кроме просмотра маршрутов, ip route умеет добавлять, удалять и изменять их, используя тот же единый синтаксис, что и остальные сетевые команды из набора ip.

5. Команды egrep и fgrep

Команды egrep и fgrep относятся к семейству grep:

  • egrep ищет по расширенным регулярным выражениям.

  • fgrep ищет фиксированные текстовые строки вместо регулярных выражений.

Хотя обе команды всё ещё работают на многих системах, в GNU grep они признаны устаревшими. Вместо них стоит использовать эквивалентные опции grep:

grep -E    # replaces egrep
grep -F    # replaces fgrep

Эти опции дают те же возможности и не требуют выхода за пределы одной команды grep. Использование grep -E и grep -F сейчас рекомендуется как более переносимый подход во всех современных дистрибутивах Linux.

6. Команды arp, iptunnel и nameif

Несколько других команд из старого пакета net-tools тоже заменены командой ip из набора iproute2. Вместо отдельных утилит современные системы Linux решают эти сетевые задачи с помощью одной универсальной команды.

Современные аналоги выглядят так:

ip neighbor    # replaces arp
ip n           # short form of ip neighbor
ip tunnel      # replaces iptunnel
ip link        # replaces nameif

Команда ip объединяет эти сетевые задачи в одном инструменте, который активно развивается и доступен в современных дистрибутивах Linux.

7. Команда iptables

Команда iptables была стандартным инструментом межсетевого экрана Linux более двадцати лет. Однако сейчас большинство дистрибутивов Linux перешли на nftables как на предпочтительный фреймворк фильтрации пакетов.

RHEL, Rocky Linux и Fedora по умолчанию работают с nftables, а Debian и Ubuntu используют iptables через слой совместимости с nftables, а не через старую реализацию.

nft list ruleset
nft add rule inet filter input tcp dport 22 accept

Первая команда показывает текущие правила межсетевого экрана, вторая добавляет правило, разрешающее входящие SSH-подключения на порт 22.

Если у вас уже есть правила iptables, переписывать всё вручную не нужно. Утилита iptables-translate умеет преобразовывать отдельные правила iptables в их аналоги nftables, что заметно упрощает миграцию.

8. Команда traceroute

Команда traceroute строит карту сетевого пути от вашей системы до цели, отправляя зонды с постепенно увеличивающимся значением TTL (Time To Live). Она показывает состояние маршрута только в конкретный момент времени.

Для непрерывной сетевой диагностики обычно лучше подходит mtr (My Traceroute). Он объединяет возможности traceroute и ping в режиме реального времени, что помогает быстрее находить потери пакетов, задержки и нестабильные сетевые узлы.

mtr tecmint.com
mtr -r -c 10 tecmint.com

Первая команда запускает интерактивный просмотр сетевого пути в реальном времени. Опция -r вместо интерактивного интерфейса формирует отчёт, а -c задаёт, сколько циклов зондирования выполнить перед выводом отчёта.

Такой формат особенно удобен, когда нужно собрать диагностические данные для заявки в поддержку или отчёта о сбое.

9. Команды ifup и ifdown

Команды ifup и ifdown традиционно использовались в системах на базе Debian для включения и отключения сетевых интерфейсов на основе конфигурации из /etc/network/interfaces.

В большинстве современных дистрибутивов Linux сетью управляет сетевая служба, а не старые скрипты ifupdown.

Если в системе используется NetworkManager, применяйте:

nmcli device connect eth0
nmcli device disconnect eth0

Если используется systemd-networkd, подойдут команды:

networkctl up eth0
networkctl down eth0

Ubuntu Desktop и большинство дистрибутивов на базе RHEL по умолчанию используют NetworkManager, а на некоторых серверах применяется systemd-networkd. Минимальные серверные установки Debian или Ubuntu по-прежнему могут полагаться на старые скрипты ifupdown.

Если вы не уверены, какая сетевая служба используется в системе, сначала проверьте:

systemctl status NetworkManager
systemctl status systemd-networkd

Это поможет выбрать правильные команды для управления сетевыми интерфейсами в вашей системе.

Заключение

Большинство перечисленных команд всё ещё работают, если установлены в системе, поэтому срочно отказываться от них не нужно. Но это уже не те инструменты, которые разработчики Linux активно улучшают и рекомендуют для повседневного администрирования.

Современные аналоги, такие как ip, ss, nft, rsync и mtr, активно поддерживаются, предлагают больше возможностей и входят в стандартный набор инструментов современных дистрибутивов Linux.

Если освоить их сейчас, можно выработать привычки, которые будут работать и в текущих, и в будущих системах Linux. Не придётся переучиваться, когда старые пакеты вроде net-tools перестанут устанавливаться по умолчанию.

Какие из этих команд вы уже заменили, а какие ещё продолжаете использовать? Поделитесь в комментариях.