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

Майор

Администратор
Команда форума
Регистрация
04.09.14
Сообщения
2.848
Реакции
1.952
Баллы
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.848
Реакции
1.952
Баллы
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
Сообщения
960
Реакции
629
Баллы
93
эээ, не ребята.. вы начали с середины, так сказать...вот я болван по серверным движениям.. и тут мне сразу в лоб: pwd
..я сразу напик шарахнулся, анунапик, куда, что, счас как pwdкну, и полрунета напик((((( Пожалуйста, напишите как для олигофренов:
1 - Нажал то-то и то-то.
2. Зашёл туда-то и туда-то, три креста наложивши.
3. С православными админскими песнопениями начинаем обряд запуска процедуры zip-извлечения стопиццот мегабайт видеозаписи с порнухой "здоровенныйнегрчототамделаетсдевочкойкотораяуписяласьоргазмичнотривагона".
4.Гремят бубны, сервер покорно выполняет все команды Админа!!!
З.Ы: иже есьмь нарушимши каноны ХостЛайта, да не буду проклят и забанен!!!((( ибо истинно верую в благополучие и процветание ХостЛайта вовеки веков, и гудение серверных хардов, и шум чатов voc++ на дивном хостинге Хостлайта!!!
 

Майор

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

redflag

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