Команды Linux для разработчика

Всем привет. Каждый разработчик сталкивается с тем что нужно знать кое какие команды Linux для разработке на удаленном сервере. Потому что бывают случаи когда надо развернуть web-сервер или просто что то по дебажить. Мне кажется что кажды программист должен консольные команды с помощью которых можно себе помочь. Я сейчас не говорю про тонкие настройки сервера или баз данных, просто базовые вещи которые должны помочь.

grep

grep -irn "FindText" * — поиск текста в файлах. Флаг На самом деле флагов у grep много, подробнее узнать о них можно на просторах интернета. Это мой вариант которым я пользуюсь.

  • -i — игнорирует регистр символов;
  • -r — означает что поиск пройдет рекурсивно;
  • -n — отображает номер строки;
  • -s — можно добавить, он подавляет ошибки о файлах, которые не смог открыть;
  • * — означает, что поиск будет происходить от текущего каталога

Вот еще один пример который я использую:

grep -irn --exclude=*.{js,css,svg,md,sql} --exclude-dir="tests" "on getMyFunctions(" *

  • —exclude — расширение файлов в которых мы не будем искать
  • —exclude-dir — папка которую мы будем игнорировать при поиске

На самом деле grep одна из первых команд которые я освоил, потому что если что то надо найти на удаленном сервере, то эта команда хорошо справляется с данной задачей.

find

find /path -type d -exec chmod 0755 {} \; Найдет все папки в директории /path и установит им права 0755. Зачем это нужно? Если Вам надо проставить для файлов одни права, а для фалов другие. Для фаллов мы укажем флаг -type f. Кроме этого существуют еще такие типы как символьные ссылки -type l , устройства посимвольного ввода-вывода -type c и блочные устройства -type b. Простой поиск файлов find -iname "FileName". Улита find тоже очень мощная, и другие флаги можно найти в документации, я привожу те примеры которые я действительно использую.

mc

Midnight Commander — файловый менеджер, с помощью которого можно легко перемещаться по папкам и просматривать файлы. Не надо постоянно набирать:

  • pwd — путь к каталогу в котором вы находитесь
  • cd .. — перемещение по папкам
  • ls -la — список файлов в каталоге

Единственная проблема которая может возникнуть, это не сохранение каталога в котором вы находитесь, это жутко не удобно. Для того что бы сохранить каталог при выходе(F10) в mc требуется добавить alias в .bash_profiles.

Для Linux: alias mc='. /usr/libexec/mc/mc-wrapper.sh

MacOS: alias mc='. /usr/local/opt/midnight-commander/libexec/mc/mc-wrapper.sh'

df & dh Размер дисков и папок

 df -h — Покажет в удобном виде размер дисков в ГБ

du -sh /path/folder — размер папки, если надо узнать размер текущего каталога пишем просто du -sh

crontab

  • crontab -l — список все крон задач
  • crontab -e — откроет крон задачи для редактирования, по умолчанию использует vim

screen

Очень удобная команда, если требуется запускать на сервере скрипт, который будет долго обрабатываться, а вы не хотите открывать еще одну консоль что б следить за выполнением или вовсе хотите закрыть консоль, а через некоторое время посмотреть за статусом выполнение скрипта. Для запуска просто вводим screen создается новый скрин с своей уникальной сессией, тут мы и запускаем наш скрипт. После, для того чтобы выйти из этого режима нажимаем на клавиатуре  Ctrl+A, после чего нажать D, вернемся сново к нашей консоли.

  • screen -r — вернутся к свернутому скрину
  • screen -list или screen -ls — список запущеных скринов
  • screen -x n — перейти в нужный скрин по номеру
  • screen -S n -X quit — что бы убить скрин введите такую команду.

Создание пользователя и права

sudo adduser username — добавить нового пользователя

sudo passwd username — добавить пароль к пользователю

usermod -aG group username — определяем пользователя к группе

chown -R username folder_name — меняем владельца директории

chmod -R 0755 folder_name — права на директорию

cp

Копирование файлов и директорий

 cp /path/to/file/from/file.log /path/to/

Также у этой команды существует множество флагов вот некоторые из них

  • —attributes-only — не копировать содержимое файла, а только флаги доступа и владельца;
  • -f, —force — перезаписывать существующие файлы;
  • -i, —interactive — спрашивать, нужно ли перезаписывать существующие файлы;
  • -L — копировать не символические ссылки, а то, на что они указывают;
  • -n — не перезаписывать существующие файлы;
  • -P — не следовать символическим ссылкам;
  • -r — копировать папку Linux рекурсивно;
  • -s — не выполнять копирование файлов в Linux, а создавать символические ссылки;
  • -u — скопировать файл, только если он был изменён;
  • -x — не выходить за пределы этой файловой системы;
  • -p — сохранять владельца, временные метки и флаги доступа при копировании;
  • -t — считать файл-приемник директорией и копировать файл-источник в эту директорию.

rsync

Команда rsync используется для удаленного копирования или синхронизации данных.

Например синхронизация данных на локальной машине

rsync -zvh /path/to/documents /path/to/backups/

Можно добавить влаг -a что б сохранились контрольные данные о фалах что копируются. Вот список атрибутов которые можно использовать

  • -v — Выводить подробную информацию о процессе копирования;
  • -q — Минимум информации;
  • -c — Проверка контрольных сумм для файлов;
  • -a — Режим архивирования, когда сохраняются все атрибуты оригинальных файлов;
  • -R — Относительные пути;
  • -b — Создание резервной копии;
  • -u — Не перезаписывать более новые файлы;
  • -l — Копировать символьные ссылки;
  • -L — Копировать содержимое ссылок;
  • -H — Копировать жесткие ссылки;
  • -p — Сохранять права для файлов;
  • -g — Сохранять группу;
  • -t — Сохранять время модификации;
  • -x — Работать только в этой файловой системе;
  • -e — Использовать другой транспорт, например, ssh;
  • -z — Сжимать файлы перед передачей;
  • —delete — Удалять файлы которых нет в источнике;
  • —exclude — Исключить файлы по шаблону;
  • —recursive — Перебирать директории рекурсивно;
  • —no-recursive — Отключить рекурсию;
  • —progress — Выводить прогресс передачи файла;
  • —stat — Показать статистику передачи;
  • —version — Версия утилиты.

Самое лучшее применение этой команды это копирование больших файлов на удаленный сервер

rsync -avz /path/to/folder/ root@192.168.56.102:/path/to/server/

Данные будут передаваться по ssh. Если же нам понадобится синхронизировать данные с удаленного сервера то можно воспользоваться такой командой

 rsync -avzhe ssh root@192.168.33.33:/path/to/log/install.log /local/path/

На самом деле у rsync очень много способов конфигурации, про ванную команду можно спокойно написать отдельную статью

Post Created 8

Related Posts

Begin typing your search above and press enter to search. Press ESC to cancel.

Back To Top