Утилиты 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 стоит освоить рано: без него оборванное соединение убивает длинную операцию вместе с сессией.
Связанные термины
Готовы запустить GPU-задачу?
Запустить GPU-сервер