Основные команды 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 вставка осуществляется нажатием на правую кнопку мыши).