Золотые консольные команды в помощь блоггеру

03.05.2012

Золотые консольные команды

Большая часть клиентских компьютеров в Сети — работают с ОС Windows, однако в среде веб-хостинга ситуация обстоит с точностью до наоборот. Там, в основном, царят Unix системы. В этой статье я хочу поговорить о консольных командах, которые могут пригодиться в работе с Unix системами.

Виртуальные выделенные сервера сейчас стоят небольших денег, поэтому все чаще приходится сталкиваться с консолью Linux. Я не так давно окончательно перенес свои проекты на VPS от FastVPS, отказавшись при этом от панелей управления(они недорогие, но все же). Все работы мне приходится делать через консоль, поэтому я решил поделиться командами, которые я использую в своей работе. Глядишь, кому то и пригодятся.

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

Что такое консоль?

console

Консоль — наверное, старейший способ общения с компьютером, если не учитывать перфокарты, конечно Да, это те самые белые буковки на черном фоне. Консоль — это прямой ввод команд, которые компьютер должен исполнить. Все GUI (Graphical User Interface) — это лишь надстройка над консолью, для упрощения ввода команд.

Для доступа к консоли своего VPS я использую Putty, которая является программой-терминалом. Давайте определимся с терминами, чтобы было понятнее, о чем идет речь:

  • оболочка, или shell, или консоль — это основная программа, которая принимает команды пользователя. Это общий термин, который описывает все виды консолей, которых достаточно много (bash, dash, ksh и другие)
  • терминал — программа для связи между пользователем и системой. В данном случае — это Putty, программа для подключения к консоли через протокол SSH
  • bash — наверное, самая популярная консоль в среде Linux. Я работаю только с ней

При подключении к серверу у вас могут возникнуть проблемы с кодировкой. Обычно, хостинг работает на кодировке UTF-8, сменить ее в терминале до подключения к серверу можно так:

Изменение кодировки

Изменение кодировки

Других проблем быть не должно, Putty достаточно наглядная программа, там все просто и понятно. Если останутся вопросы — прошу в комментарии, расскажу подробнее.

В основном, все команды в Linux одинаковы. Различия лишь в названиях приложений, которые должны исполнить команду. Например, в Debian/Ubuntu за установку пакетов отвечает Aptitude, а в CentOS — yum. Синтаксис для них будет отличаться, файловые операции и общие команды идентичны.

Несколько рекомендаций для удобства

Первым делом, для большего удобства, я ставлю два обязательных пакета: htop и mc.

htop позволяет посмотреть текущую нагрузку на систему и запущенные процессы, как диспетчер задач в Windows.

mc — аналог  Far или Total Commander, это двухпанельный файловый менеджер. С его помощью можно отлично работать с переносом, копированием файлом, сменой владельца и назначением прав. Без него — как без рук, консольные команды по переносу и копированию хоть и простые, но с помощью mc у меня получается работать быстрее. Рекомендую к установке.

Консольные команды, необходимые в работе с блогом

Работа с правами суперпользователя(root)

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


sudo mc //разовое исполнение команды с правами root

su //переход в режим работы с правами root

Слово sudo перед командой говорит о том, что ее необходимо выполнить с правами root(суперпользователь или администратор). После ввода этой команды потребуется ввести пароль суперпользователя. Команда su дает вам право постоянной работы (в пределах сеанса) с правами суперпользователя.

Архивирование файлов

В первую очередь — это необходимо для создания бэкапов средствами самой системы, не прибегая к плагинам WordPress, если говорить об этой CMS. В Linux чаще всего используются два алгоритма сжатия — ZIP и GZIP. Разница между ними для конечного пользователя минимальна, поэтому я использую более привычный ZIP.

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


zip -r /home/folder1 /home/folder1/backup

unzip /home/folder1/backup.zip /home/folder1

Команда заархивирует всю папку folder1 и создаст в ней архив backup.zip и обратная команда, для распаковки. Параметр -r говорит системе, что паковать необходимо все файлы в папке, без него придется каждый файл прописывать руками.

Логика простая — что сделать(zip), где брать(/home/folder1) и куда ложить(/home/folder1/backup).

Удаление вложенных папок

С помощью mc это происходит гораздо быстрее, но покажу, как можно удалить папку рекурсивно, то есть со всеми вложенными папками:


rmdir -r -f /home/wp-content/uploads/2009

Тут тоже простая логика — команда(rmdir), которая удаляет папку, два параметра (-r -f), указывающих на метод удаления и путь, откуда удалять(/home/wp-content/uploads/2010)

Параметры рассмотрю подробнее. -r говорит системе, что удалять необходимо рекурсивно, с вложенными папками, -f указывает, что вопросов пользователю задавать не надо (уверен он или не уверен в удалении).

Команда очень опасная, файлы восстановлению не подлежат, поэтому аккуратнее

Создание бэкапа БД

Существует множество плагинов для WordPress, которые делают копии БД. Однако, я предпочитаю не грузить движок этими задачами, а оставить эту работу для операционной системы. Покажу простейший скриптик, который умеет это делать.

#!/bin/sh
time=`time +%d%m%Y`

path='/home/backup/'

mysqldump -uroot -ppass -hlocalhost yourbase > $path/$time.name.sql

zip -r $path/$time.name.sql $path/$time.name.zip

rm $path/$time.name.sql

Я ввожу две переменные — дату создания файла и путь, куда их складывать. Затем, встроенными средствами MySQL, командой mysqldump создаю резервную копию. Обратите внимание на параметры подключения к БД:

  • -u имя пользователя БД
  • -p пароль пользователя
  • -h путь к серверу с БД, обычно это localhost
  • yourbase — название вашей базы
  • $path/$time.name.sql — путь к файлу с копией базы

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

Как создать бэкап директории с сайтом?

Кроме базы данных сохранять нужно и сами файлы движка. Тут скриптик еще проще:

#!/bin/sh
time=`time +%Y%m%d`
input='/home/user/site1'
output='/home/user/backup/'
zip -r $output/$date.site1.zip $input

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

Скачать скрипты бэкапа

Для удобства, я оформил эти два скрипта в исполняемые файлы. Меняйте пути на свои и вперед.

Как добавить скрипт в Cron?

Cron — планировщик задач, который позволяет выполнять скрипты в нужное время с определенной периодичностью.  Перед добавлением скрипта, необходимо проверить доступ на чтение и исполнение владельцем файла:


chmod 750 /home/scripts/myscript.sh

Установили права для владельца, теперь приступим к добавлению скрипта. Учтите один момент — каждое задание добавляется с новой строки и обязательно(!) после каждой строки нажимать Enter, в том числе после последней(или единственной). Без этого задания работать не будут.


поле1 поле2 поле3 поле4 поле5 команда

Разберу базовый синтаксис, чтобы было понятнее:

  • поле1 — значение минут, от 0 до 59
  • поле2 — значение часов, от 0 до 23
  • поле3 — день месяца, от 1 до 31
  • поле4 — номер месяца, от 1 до 12
  • поле 5 — день недели, от 0(воскресенье) до 7(как ни странно, воскресенье)
  • команда — исполняемая команда или путь к файлу

Интересная функциональность — если в поле часы поставить, к примеру «/6», команда будет выполняться каждые 6 часов. Это очень удобно для периодических заданий, вроде бэкапа. Теперь непосредственно добавление скрипта:

#запускаем редактирование заданий

crontab -e

#открывается окно редактора, в котором добавляем задание
#выполнять скрипт раз в день в 00:00

0 0 * * * /home/scripts/myscript.sh

Сохраняем, если что-то пойдет не так — cron будет ругаться. В этом случае проверяйте синтаксис написания.

Вот, в принципе, основные команды и скрипты, которые могут пригодиться в работе над вашим сайтом из консоли. Конечно, их гораздо больше, как и вариантов их использования. Но в рамках одной статьи рассмотреть все просто нереально. Поэтому оставим это на другой раз.

Удачного дня

Комментариев: 4

  1. GerinG

    sshost — у меня OVZ-3 от FastVPS. Крутится 4 проекта, на WP, небольшие правда. Нагрузка — 25-30%

    Ответить
  2. sshost

    Думаю переносить свои проекты на vps.
    Хотелось бы узнать.
    Какое у Вас количество проектов (примерная нагрузка), и какой тарифный план вы при этом используете. Да бы примерить это на себя.

    Ответить
    • GerinG

      Спасибо
      Возился с переустановкой, заодно и решил написать ))

      Ответить