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

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

Для подключения можно использовать терминал в вашей ОС, утилиту PuTTY или же веб-консоль в панели управления. Подробнее см. в статье статье «Подключение по SSH».

Обратите внимание, что команды необходимо вводить в нижнем регистре. Например, pwd — корректное имя команды, Pwd — некорректное.

Навигация

Файлы и каталоги

Навигация

Вывод текущей рабочей директории

Для вывода информации о текущей рабочей директории используется команда pwd.

Пример использования:

username@server:~$ pwd
/home/u/username

Вывод содержимого директории

Чтобы посмотреть содержимое директории, воспользуйтесь командой ls.

Вывод содержимого текущей директории в несколько колонок (только имена файлов и директорий):

ls .

Вывод содержимого текущей директории в одну колонку (только имена файлов и директорий):

ls -1

Вывод подробной информации о содержимом текущей директории, включая скрытые файлы (имя которых начинается с точки):

ls -la

Вывод содержимого конкретной директории:

ls имя_директории

Пример использования:

username@server:~$ ls -la
total 16
drwx------  4 username customers 4096 Mar 10 12:56 .
drwx------ 14 username customers 4096 Mar 10 12:55 ..
-rw-------  1 username customers    0 Mar 10 12:56 .htaccess
drwx------  2 username customers 4096 Mar 10 12:55 test
drwx------  2 username customers 4096 Mar 10 12:55 test1
-rw-------  1 username customers    0 Mar 10 12:55 test.txt

где "." — текущий каталог, а ".." — родительский каталог.

Перемещение между директориями

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

Основные способы применения:

Перейти в директорию, которая находится в текущей директории:

cd dirname

Перейти в родительский каталог (на уровень выше):

cd ..

Перейти в домашний каталог:

cd
  
# Либо:
  
cd ~

Перейти в домашний каталог по абсолютному пути (начиная с корня):

cd /home/u/username

Перейти в предыдущий каталог:

cd -

Примеры использования:

# Текущая директория отображается после двоеточия и до символа "$".
  
# Перейти в каталог media
username@server:~$ cd /home/u/username/public_html/media
  
# Перейти в каталог cms
username@server:~/public_html/media$ cd cms
  
# Перейти в домашний каталог
username@server:~/public_html/media/cms$ cd
  
# Перейти в предыдущий каталог
username@server:~$ cd -
/home/u/username/public_html/media/cms
  
# Перейти на уровень выше
username@server:~/public_html/media/cms$ cd ..
username@server:~/public_html/media$
Наверх

Действия с файлами и каталогами

Создание директорий

Команда для создания директорий — mkdir.

Создать директорию:

mkdir имя_директории

Создать сразу несколько директорий:

mkdir имя_директории1 имя_директории2

Создать дерево директорий:

mkdir -p /имя_директории1/имя_директории2

Пример использования:

username@server:~/test_home/test$ ls -l
total 0
username@server:~/test_home/test$ mkdir dir1
username@server:~/test_home/test$ ls -l
total 4
drwx------ 2 username customers 4096 Mar 10 13:16 dir1

Создание файлов

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

Создать новый файл при его отсутствии (если файл существует, содержимое файла не изменяется):

touch test.txt

Создать новый файл при его отсутствии (если файл существует, то команда удаляет его содержимое):

> test.txt

Создать новый файл при его отсутствии и записать в него строку «test» (если файл существует, то команда заменяет его содержимое на строку «test»):

echo "test" > test.txt

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

Также можно создать файл с помощью текстового редактора. На наших серверах доступен nano:

nano имя_файла

При этом файл сразу будет открыт для редактирования.

Чтобы сохранить изменения и закрыть файл, в nano можно воспользоваться сочетанием клавиш Crtl X → Y → Enter.

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

Копирование каталогов и файлов осуществляется с помощью команды cp.

Основные способы применения:

Скопировать файл test.txt в файл test1.txt (файл test.txt должен присутствовать в текущей директории):

cp test.txt test1.txt

Скопировать директорию dir1 в директорию dir2, включая всё содержимое (ключ -r означает рекурсивное копирование, директория dir1 должна присутствовать в текущей директории):

cp -r dir1 dir2

Перемещение и переименование файлов

Перемещение и переименование файлов выполняется при помощи команды mv.

Основные способы применения:

Переименовать файл test.txt в test2.txt (файл test.txt должен присутствовать в текущей директории):

mv test.txt test2.txt

Переместить файл test2.txt в директорию dir (файл и директория должны присутствовать в текущей директории):

mv test2.txt dir

Примеры использования:

username@server:~/test_home$ ls -l
total 4
drwx------ 2 username customers 4096 Mar 10 13:37 dir
-rw------- 1 username customers    0 Mar 10 13:37 test.txt
username@server:~/test_home$ mv test.txt test2.txt
username@server:~/test_home$ ls -l
total 4
drwx------ 2 username customers 4096 Mar 10 13:37 dir
-rw------- 1 username customers    0 Mar 10 13:37 test2.txt
username@server:~/test_home$ mv test2.txt dir
username@server:~/test_home$ ls dir
test2.txt

Удаление файлов и каталогов

Для удаления объектов используйте команду rm.

Основные способы применения:

Удалить файл test.txt в текущем каталоге:

rm test.txt

Удалить все файлы в определенной директории:

rm /путь/к/файлам/*

Удалить все файлы с расширением .txt в определенной директории:

rm /путь/к/файлам/*.txt

Удалить директорию и все ее содержимое:

rm -r имя_директории

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

rm -i /путь/к/файлам/*.txt

Если же файлов много и вы точно уверены в необходимости их удаления, можно использовать противоположную опцию -f, тогда удаление будет выполнено без подтверждения:

rm -f /путь/к/файлам/*.txt

Создание ссылок

Ссылки при работе по SSH-протоколу создаются командой ln.

Основные способы применения:

Создать жёсткую ссылку:

ln file1 file2

Создать символьную ссылку:

ln -s file1 file2

Примеры использования:

username@server:~/test_home$ ls -l
total 0
-rw------- 1 username customers 0 Mar 10 14:08 test.txt
username@server:~/test_home$ ln -s test.txt link
username@server:~/test_home$ ls -l
total 0
lrwxrwxrwx 1 username customers 8 Mar 10 14:08 link -> test.txt
-rw------- 1 username customers 0 Mar 10 14:08 test.txt

Изменение прав доступа к файлам и директориям

Команда chmod позволяет настроить права доступа к файлам и директориям.

Основные способы применения:

Изменение прав на xxxx для файла file (file должен существовать в текущей директории):

chmod xxxx file

Изменение прав на xxxx для директории dir (dir должна существовать в текущей директории):

chmod xxxx dir

Примеры использования:

username@server:~/test_home$ ls -l
total 4
drwx------ 2 username customers 4096 Mar 10 14:39 dir
-rw------- 1 username customers    0 Mar 10 14:39 test.txt

username@server:~/test_home$ chmod 0644 test.txt
username@server:~/test_home$ ls -l
total 4
drwx------ 2 username customers 4096 Mar 10 14:39 dir
-rw-r--r-- 1 username customers    0 Mar 10 14:39 test.txt

username@server:~/test_home$ chmod 0777 dir/
username@server:~/test_home$ ls -l
total 4
drwxrwxrwx 2 username customers 4096 Mar 10 14:39 dir
-rw-r--r-- 1 username customers    0 Mar 10 14:39 test.txt

Работа с содержимым файлов

Конкатенация содержимого файлов

Команда cat позволяет выполнить конкатенацию (объединение) содержимого файлов и печать его в стандартный поток вывода. Данная команда зачастую используется просто для просмотра содержимого файла.

Примеры использования:

username@server:~/test_home$ cat test.txt
1
2
3
4
5
username@server:~/test_home$

Данную команду можно использовать в сочетании с командами head и tail для вывода определённого количества строк от начала или конца файла соответственно.

Примеры использования:

username@server:~/test_home$ cat test.txt | head -2
1
2
username@server:~/test_home$ cat test.txt | tail -1
5

Данные команды позволяют вывести 2 первых строки и 1 последнюю строку файла  test.txt.

Поиск по содержимому файла

grep — это популярная команда, позволяющая найти содержимое файлов.

Например, у нас есть файл test1.txt, который имеет следующее содержимое:

username@server:~/test_home$ cat test1.txt
 
1 first string
2 second string
3 another example of a string
4 something in here
5 andalsohere

Примеры использования grep:

username@server:~/test_home$ grep 'string' test1.txt
1 first string
2 second string
3 another example of a string

username@server:~/test_home$ grep 'th' test1.txt
3 another example of a string
4 something in here

username@server:~/test_home$ grep 'here' test1.txt
4 something in here
5 andalsohere

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

Поиск файлов

Используйте команду find, чтобы найти нужный файл.

Основные способы применения:

Поиск файлов и каталогов с именем «test» в текущей директории:

find ./ -name 'test'

Поиск в текущей директории файлов и каталогов, имена которых начинаются на «test» и далее содержат любое количество любых символов:

find ./ -name 'test*'

Поиск в домашней директории файлов и каталогов, имена которых начинаются на «test» и далее содержат любое количество любых символов:

find ~/ -name 'test*'

Поиск файлов с расширением «.php» в домашней директории:

find ~/ -name '*.php'

Пример использования:

username@server:~/test_home$ find ./ -name 'test*'
./test.txt

Архивы

Создать архив директории:

tar -cf имя_архива.tar имя_директории

Пример использования:

# Заархивировать директорию /home/u/user/директория_сайта/public_html/media/
 
# 1.Перейти в каталог, в котором находится директория media:
username@server:~$ cd /home/u/user/имя_сайта/public_html/
 
# 2.Выполнить команду архивации, задав удобное имя архива:
username@server:~/имя_сайта/public_html$ tar -cf имя_архива.tar media

Распаковать архив .tar в текущую директорию:

tar -xvf архив.tar

Процесс создания или распаковки тяжелых архивов может завершаться принудительно в связи с установленными ограничениями на использование процессами процессоров сервера.

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

tar -cf - имя_директории| pv -L 2M > имя_архива.tar

Для удобства команда может быть расширена, чтобы отобразить в консоли счетчик времени, оставшегося до завершения процесса, и вывести уведомление (END) о его завершении (позволит проконтролировать, что процесс не прервался и был выполнен успешно).

tar -cf - имя_директории | pv -L 2M -cN tar -s $(du -sb имя_директории | grep -o '[0-9]*') > имя_архива.tar && echo "END"

Для распаковки большого архива .tar можно воспользоваться командой:

pv -L 2M имя_архива.tar | tar xfv - -C ./имя_директории_назначения

Аналогично для распаковки архивов .tar.gz:

pv -L 1M имя_архива.tar.gz | tar zxfv - -C ./имя_директории_назначения

Распаковка .tar.gz с уведомлением о завершении:

pv -L 1M имя_архива.tar.gz | tar zxfv - -C ./имя_директории_назначения && echo "END"

Распаковать архив .rar в текущую директорию:

unrar x архив.rar

Распаковать архив .zip в текущую директорию:

unzip архив.zip

Для распаковки тяжелых .zip-архивов:

pv -L 1M имя_архива.zip | unzip-stream имя_директории_назначения

Базы данных

Создание дампа базы данных:

mysqldump -u'база_данных' база_данных -p'пароль_базы_данных' > имя_дампа.sql

Импорт данных из дампа в базу данных:

mysql -u'база_данных' база_данных -p'пароль_базы_данных' < имя_дампа.sql

Проверка базы данных на наличие ошибок:

mysqlcheck -c -u'база_данных' база_данных -p'пароль_базы_данных'

Восстановление базы данных при наличии ошибок:

mysqlcheck -r -u'база_данных' база_данных -p'пароль_базы_данных'

Подробнее о восстановлении баз данных и решении возможных ошибок см. в статье Восстановление базы данных.

Подключение к серверу баз данных:

mysql -u имя_базы_данных -p

Нажмите Enter, после чего введите пароль базы.

Получение информации о параметрах MySQL:

SHOW VARIABLES LIKE 'параметр';
SHOW SESSION VARIABLES LIKE 'параметр';
 
# Например:
SHOW SESSION VARIABLES LIKE 'max_join_size';

Завершение работы процессов

Завершить текущие процессы можно командой killall. Например, для завершения процессов веб-сервера Apache: 

killall -9 apache2

Обратите внимание! После выполнения данной команды для перезапуска обработчиков Apache необходимо изменить версию обработчика php в разделе «Сайты».

Аналогично для других сервисов, например:

killall -9 vsftpd

Завершение процесса MySQL:

mysqladmin -u'база_данных' -p'пароль_базы_данных' kill id_запроса

Для просмотра процессов MySQL используйте:

mysqladmin -u'база_данных' -p'пароль_базы_данных' pr

Для завершения процессов MySQL можно также использовать утилиту pt-kill.

Дисковое пространство

Вывод информации о текущей дисковой квоте (в квоту не включается информация по базам данных):

quota -s

Вывести размер файлов и директорий в текущем каталоге:

du -sch *

Анализ дискового пространства аккаунта (сканирует корневой каталог):

ncdu

Просканировать файлы конкретную директорию:

ncdu имя_директории

Подробнее об использовании утилиты ncdu смотрите в статье Анализ дискового пространства.

Другие вспомогательные команды

Вывод истории команд:

history

Очистить экран (сочетание клавиш Ctrl-L):

clear

Закрыть подключение по SSH (сочетание клавиш Ctrl-D):

exit

Сочетания клавиш

  • Ctrl-C — прервать выполнение текущей команды.
  • Ctrl-Shift-C — копировать выделенный фрагмент (в интерфейсе PuTTY копирование осуществляется простым выделением).
  • Ctrl-Shift-V — вставить (в интерфейсе PuTTY вставка осуществляется нажатием на правую кнопку мыши).