База знаний

Инструкции и ответы на вопросы о хостинге, работе сайтов и приложений

Команды для работы с SSH

SSH позволяет управлять аккаунтом напрямую на сервере. С его помощью можно собрать полную информацию о занятом дисковом пространстве и количестве файлов, а также, например, импортировать объемный дамп базы данных, работать с системой контроля версий git и проектами на Node.JS или Python.

После подключения вы увидите приглашение командной строки: [username@server ~]$ 

  • username — логин вашего аккаунта на хостинге;
  • server — имя сервера, на котором он размещен.

Для работы требуется знание команд. Они выглядят так: command -key argument

  • command — название команды;
  • -key — дополнительные опции (ключи);
  • argument — значение, с которым будет работать команда (путь до папки, фраза, которую нужно найти и т.д.).

Рекомендуем прочитать справочную информацию для команды, которую вы планируете использовать, введя в консоли man. Обратите внимание, справочник англоязычный.

Например, откроем руководство для ls: [username@server domains]$ man ls Чтобы выйти из режима справки, нажмите «q».

Команды для работы с файлами

ls — просмотр содержимого каталога

Команда выводит перечень видимых файлов и папок: [username@server domains]$ ls
 domain.ru site.ru

Чтобы получить полную информацию о содержимом каталога, пригодятся ключи:

  • -l — вывести подробную информацию о файле;
  • -a — отобразить скрытые файлы;
  • -h — отобразить размер файла в удобном формате (по умолчанию выводится в байтах).

[username@server domains]$ ls -lah
итого 16K
drwxr-xr-x. 4 username username 4,0K янв 23 12:11 .
drwx--x---. 4 username service 4,0K дек 25 18:45 ..
drwxr-xr-x. 3 username username 4,0K дек 3 07:01 domain.ru
 drwxrwxr-x. 3 username username 4,0K янв 23 12:12 site.ru

pwd — показать полный путь до директории

Команда выводит полный путь до каталога, в котором вы находитесь: [username@server domains]$ pwd
 /home/username/domains

cd — переход по директориям

Для перехода между каталогами используйте команду cd. В качестве аргумента укажите путь до папки, куда нужно переместиться: [username@server ~]$ cd domains/domain.ru/public_html/ // Переходим в каталог domains/domain.ru/public_html/ .

// Проверяем:
[username@server public_html]$ pwd // Выводим путь до текущего каталога.
 /home/username/domains/domain.ru/public_html // Готово. Переход осуществлен.

Чтобы перейти на уровень вверх относительно текущего каталога, введите cd ..: [username@server public_html]$ cd ..
[username@server domain.ru]$ pwd // Выводим путь до текущего каталога.
 /home/username/domains/domain.ru // Мы перешли на уровень выше.

cd - — шаг назад (вернуться к предыдущему каталогу): [username@server domain.ru]$ cd -
 /home/username/domains/domain.ru/public_html // Перешли к каталогу public_html, где были ранее.

cd (без параметров) — перейти в домашний каталог: [username@server public_html]$ cd
[username@server ~]$ pwd // Выводим путь до текущего каталога.
 /home/username // Вернулись в домашний каталог пользователя username.

mkdir — создание папки

Команда имеет вид: mkdir путь_до_каталога, где «путь_до_каталога» — путь к создаваемой папке, в конце указывается ее имя.

Например: [username@server ~]$ mkdir domains/site.ru/example // Создаем каталог example по пути domains/site.ru/.

Если вы создаете каталог в том же месте, где находитесь, полный путь указывать не нужно: [username@server ~]$ cd domains/site.ru/ // Переходим в каталог site.ru.
[username@server site.ru]$ mkdir example2 // Создаем каталог example2 в текущем каталоге.

// Проверяем:
[username@server site.ru]$ ls // Выводим список файлов.
 example2 public_html // Каталог example2 создан.

touch — создание файла

touch создаёт пустой файл с именем и расширением, которое вы укажете, или обновляет дату модификации существующего файла: [username@server domains]$ touch example.txt // Создаем файл example.txt в текущем каталоге.

// Проверяем:
[username@server domains]$ ls // Выводим список файлов.
 example.txt // Файл example.txt создан.

rm — удаление папок и файлов

Для удаления файла достаточно указать путь до него: [username@server public_html]$ rm example.txt

Чтобы удалить директорию, используйте ключи -r (рекурсивно) и -f (без подтверждения): [username@server public_html]$ rm -rf example1

Очистить текущий каталог от всех файлов и папок можно с помощью команды: [username@server public_html]$ rm -rf *

cp — копирование файлов/папок

В качестве аргументов для команды укажите сначала полный путь до файла, который нужно скопировать, и через пробел полный путь до каталога, куда будет произведено копирование.

Чтобы скопировать папку со всем ее содержимым, укажите ключ -r (рекурсивно): [username@server]$ cp -r /home/username/domains/site.ru/public_html/example /home/username/domains/domain.ru // Копируем папку example из domains/site.ru/public_html в domains/domain.ru.

Если вы находитесь в том же каталоге, где и объект, который нужно скопировать, полный путь до него указывать не нужно: [username@server public_html]$ cp -r example2 /home/username/domains/domain.ru // Копируем папку example2 из domains/site.ru/public_html в domains/domain.ru.

// Проверяем:
[username@server public_html]$ cd /home/username/domains/domain.ru // Переходим в каталог domains/domain.ru.
[username@server domain.ru]$ ls // Выводим список файлов.
 example2 public_html // Папка скопирована.

mv — перемещение или переименование файлов и папок

Синтаксис команды mv такой же как, и у cp (копирование). Укажите сначала полный путь до файла, который нужно перенести, а затем путь до каталога, куда будут перемещены данные.

Пример:  [username@server domain.ru]$ mv primer.txt /home/username/domains/site.ru/public_html // Переносим файл primer.txt из domains/domain.ru/ в domains/site.ru.

//Проверяем:
[username@server domain.ru]$ ls // Выводим список файлов в каталоге domain.ru.
example2 public_html // Проверяем, что в списке нет файла primer.txt.
[username@server domain.ru]$ cd /home/username/domains/site.ru/public_html // Переходим в каталог domains/site.ru/public_html.
[username@server public_html]$ ls // Выводим список файлов.
 primer.txt // Файл перенесен.

Чтобы переименовать файл, введите сначала текущее имя, а затем — новое: [username@server public_html]$ ls // Выводим список файлов в текущем каталоге.
example.txt
[username@server public_html]$ mv example.txt primer.txt // Изменяем имя example.txt на primer.txt.

// Проверяем:
[username@server public_html]$ ls // Выводим список файлов.
 primer.txt // Файл переименован.

wget — получение файлов со сторонних сайтов

Скачивайте файлы на ваш аккаунт хостинга со сторонних ресурсов с помощью утилиты wget.

Wget работает с протоколами HTTP, HTTPS и FTP. С ее помощью удобно скачивать архивы, установочные пакеты в нужную директорию на дисковом пространстве аккаунта. Чтобы начать процесс закачки, выполните команду: [username@server ~]$ wget http://domain.ru/archive.zip

scp — передача файлов с компьютера

Команда scp поможет передать файлы с вашего устройства на unix на аккаунт. Заранее устаналивать соединение по SSH для использования этой утилиты не нужно. Выполните команду: [user@mycomputer ~] $ scp /home/user/desktop/file.txt username@domain.ru:domains/domain.ru/public_html Здесь /home/user/desktop/file.txt — путь до файла на копьютере, username@domain.ru — логин аккаунта на хостинге и доменное имя или IP-адрес сервера, domains/domain.ru/public_html — путь до директории, куда нужно загрузить файл.

Чтобы передать каталог, используйте ключ -r (рекурсивно):

[user@mycomputer ~] $ scp -r /home/user/desktop/folder username@domain.ru:domains/domain.ru/public_html


du — получение информации о занятом дисковом пространстве

По умолчанию команда выводит информацию о весе каждого каталога и подкаталога в байтах и пути до них: [username@server domains]$ du
4 ./site.ru/example
4 ./site.ru/public_html
12 ./site.ru
20 ./domain.ru
 36 . 

Чтобы читать результат работы команды было проще, добавьте ключи:

  • -s — вывести общий объем каталога;
  • -h — отобразить размер файла в удобном формате (Кб, Мб или Гб).

В качестве аргумента укажите символ «*»: команда посчитает размер каждого каталога и файла в директории:  [username@server ~]$ du -sh *
70M domains
4,0K example2
4,0K tmp
12K username_wor00.sql.bz2.gz
 16K username_wor1.sql


find — поиск файлов/папок

Команда имеет вид: find путь_до_каталога -ключи , где «путь_до_каталога» — папка, с которой начинается поиск.

Рекомендуем ознакомиться с руководством (man) для find, так как она обладает обширным набором ключей. Мы рассмотрим основные:

  • -name — поиск файлов, имена которых соответствуют заданному шаблону;
  • -type — поиск файлов определенного типа:
    • f — обычный файл;
    • d — каталог;
    • l — символическая ссылка.



Примеры

Найти все файлы с расширением .php в текущем каталоге (обозначается символом «.») и подкаталогах: [username@server ~]$ find . -name "*.php"

Найти все файлы с расширением .php, а также файлы, имена которых начинаются с точки в каталоге public_html: [username@server ~]$ find ./public_html -name "*.php" -o -name ".*"

Найти все каталоги, имена которых начинаются с «w» в текущей папке: [username@server ~]$ find . -name "w*" -type d


Количество файлов

С помощью find можно посчитать количество файлов на аккаунте. Выполните команду:  [username@server ~]$ find . | wc -l 

grep — поиск файлов по их содержимому

Команда имеет вид: grep "текст" путь_до_файла, где «текст» — информация, которую нужно найти, «путь_до_файла» — путь к файлу, по которому производится поиск.

Узнаем с помощью grep, какая база данных используется сайтом: [username@server domain.ru]$ grep "username_" -R // username_ — начало имени базы данных. Замените «username» на логин вашего аккаунта, -R — рекурсивный поиск.
public_html/example.php:define('DB_NAME', 'username_wor00');
public_html/example.php:define('DB_USER', 'username_wor00');

stat — подробная информация о файле

Выполните команду stat, чтобы узнать, когда файл был создан и изменялся: [username@server public_html]$ stat example.php
Файл: «example.php»
Размер: 3317 // Размер в байтах.
Inode: 57804829 // Уникальный индексный дескриптор.
Доступ: (0644/-rw-r--r--) // Права доступа.
Uid: ( 3645/username) // ID и имя владельца.
Gid: ( 3646/username) // ID и имя группы владельца.
Доступ: 2018-01-23 12:03:21.829402333 +0300 // Дата последнего обращения.
Модифицирован: 2017-12-20 13:34:11.831201546 +0300 // Дата внесения последних изменений в содержимое файла.
 Изменён: 2018-01-23 12:03:41.231474591 +0300 // Дата последнего изменения имени файла или прав доступа.

ln — создание ссылки на файл

Чаще всего применяется для создания символических ссылок (ярлыков). Используйте их, если необходимо, например, изменить путь до корневой директории сайта.

Команда имеет вид: ln -s исходный_файл целевой_файл, где «целевой_файл» будет ссылкой на «исходный_файл». Всегда указывайте полный путь к исходному файлу: [username@server domains]$ ln -s /home/username/domains/domain.ru/public_html/example1 /home/username/domains/site.ru/public_html/example2

// Проверяем:
[username@server domains]$ ls -la site.ru/public_html/example2 // Выводим полную информацию о каталоге example2.
 1 username username 53 янв 23 12:14 example1 -> /home/username/domains/domain.ru/public_html/example1

Для удаления символической ссылки перейдите в каталог, где сохранен «целевой_файл» и удалите созданный ярлык: [username@server public_html]$ cd /home/username/domains/domain.ru/public_html/ // Переходим в каталог, где расположена папка example1.
[username@server public_html]$ ls -la // Проверяем наличие символической ссылки: выводим полную информацию о каталоге.
drwxrwxr-x. 2 username username 4096 янв 23 12:08 example1
lrwxrwxrwx. 1 username username 53 янв 23 12:09 example2 -> /home/username/domains/domain.ru/public_html/example1
[username@server public_html]$ rm example2 // Удаляем ярлык.
[username@server public_html]$ ls -la // Еще раз выводим список файлов и проверяем, удалена ли символическая ссылка.
 drwxrwxr-x. 2 username username 4096 янв 23 12:08 example1

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

Изменить права на файл или папку можно с помощью команды chmod xxx путь_до_файла , где xxx - права, «путь_до_файла» — путь до папки или файла. Чтобы изменить права и на папку, и на ее содержимое, добавьте ключ -R (рекурсивно).

Пример

[username@server domains]$ chmod -R 777 /home/username/example2 // Устанавливаем права 777 для папки example2 и ее содержимого.

// Проверяем:
[username@server ~]$ stat example2 // Смотрим статус.
Файл: «example2»
Доступ: (0777/drwxrwxrwx) // Права для каталога example2 изменены на 777.
[username@server ~]$ cd example2/ // Переходим в example2.
[username@server example2]$ ls // Выводим содержимое каталога.
copytest.txt example1
[username@server example2]$ stat copytest.txt // Смотрим статус файла copytest.txt.
Файл: «copytest.txt»
 Доступ: (0777/-rwxrwxrwx) // Права доступа к файлу изменены на 777.


mc — Midnight Commander

Midnight Commander — файловый менеджер с текстовым интерфейсом, встроенный в консоль. Для запуска введите в команду mc.

Работа с базами данных

mysql — подключение к базе данных

Процесс подключения к базе данных с помощью команды mysql мы описали в статье.

Импорт дампа базы данных

mysql позволяет импортировать дамп базы данных, загруженный на дисковое пространство аккаунта. Выполните команду: [username@server domains]$ mysql -u db_username -p db_name < dump_name.sql где

  • db_username — имя пользователя базы данных;
  • db_name — название базы;
  • dump_name.sql — имя дампа.

mysqldump — экспорт дампа БД

Чтобы выгрузить дамп на дисковое пространство аккаунта выполните команду: [username@server domains]$ mysqldump -u db_username -p db_name > dump_name.sql Он будет помещен в каталог, из которого выполнялось действие.

Работа с архивами

Выбор команды для распаковки архива зависит от формата, в котором он создан: [username@server domains]$ unzip archive.zip
[username@server domains]$ unrar x archive.rar
[username@server domains]$ tar xf archive.tar
[username@server domains]$ tar xfz archive.tar.gz
[username@server domains]$ gunzip archive.gz
 [username@server domains]$ 7za x archive.7z

Особенности

Для команды rar обязательно укажите параметр «x», чтобы сохранить структуру.

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

Создать архив можно в формате .zip или .tar: [username@server domains]$ tar cf archive.tar directory/ // Помещаем каталог directory в архив archive.tar.
 [username@server domains]$ zip -r archive directory // Помещаем каталог directory в архив archive.zip.
Он будет сохранен в каталоге, где выполнялась команда. // Проверяем:
[username@server domains]$ ls // Выводим список файлов.
 archive.tar archive.zip directory domain.ru example.txt site.ru // Архивы archive.zip и archive.tar созданы.

crontab — планировщик Cron

Настройте выполнение скриптов по расписанию с помощью планировщика Cron. Чтобы добавить новое задание, выполните: [username@server ~]$ crontab -e

Откроется окно текстового редактора vim, нажмите клавишу «i», чтобы внести изменения. Добавьте команду в конец документа. Она состоит из времени выполнения (минута, час, число, месяц, день недели), пути до утилиты и пути до выполняемого скрипта, например: 15 12 * * * /usr/local/bin/wget http://domain.ru/script.php // Скрипт script.php будет выполняться каждый день в 12:15 

Выбор интерпретатора зависит от скрипта, который нужно выполнить. Для php-скриптов подойдет php, curl или wget, для Python или Node.js — python или node соответственно.

Чтобы узнать путь до нужного интерпретатора, выполните команду: [username@server ~]$ which php

Сохраните изменения в редакторе vim. Нажмите Esc и введите «:q!»

Вместо php укажите имя интерпретатора.

idn — преобразование домена в Punycode

Чтобы перевести IDN-домен в Punycode, выполните команду: [username@server ~]$ idn домен.рф

Горячие клавиши

Для удобства работы в консоли используйте горячие клавиши.

  • clear — очистить окно;
  • history — посмотреть список выполненных команд;
  • Ctrl+C — остановить выполнение команды;
  • Ctrl+D — выйти из системы;
  • !! — повторить последнюю команду;
  • Tab — автодополнение. Начните вводить имя папки или файла и нажмите Tab — название будет дописано автоматически.


Была ли эта инструкция полезной?