Advertisement
  1. Code
  2. DevOps

Полезные *NIX команды для веб-разработчика

by
Read Time:11 minsLanguages:

Russian (Pусский) translation by Anton L (you can also view the original English article)

Зачем *NIX и зачем вообще нужно открывать консоль?

Согласно статистике W3Techs, 68% веб-сайтов используют Unix, веб-сайтов операционную систему, которых удалось определить. Это значит, что будучи веб-разработчиком, ваш код скорее всего работает на одном из Linux серверов. И вам не помешает знать, как настраивать и отлаживать ваш код на Unix и Linux системах. Давайте же разберёмся, что вам понадобиться для комфортного использования командной строки.

Основы

Стандартная *NIX команда состоит из трёх частей:

  • команда или программа для запуска
  • опции для изменения или указания определённого поведения команде
  • аргументы или вводимые данные необходимые для запуска команды

К примеру, если вам нужен список файлов в директории /var/www, воспользуетесь командой ls с соответствующим аргументом /var/www. Чтобы увидеть размер файлов в выводе команды, добавьте опцию -s, в итоге наша команда будет выглядеть следующим образом:

Перенаправление Ввода/Вывода (I/O) и пайплайны (Pipelines)

Большинство *NIX команд для взаимодействия используют текстовый ввод и вывод, посредством перенаправления вывода вы можете добавить результат команды в файл, а также передать вывод одной команды, как ввод другой, используя пайплайны. К примеру, мы можем добавить результат команды ls в текстовый файл:

Данная команда создаст или перезапишет файл /var/www/files.txt, после чего содержанием этого файла будет список папок и файлов директории /var/www. Ниже список стандартных перенаправлений ввода/вывода и пайплайнов:

  • > Перенаправляет вывод команды в файл на жёстком диске. Если данный файл существует, контент в нём будет удалён и перезаписан.
  • >> Похожее перенаправление, но в данном случая вывод будет добавлен в конец файла, уже существующий в файле контент не удаляется.
  • < Передаём контент файла команде, как ввод.
  • | Передаём вывод одной команды, как ввод другой.
  • tee Записывает вывод команды в файл, а затем передаёт его следующей команде в пайплайне.

Основные команды

Чтобы открыть страницы с описанием команды, используйте man. Страницы мануала с описанием имеют схожую структуру и могут включать в себя имя, краткое описание, подробное описание и примеры использования. Команда ниже покажет документацию для команды chmod:

Чтобы запустить такие команды, как сохранение конфигурации и перезагрузка процесса, вам нужно выполнить их от имени супер пользователя.  Для этого перед командой укажете sudo:

Если вы хотите выполнить несколько команд от имени супер пользователя, используйте команду su для переключения пользователей.

Обратите внимание: Ради безопасности и для предотвращения случайного выполнения значимых команд, которые могут повлиять на работу системы, не используйте sudo и su без веской на то причины. 

К более реальным примерам

Основы навигации

Ниже, три основные команды для навигации по файловой системе:

  • pwd выводит имя текущей директории
  • cd перемещение в директорию
  • ls выводит список контента в директории

Вот пример использования этих команд с итоговым результатом в терминале:

Поиск файлов

Для поиска файлов в иерархии директорий мы можем воспользоваться командой find. Данная команда очень мощная и может искать не только файлы, но и имена директорий, дату, размер и права доступа.

Найти все директории с именем “logs” в /var/www/, можно с помощью флага -type:

Для поиска PHP файлов в текущей директории, добавьте -name:

Найдите файлы с указанным правом доступа, используя опцию -perm:

Найти все файлы с размером больше 500-от мегабайт:

Конечно вы можете комбинировать эти опции для одной команды, и это только основы find, которая будет незаменимым помощником для поиска нужных файлов. Используйте мануал для получения большей информации.

Управление файлами и папками

Есть пять основных команд для управления папками и файлами в *NIX системах:

  • touch используется для изменения временной метки уже существующих файлов и директорий, также является самым простым способом создать новый файл.
  • mkdir для создания директорий
  • cp для копирования файлов и директорий
  • mv для перемещения файла или директории
  • rm для удаления файлов и директорий

Следующий пример создаст файл index.html, скопирует файл в новую директорию /var/www, и удалит исходник.

Другая замечательная команда - ln, которая предназначена для назначения ссылок между файлами. Команда ln чаще всего используется для создания символической ссылки для виртуального хоста:

Изменение прав доступа

Для изменения владельца файла или группы, воспользуйтесь chown. Не забудьте дать привилегии владельца пользователю apache, когда создаёте новый виртуальный хост для вашего веб-приложения:

Иногда директории кэша или логов в приложении должны быть доступны всем пользователям для записи файлов, с помощью команды chmod вы можете добавить права доступа 777. Опция -R предназначена для рекурсивного изменения прав, всех вложенных файлов и папок.

Если вы хотите сделать файл исполняемым, воспользуйтесь chmod с опцией +x.

Чтение файлов

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

Но команда cat показывает вывод в неудобном формате, у вас не будет возможности прокрутки вывода после использования данной команды. Чтобы получить такую возможность, используйте команды more или less, по своему принципу они работают вполне одинаково.

Другая полезная команда - tail, предназначена для вывода последних строк файла. Она отлично подходит для просмотра логов. По умолчанию данная команда выведет последние 10-ять строк, количество строк можно контролировать посредством параметра -n.

Вам понадобится более надёжный инструмент для просмотра нескольких файлов с логами и поиска по ним.  Для этого нам подойдёт grep - программа, читающая стандартный ввод, проверяет каждую строку не совпадает-ли она с указанным паттерном, после чего показывает, интересующие нас строки, посредством стандартного вывода.  Используя её в комбинации с cat и пайплайнами, вам не составит труда добиться желаемого результата.

Если вы хотите выбрать необходимые строки при выводе результата в консоль, воспользуйтесь grep:

Как вы можете заметить, grep отлично сочетается с пайплайнами. Последняя команда в примере выше, выведет все строки содержащие слова “shutting down” из файлов с логами.

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

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

  • GNU nano, небольшой, легкий в использовании текстовый редактор, отлично подойдёт для решения простых задач
  • Vim, редактор для продвинутых пользователей, обладает мощным функционалом, сложен в освоении для новичка
  • mcedit, полнофункциональный редактор с поддержкой окон, используется в Midnight Commander, простой в использовании файловый менеджер не установленный по умолчанию на *NIX системах.

Сравните их и выберете редактор, который подходит вам:

Архивы

Иногда есть необходимость создать резервную копию и сжать некоторые данные на сервере.

Чаще всего для подобных задач применяют инструменты для архивации tar и zip. Обратите внимание, что zip обычно не установлен на некоторых серверах по умолчанию.

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

Если вы хотите увидеть список файлов в архиве, используйте опцию -l, работает как с tar, так и с unzip:

Разархивировать интересующие вас файлы, можно следующими командами:

Периодическое выполнение задач

Если вы хотите периодически запускать какие-либо скрипты в определённое время, поможет вам в этом программа под названием Cron, для конфигурации данной программы используется файл под названием crontab (cron таблица), в нём можно указать команды, которые будут выполнятся в зависимости от расписания. Команда для работы с cron таблицами также носит название crontab.

Вызов crontab с опцией -l покажет вам cron таблицу.

Также у нас в распоряжении имеется опция -u, применяя её мы можем указать имя определённого crontab-пользователя. Если вы будете запускать задачи для веб-приложения, лучше редактировать их от имени www-data пользователя.

В выводе выше, нам показан пример cron таблицы. Можно заметить, что каждая строчка относится к времени выполнения: минута, час, день месяца,  месяц и день недели. В каждом поле может находиться значок звёздочки, являющийся значением для данного поля. Также есть возможность указать множества и временные промежутки, используя запятые и дефисы. Указав после временного промежутка слэш, вы тем самым пропускаете числовые значения в этом промежутке. В данном примере, первая команда будет запускаться каждые пять минут, вторая команда запустится с понедельника по пятницу в 15:00.

Для редактирования этого списка, вместо опции -l, передайте команде crontab . Файл конфигурации откроется в вашем текстовом редакторе. Используйте опцию -r для очищения cron списка.

Мониторинг Производительности

Команда top показывает информацию о системе, а также предоставляет мониторинг запущенных процессов в реальном времени. Нажмите Shift-M для сортировки процессов по потреблению памяти, Shift-P для сортировки программ в зависимости от нагрузки на процессор.

Чтобы узнать размер свободной и используемой системой памяти, запустите команду free. Добавьте опцию -h, для вывода полей в удобном формате.

Другая полезная команда - df, показывающая нам информацию о использовании жёсткого диска. Вы можете вызвать её с опцией -a, тем самым будут показаны все файловые системы на вашем сервере. И не забудьте добавить опцию -h для вывода удобочитаемого формата.

История Командной Строки

Вы можете использовать !!, чтобы повторить предыдущую команду или, если вы забыли sudo, запустите sudo !!.

Команда history покажет вам историю всех, вводимых ранее команд, довольно удобно, на тот случай если вы забыли синтаксис или не хотите печатать большую команду вручную. В комбинации с grep, tail и другими командами для фильтрации вывода, вы без труда найдёте интересующую вас строку в списке history.

Заключение

Использование консоли не такой сложный процесс, как вы можете подумать. Принципы работы Unix и Linux систем довольно легко понять, благодаря простому дизайну и замечательной документации. Надеюсь эта статья поможет вам почувствовать себя комфортно при работе с командной строкой и вы открыли для себя новые команды, которые пригодятся при создании и поддержке веб-приложений.

Если хотите поделиться своей любимой командой или у вас имеются вопросы, воспользуйтесь комментариями расположенными под этой статьёй.

Для Дальнейшего Чтения

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.