Шпаргалка по SSH

Майор

Администратор
Проверенный ++
Регистрация
04.09.14
Сообщения
2.952
Реакции
2.028
Баллы
113
Довольно часто приходится работать через консоль, поэтому здесь собраны основные команды, которые приходится применять чаще всего. Раньше в браузере была куча закладок, на страницы сторонних сайтов, с решением той или иной задачи. Я решил, что лучше все собрать в одном месте.

Архивы
Создать архив .tar/.tar.gz

tar -cvf file.tar /full/path — создать .tar (без сжатия)

tar -czvf file.tar.gz /full/path — создать .tar.gz (архив GZip)

Распаковать архив .tar/.tar.gz

tar -xvf file.tar — распаковать обычный .tar (без сжатия)

tar -xzvf file.tar.gz — распаковать .tar.gz (запакованны GZip-ом)

Распаковать архив .gz (GZip, без TAR)

gunzip file.gz — распаковать обычный .gz (GZip, без TAR. Распаковываемый архив должен иметь права на исполнение: chmod +x file.gz)


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

Код:
mysql -u [I]db_user[/I] -p -h [I]localhost[/I] [I]db_name[/I] < dump.sql

Импорт дампа базы данных, упакованных в gzip (*.sql.gz)

Код:
gunzip < dump.sql.gz | mysql -u [I]db_user[/I] -p [I]db_name
[/I]

Экспорт базы данных (создание дампа)

Код:
mysqldump -u [I]db_user[/I] -p -h [I]localhost db_name[/I] > dump.sql

Создание архива GZip с дампом БД

Код:
mysqldump -u [I]db_user[/I] -p -h [I]localhost db_name[/I] | gzip > dump.tar.gz

Создание дампа нескольких баз данных одновременно

Код:
mysqldump -u[I] db_user [/I]-p -h [I][I]localhost[/I][/I] -B[I] db_name1 [I]db_name[/I]2 [I]db_name[/I]3[/I] > databases.sql

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

Код:
mysqldump -u[I] db_user [/I]-p -h [I][I]localhost[/I][/I] -A > all-databases.sql

Сохранить только структуру БД

Код:
mysqldump —no-data -u[I] db_user [/I]-p -h [I][I]localhost[/I] db_name[/I] > schema.sql

Создание дампа только одной или нескольких таблиц БД

Код:
mysqldump -u[I] db_user [/I]-p -h [I][I]localhost[/I] db_name[I] tbl_name[/I]1[I] tbl_name2[I] tbl_name3[/I][/I][/I] > dump.sql

Дополнительные атрибуты (уменьшают размер дампа и повышают скорость работы)

Код:
mysqldump -Q -c -e -u[I] db_user [/I]-p -h [I][I]localhost[/I] db_name[/I] > /path/to/file/dump.sql

-Q — оборачивает имена обратными кавычками;

-c — делает полную вставку, включая имена колонок;

-e — делает расширенную вставку.


Файлы/директории
Узнать абсолютный путь до текущего каталога

Код:
pwd

Удалить папку со всем ее содержимым

Код:
rm -R /path/to/dir

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

Код:
ln -s  /etc/apache2/sites-available/site.com.conf /etc/apache2/sites-enabled/site.com.conf

Подсчитать количество файлов в текущем каталоге (включая вложенные)

Код:
find . -type f | wc -l

Подсчитать занимаемый размер каталога

Код:
du -sh /var

Вывести на экран количество файлов в поддиректориях текущего каталога

Код:
for D in `ls -Fl | grep / | awk ‘{print $9}’` ; do echo $D `find -L $D -type f -print | wc -l` ; done

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

Код:
find /home/user -type f -mtime +N -exec rm {} \;

Узнать информацию об использовании inodes (файловых дескрипторов):

Код:
df -i

Создать патч

Код:
diff -uN file.orig file.new > file.patch

Наложить патч

Код:
patch file.orig < file.patch

Найти определенные файлы и скопировать их с сохранением иерархии

Код:
find . -name «ru.po» -exec cp —parents «{}» /destination/dir/ «;»



Прочее
Вывести последние 10 строк из лог-файла, с автообновлением в реальном времени

Код:
tail -n10 -f /var/log/sites/your-site.ru.error.log

(путь до файлов с логами Apache у вас скорее всего будет другим)

Узнать информацию о процессоре

Код:
cat /proc/cpuinfo

или

Код:
lscpu

Показать ТОП10 медленных запросов MySQL (сортировка по времени исполнения time):

Код:
mysqldumpslow -s t -t 10 /var/log/mysql-slow.log

Показать ТОП10 запросов MySQL, в который не используются индексы (сортировка по кол-ву вызовов count):

Код:
mysqldumpslow -s c -t 10 /var/log/mysql-slow.log

Установить корректно конвертер шрифтов (Debian):
Код:
apt-get install libssl-dev build-essential zlibc zlib-bin libidn11-dev libidn11
wget http://people.mozilla.com/~jkew/woff/woff-code-latest.zip
unzip woff-code-latest.zip -d sfnt2woff && cd sfnt2woff && make && mv sfnt2woff /usr/local/bin/
 

Майор

Администратор
Проверенный ++
Регистрация
04.09.14
Сообщения
2.952
Реакции
2.028
Баллы
113
Распаковать архив zip
Код:
# unzip archive.zip - распаковать архив в текущую директорию
# unzip archive.zip -d /home/ - распаковка содержимого архива в директорию /home/

Как распаковать отдельный файл архива?
Код:
# unzip archive.zip file-name.log - распаковка файла file-name.log из архива в текущею директорию

Как посмотреть содержание архива zip без распаковки?

Код:
# unzip -l archive.zip – просмотр содержимого архива zip
 

boberjik

Новичек
Регистрация
27.10.14
Сообщения
2
Реакции
1
Баллы
3
pwd - получить имя текущей папки, где вы находитесь.
cd - изменить текущую директорию

Например, Вы находитесь в директории /home, а Вам нужно попасть в /usr/sbin. Для этого Вам нужно просто набрать команду:

cd /usr/sbin

Вот что при этом Вы увидите на экране:

vvs01% cd /usr/sbin
vvs01%

ls - вывести информацию о файлах или папках

При этом список может быть довольно большой.

Поэтому существуют ключи для этой команды, вот некоторые из них:
-a - вывести все файлы (даже те, имена которых начинаются с точки);
-x - вывод в 4 колонки;
-t - имена файлов сортируются не по алфавиту, а по времени последнего изменения (сначала идут самые свежие, только что измененные файлы);
-R - рекурсивно пройти по всем подкаталогам
-CF - оглавление каталога в несколько столбиков
-al - оглавление в полном формате

Эти ключи нужно подставлять сразу после команды ls.

Вот еще несколько команд:

cat -- слить или вывести файлы-аргументы на стандартный вывод
cp -- копировать файлы
mv -- переместить (переименовать) файлы
ln -- создать ссылку на файл

rm -- удалить файлы

Формат команды:

rm [-fri] файл ...
-i - просить подтверждения на каждое удаление
-r - рекурсивно удалить вместе с подкаталогами
-f - не просить подтверждения, а сразу удалить

rmdir - удалить директорию
mkdir - создать директорию
echo - вывести аргументы командной строки на стандартный вывод

ps - узнать номера выполняемых процессов, т.е. какие программы выполняются.

Формат команды:

ps - запущенные только с этого терминала
ps -e - все
ps -f - в "полном" формате

kill - "убить" выполняемый процес по его номеру
man - выдать справку об использовании и ключах команды

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

Для этого существует механизм, называемый cron.

Для каждого пользователя создается конфигурационный файл, куда записывается расписание запуска программ. Данный конфигурационный файл каждую минуту просматривается cron'ом и запускаются те программы, время запуска которых подошло. Редактируется конфигурационный файл с помощью программы crontab.

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

crontab -e : войти в режим редактирования
crontab -l : вывести все задания крона
crontab -r : удалить все задания

Команда crontab file заменят текущие настройки cron на те, которые содержатся в файле 'file'. Для этого вам нужно закачать сначала на сервер этот самый файл (например, через ftp), а затем в команде указать полный путь к нему. Пути для вашего сайта можно узнать у своего хостинг-провайдера, он их обычно указывает в инструкциях. В результате, если вы закачали файл raspisanie.txt в папку /pupkin/public_html/mypapka/raspisanie.txt, то команда будет выглядеть так:

crontab /pupkin/public_html/mypapka/raspisanie.txt

Когда вы задаете команду "вывести все задания крона", вы увидите нечто вида:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=pupkin
HOME=/home/pupkin
# run-parts
01 * * * * command
02 4 * * * command

Первые четыре строки просто обозначают настройку технических параметров, и на них не стоит обращать внимание (как впрочем и менять тоже).

А вот на следующие строки внимание уже стоит обратить... Формат этих строк выглядит следующим образом:
Нужная минута часа для запуска (0-59)
Нужный час дня для запуска (0-23)
Нужный день месяца (0-30)
Нужный месяц года (1-12)
Нужный день недели (0-6)
Выполнимая команда.

Значок * обозначает слово каждый (день, год, месяц, час).

Например, строка 01 * * * * command будет обозначать запуск программы каждый час в одну минуту.

А строка 02 4 * * * command означает запуск программы каждый день в 4 часа утра в две минуты.

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

01 * * * * command
02 4 * * * command

где command - ваша команда (запуска определенного скрипта или еще что-то), а затем просто командой "crontab file" перенести все задания из файла в крон, либо вручную все ввести в крон. Первое, на мой взгляд, удобнее.

Вот и все премудрости крона
 

stream

Support
Команда форума
Регистрация
09.09.14
Сообщения
1.014
Реакции
674
Баллы
113
эээ, не ребята.. вы начали с середины, так сказать...вот я болван по серверным движениям.. и тут мне сразу в лоб: pwd
..я сразу напик шарахнулся, анунапик, куда, что, счас как pwdкну, и полрунета напик((((( Пожалуйста, напишите как для олигофренов:
1 - Нажал то-то и то-то.
2. Зашёл туда-то и туда-то, три креста наложивши.
3. С православными админскими песнопениями начинаем обряд запуска процедуры zip-извлечения стопиццот мегабайт видеозаписи с порнухой "здоровенныйнегрчототамделаетсдевочкойкотораяуписяласьоргазмичнотривагона".
4.Гремят бубны, сервер покорно выполняет все команды Админа!!!
З.Ы: иже есьмь нарушимши каноны ХостЛайта, да не буду проклят и забанен!!!((( ибо истинно верую в благополучие и процветание ХостЛайта вовеки веков, и гудение серверных хардов, и шум чатов voc++ на дивном хостинге Хостлайта!!!
 

Майор

Администратор
Проверенный ++
Регистрация
04.09.14
Сообщения
2.952
Реакции
2.028
Баллы
113
так что тут непонятного? У каждой команды есть описание. Например, в консоли вводишь команду pwd и получаешь имя той папки, в которой находишься
 

redflag

Юзверь
Проверенный +
Регистрация
22.05.15
Сообщения
8
Реакции
3
Баллы
3
Возраст
32
Дополню кстати, в своё время парился над одной проблемкой.
Вот такое удаление медленно по сравнению с:
rm /var/www/user/data/mod-tmp/ -rf
Был случай, когда в mod-tmp скопилось несколько сотен тысяч файлов, так вот параметр -rf снёс всё за пару мин :)
 
Сверху Снизу