Команды по SSH

LINUX Команды

man ИмяКоманды — помощь по работе с командой

Пример: man find — выведет информацию о команде find

Выход из мануала через ssh-клиент — клавиша «Pause/Break»


Команды с файлами

<strong>ls</strong>

— список файлов и каталогов

<strong>ls</strong> <span class="re5">-al</span>

— форматированный список со скрытыми каталогами и файлами

<strong>ls</strong> <span class="re5">-lia</span>

— вывод списка всех файлов и папок в текущей директории отсортированных по алфавиту с отображением размеров директорий и файлов.

<strong>cd</strong> <strong>dirname</strong>

— сменить директорию на dirname (cd — change directory)

<strong>cd</strong> ~

— смена директории на домашний каталог, а также команда без «~» (тильды) делает то же самое в большинстве шелов

<strong>pwd</strong>

— показать текущий каталог

<strong>pwd</strong> ~

— показать каталог для текущего пользователя

<strong>mkdir</strong> <strong>dir</strong>

— создать каталог dir

<strong>rm</strong> <strong>file</strong>

— удалить file

<strong>rm</strong> <span class="re5">-r</span> <strong>dir</strong>

— удалить каталог dir

<strong>rm</strong> <span class="re5">-f</span> <strong>file</strong>

— удалить форсированно file

<strong>rm</strong> <span class="re5">-rf</span> <strong>dir</strong>

— удалить форсированно каталог dir * (без вопросов удалит каталог и все что в нем хранится)

cp file1 file2 — скопировать file1 в file2

cp -r dir1 dir2 — скопировать dir1 в dir2; так же создаст каталог dir2, если его не существует

cp -rp dir1 dir2 — скопировать dir1 в dir2; так же создаст каталог dir2, если его не существует и оставит все прежние права старой папки

mv file1 file2 — переименовать или переместить file1 в file2. если file2 существующий каталог — переместить file1 в каталог file2

ln -s file link — создать символическую ссылку link к файлу file (Create a symbolic link to file)
Примеры:

<strong>ln</strong> <span class="re5">-s</span> <strong>/</strong>path<strong>/</strong>to<strong>/</strong><strong>file</strong> <strong>/</strong>path<strong>/</strong>to<strong>/</strong>symlink
<strong>ln</strong> <span class="re5">-s</span> EXISTING_FILE SYMLINK_FILE

touch file — создать file

cat > file — направить стандартный ввод в file

more file — вывести содержимое file

head file — вывести первые 10 строк file

tail file — вывести последние 10 строк file

tail -f file — вывести содержимое file по мере роста, начинает с последних 10 строк

view file — вывести файл на экран

Локальная/удаленная синхронизация файлов (rsync)
Копировать (синхронизировать) все содержимое из папки folder1 в папку cpfolder2, опция —ignore-existing предлагает игнорировать уже скопированные файлы. Опция —deleteбудет удалять файлы в папке назначения cpfolder2 если вдруг добавились/изменились какие-то файлы в ней или в папке откуда копируются файлы. Таким образом мы делаем зеркало из папки folder1 в папке cpfolder2. Ставим задачу в крон и получаем зеркало из папки folder1 в папке cpfolder2

rsync <span class="re5">-r</span> <span class="re5">--ignore-existing</span> <span class="re5">--delete</span> <strong>/</strong>folder1<strong>/</strong> <strong>/</strong>cpfolder2

Резервное удаленное копирование данных между двумя шеллами (ssh) rsync

rsync <span class="re5">-avz</span> <span class="re5">-e</span> <span class="st0">"ssh -p54332"</span> .<strong>/</strong>Dropbox root<strong>@</strong>remoteserver.com:<strong>/</strong>root<strong>/</strong>backup<strong>/</strong>

— Копирует локальную папку Dropbox со всем её содержимым на удаленный сервер remoteserver.com на котором ssh висит на 54332 порту в удаленную папку /root/backup.

rsync <span class="re5">-avz</span> <span class="re5">-e</span> <span class="st0">"ssh -p54332"</span> root<strong>@</strong>remoteserver.com:<strong>/</strong>var<strong>/</strong>lib <strong>/</strong>root<strong>/</strong>temp

— Копирует с удаленного сервера remoteserver.com (порт 54332) папку /var/lib на локальный компьютер в папку /root/temp

Опции rsync:
-a режим архива, при использовании заменяет несколько ключей (-rlptgoD)
-r рекурсивно. Копирует все файлы, включая вложенные каталоги
-l при копировании сохраняет символические ссылки
-p сохраняет права на файлы
-t сохраняет время изменения файлов
-g сохраняет группу файлов
-o сохраняет владельца файлов (работает только из под root)
-D сохраняет файлы устройств и специальны файлы
-v показывает название файлов при копировании
-z сжатие файлов при копировании
-e ssh использовать при копировании ssh
—progress показывает прогресс выполнения копирования
—bwlimit=KBPS ограничивает скорость передачи файлов

Процессы

ps — вывести ваши текущие активные процессы

ps -aux — вывести все процессы (от рута)

top — показать все запущенные процессы

kill pid — убить процесс с id pid

killall proc — убить все процессы с именем proc

bg — список остановленных и фоновых задач; продолжить выполнение остановленной задачи в фоне

fg — выносит на передний план последние задачи

fg n — вынести задачу n на передний план

Процессы и сервисы

netstat -nlp — смотрим какие порты открыты

netstat -tulpn | grep :80 — смотрим что занимает 80 порт

fuser 7000/tcp — найти PID процессов открывших 7000-й tcp порт

ls -l /proc/3813/exe — ищем имя процесса ассоциированного с PID # 3813

ls -l /proc/3813/cwd — Найти текущий рабочий каталог процесса bittorrent или pid 3813

pwdx 3813 — тоже самое что и «ls -l /proc/3813/cwd»

ps aux | grep 3813 — узнать владельца процесса с PID 3813

lsof -i :80 — что висит на 80 порту

Права доступа на файлы

chown root /filename — смена владельца файла/директории /filename на root

chown root:group /filename смена владельца файла/директории /filename на root и смена группы на group

chown -hR root /filename смена владельца файла/директории /filename на root и всех находящихся в ней файлов на root

Дополнительные опции: man chown.

chmod user file — сменить права file на user, раздельно для пользователя, группы и для всех добавлением:

? 4 — чтение (r)

? 2 — запись (w)

? 1 — исполнение (x) Примеры:

chmod 777 — чтение, запись, исполнение для всех (потенциальная угроза безопасности)

chmod 755 — rwx для владельца, rx для группы и остальных.

chmod -R 755 ./folder — смена прав для файлов в директории и её поддиректориях

Дополнительные опции: man chmod.

SSH

ssh user@host — подключится к host как user

ssh -p port user@host — подключится к host на порт port как user

ssh-copy-id user@host — добавить ваш ключ на host для user чтобы включить логин без пароля и по ключам

Поиск

grep pattern files — искать pattern в files

grep -r pattern dir — искать рекурсивно pattern в dir

command | grep pattern — искать pattern в выводе command

locate file — найти все файлы с именем file

find | grep text — найти текст text во всех файлах текущей директории

find / -name vasy\* — найти файлы и папки с названием vasy*

grep -rl ‘что_ищем’ /путь — найти файлы в теле которых ‘что_ищем’

НАЙТИ файлы с именем files.php и заархивировать в archive.txz:

<strong>find</strong> <strong>/</strong>home<strong>/</strong>local<strong>/</strong>folder<strong>/</strong> <span class="re5">-name</span> <span class="st0">"files.php"</span> <strong>|</strong> <strong>tar</strong> cJfTP .<strong>/</strong>archive.txz -

Найти php.ini вы можете с помощью команд:

<strong>updatedb</strong>
<strong>locate</strong> php.ini

Системная информация

date — вывести текущую дату и время

cal — вывести календарь на текущий месяц

uptime — показать текущий аптайм

w — показать пользователей онлайн

whoami — имя, под которым вы залогинены

finger user — показать информацию о user

cat /proc/cpuinfo — информация ЦПУ

cat /proc/meminfo — информация о памяти

man command — показать мануал для command

df — показать инф. о использовании дисков

du — вывести «вес» текущего каталога

du -sh — cколько весит папка?

du -shc dirname/ — общий вес папки

du -shc dirname/* — общий вес папки и всех его подкаталогов первого уровня

free — использование памяти и swap

Информация о ядре Linux:

unamе <span class="re5">-a</span>

Узнать версию Linux Debian / Ubuntu:

lsb_release <span class="re5">-a</span>

Узнать версию Linux CentOS:

rpm <span class="re5">-qa</span> <strong>|</strong> <strong>grep</strong> centos-release

Узнать версию Linux Redhat:

rpm <span class="re5">-qa</span> <strong>|</strong> <strong>grep</strong> redhat-release

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

<strong>cat</strong> <strong>/</strong>etc<strong>/</strong>issue
<strong>cat</strong> <strong>/</strong>etc<strong>/*</strong>release<strong>*</strong>

whereis app — возможное расположение программы app

which app — какая app будет запущена по умолчанию

Архивация и распаковка

tar cf file.tar files — создать tar-архив с именем file.tar содержащий files
tar xf file.tar — распаковать file.tar
TAR GZ:
tar czf file.tar.gz files — создать архив tar с сжатием Gzip
tar xzf file.tar.gz — распаковать tar с Gzip
TAR BZ:
tar cjf file.tar.bz2 — создать архив tar с сжатием Bzip2
tar xjf file.tar.bz2 — распаковать tar с Bzip2

GZIP:
gzip file — сжать file и переименовать в file.gz
gzip -d file.gz — распаковать file.gz в file

ZIP:
сжать /dir в archive.zip:

<strong>zip</strong> <span class="re5">-r</span> archive.zip <strong>/</strong><strong>dir</strong>

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

<strong>unzip</strong> archive.zip

добавить в архив foo из папки folder только файлы с расширениями php, html, js, css:

<strong>zip</strong> <span class="re5">-r</span> foo folder <span class="re5">-i</span> <span class="st_h">'*.php'</span> <span class="st_h">'*.html'</span> <span class="st_h">'*.js'</span> <span class="st_h">'*.css'</span>

добавить в архив foo из папки folder только файлы с именем index.php:

<strong>zip</strong> <span class="re5">-r</span> foo folder <span class="re5">-i</span> <span class="st_h">'*index.php'</span>

7 ZIP:
win:
7z.exe a archive.7z -r c:\dir\with\files\*index.php — заархивировать все файлы с именем index.php из директории c:\dir\with\files\ и всех ее поддиректорий.

Сеть

ping host — пропинговать host и вывести результат

traceroute google.com — трассировка маршрута к серверу google.com

whois domain — получить информацию whois для domain

dig domain — получить DNS информацию domain

dig -x host — реверсивно искать host

wgеt file — скачать file

wgеt -c file — продолжить остановленную закачку

ifconfig — вывод сетевых интерфейсов и подключений

ifconfig -a — Отображение всех интерфейсов, включая отключенные

ifconfig eth0 down — выключаем интерфейс eth0

ifconfig eth0 up — поднимаем (включаем) интерфейс eth0
или
ifup eth0 — поднимаем (включаем) интерфейс eth0

Установка пакетов

Установка из исходников:

.<strong>/</strong>configure
<strong>make</strong>
<strong>make</strong> <strong>install</strong>

Установка собранных пакетов:
dpkg -i pkg.deb — установить пакет (Debian, Ubuntu)

rpm -Uvh pkg.rpm — установить пакет (RPM RedHatm CentOS)

Установка программ из репозиториев:

Debian / Ubuntu:
Обновить данные о доступных в репозиториях программах можно командой:
apt-get update — Обновить данные о доступных в репозиториях программах:

apt-get install apache2 — установить пакет «apache2» (Debian, Ubuntu)

RedHat, CentOS, Scientific Linux:
yum install httpd — Установить пакет «httpd»

Удаление пакетов:

Debian / Ubuntu:
apt-get remove apache2 — удалит ранее установленный пакет apache2

dpkg -l | grep exim4 — проверяем на наличие установленного пакета exim4 в системе, если существует — смотрим ниже

aptitude purge ~iexim4 — удаляем пакет exim4 изначально правильно (с чисткой остаточных конфигов), если до этого не пробовали его удалить по другому

aptitude purge ~cexim4 — удаляем пакет exim4 если он был некорректно удален ранее

aptitude purge ~c — Удалит все пакеты вместе с оставшимися конфигами (мусором)

Автоматизация работы

cron — выполнение заданной команды в определенное время

Клавиатурные сочетания

Ctrl+C — завершить текущую команду

Ctrl+Z — остановить текущую команду, продолжть с fg на переднем плане или bg в фоне

Ctrl+D — разлогиниться, тоже самое, что и exit

Ctrl+W — удалить одно слово в текущей строке

Ctrl+U — удалить строку

!! — повторить последнюю команду

exit — выход