Linux & Administration

Утилиты Linux

Набор базовых консольных программ Linux — rsync, chmod, find, tar и другие, из которых собирается повседневная работа на сервере.

Что такое утилиты Linux

Утилиты — маленькие консольные программы, каждая из которых делает одну вещь. Смысл в том, что их соединяют в цепочки через конвейер: сложная задача собирается из простых кирпичей, а не решается одной большой программой. Это и есть философия Unix, и на ней держится вся работа в CLI.

Что такое rsync

rsync — утилита синхронизации файлов, локально и по сети. Её отличие от cp и scp в дельта-алгоритме: rsync сравнивает источник с приёмником и передаёт только изменившиеся куски файлов. Повторный запуск на почти неизменившемся каталоге отрабатывает за секунды вместо часов — поэтому rsync стал стандартом для резервного копирования и выкладки файлов.

# синхронизировать каталог на удалённый сервер по SSH
rsync -avz --progress /srv/myapp/ user@203.0.113.10:/srv/myapp/

# зеркало: удалить на приёмнике то, чего нет в источнике
rsync -avz --delete /var/www/ /mnt/backup/www/

# сначала посмотреть, что произойдёт, ничего не трогая
rsync -avzn --delete /var/www/ /mnt/backup/www/

Ключ -a (archive) — это сразу рекурсия, сохранение прав, владельцев, времени и симлинков. -z — сжатие в канале, полезно по сети и лишне локально. Два правила, экономящих нервы:

  • Слеш в конце источника значим. /src/ — «содержимое каталога», /src — «сам каталог». Забыли слеш — получили /dst/src/ вместо /dst/.
  • --delete проверяйте через -n (dry run). Ошибка в пути источника вместе с --delete вычищает приёмник.

Что такое chmod

chmod (change mode) меняет права доступа к файлу. Права делятся на три группы — владелец, группа, остальные — и три действия в каждой:

Право Буква Число Для файла Для каталога
чтение r 4 прочитать содержимое посмотреть список файлов
запись w 2 изменить создать и удалить файлы внутри
выполнение x 1 запустить войти внутрь (cd)

Числа складываются: 7 = 4+2+1 = rwx, 6 = rw-, 5 = r-x. Три цифры — три группы.

chmod 755 script.sh     # владелец: всё; остальные: читать и выполнять
chmod 644 index.html    # владелец: читать/писать; остальные: только читать
chmod 600 ~/.ssh/id_ed25519    # только владелец, и никак иначе
chmod +x deploy.sh      # просто сделать исполняемым
chmod -R 755 /var/www/  # рекурсивно

600 для приватного SSH-ключа — не совет, а требование: клиент откажется работать с ключом, доступным другим пользователям.

И отдельно: chmod 777 — почти всегда неправильный ответ. Он означает «любой пользователь системы может изменить этот файл». В интернете его советуют как лекарство от ошибок доступа, но настоящая проблема обычно во владельце и лечится через chown -R www-data:www-data /var/www/mysite.

Что такое Ctrl+D

Ctrl+D — не команда, а символ конца ввода (EOF, end of file). Он говорит программе «данных больше не будет».

В пустой строке терминала он завершает сессию оболочки — то же самое, что exit, отсюда «нажал Ctrl+D и вылетел с сервера». В интерпретаторе (python3, psql) — корректный выход. При вводе текста в cat > file.txt — заканчивает ввод и сохраняет файл.

Не путайте с соседями:

Сочетание Что делает
Ctrl+C прервать текущую команду (SIGINT)
Ctrl+D конец ввода / выход из оболочки
Ctrl+Z приостановить процесс — вернуть в работу через fg
Ctrl+R поиск по истории команд

Базовый набор на каждый день

Утилита Зачем
ls, cd, cp, mv, rm навигация и файловые операции
cat, less, tail -f просмотр файлов, tail -f — живой хвост лога
grep, find поиск строк по шаблону и файлов по атрибутам
sed, awk замена текста и работа с колонками
tar, gzip архивы: tar -czf arch.tar.gz dir/
ps, top, htop что происходит с процессами
df -h, du -sh, free -h место на дисках и память
ss -tulpn какие порты слушаются и кем
curl, wget HTTP-запросы и скачивание
systemctl, journalctl службы и их логи
screen, tmux сессия переживёт обрыв SSH

tmux стоит освоить рано: без него оборванное соединение убивает длинную операцию вместе с сессией.

Связанные термины

  • Bash — оболочка, в которой утилиты соединяют в конвейеры
  • grep — самая частая из них
  • Linux — система, частью которой они являются
  • CLI — интерфейс, где всё это происходит
  • SSH — как добраться до утилит на сервере
  • Резервное копирование — главная работа rsync

Готовы запустить GPU-задачу?

Запустить GPU-сервер