Общие linux команды

Показать сетевое имя компьютера:

hostname

Узнать версию дистрибутива Linux:

1
/usr/bin/lsb_release -ircd

Вывести сообщение на все терминалы пользователей:

1
wall Hello

Описание иерархии файловой системы Linux:

1
man hier

Очищение экрана терминала:

clear

Сбросить настройки терминала и очистить его:

reset

Вывести текущую дату и время:

date

Консольный календарь:

cal

Показать текущее время и работу системы без перезагрузки и выключения:

uptime

Узнать информацию о домене:

whois

Указать для работы прокси сервер:

1
export http_proxy=http://your.proxy:port

Скачать файл из интернета в текущую папку:

wget –c http://wikiadmin.net/photo.jpg

Создание и настройка Dial-Up соединения для выхода в Интернет по модему:

pppconfig

Создание и настройка выхода в Интернет через ADSL-модем:

pppoeconf

Выполнить последнюю команду:

!!

Показать последние 10 набранных команд:

1
history | `tail -10`

Завершить сеанс текущего пользователя:

exit

Изменить пароль пользователя:

passwd

Выключить питание в 20:00 :

shutdown -h 20:00

Выключить питание через 10 мин :

1
shutdown  -h +10

Выключение питания:

poweroff

Перезагрузка системы:

reboot

Cтатистика перезагрузок:

last reboot

Настройка Wine:

winecfg

Генерим пароль на 20 символов

1
cat /dev/urandom | tr -d -c 'a-zA-Z0-9' | fold -w 20 | head -1

Пользователи и группы

Команды Linux необходимые для работы с пользователями и группами пользователей.

Показывает сводную информацию по пользователю (логин, UID, GID, группы):

id USERNAME

Показать список последних 10 зарегистрированных пользователей:

last –n 10

Показывает имя текущего пользователя и время входа:

who

Добавить нового пользователя USER:

useradd USER

Добавить группу GROUP:

groupadd GRUOP

Добавить пользователя USER в группу GROUP:

usermod -a -G GROUP USER

Добавить пользователя USER в группу GROUP (SuSE):

groupmod -A USER GROUP

Удаление пользователя USER:

userdel USER

Удаление группы GROUP:

groupdel GROUP

Команды Linux для работы с файлами и директориями

Просмотр содержимого текущей дериктории:

ls

Просмотр содержимого дериктории, в том числе и скрытые файлы:

ls -lah

Переход в директорию /var:

cd /var

Создание пустого файла /var/test:

touch /var/test

Вывести на экран содержимое файла /home/test:

cat /home/test

Вывести на экран конец файла. Удобно при работе с логами и большими файлами:

tail /var/log/messages

Редактирование файла /home/test:

nano /home/primer2

Добавить текст в конец файла:

1
echo end >>  /home/test

Копирует test в test2:

cp /home/test /home/test2

Cоздать символическую ссылку /home/new к файлу /home/test:

ln -s /home/test /home/new

Создание директории с именем user:

mkdir /home/user

Удаление директории с именем user:

rmdir /home/user

Удаление директории с вложенными фалами:

rm -rf /home/user

Копирование директорий:

cp -la /dir1 /dir2

Переименование директории:

mv /dir1 /dir2

Узнать объём директории:

du -sh /home/user

Поиск всех файлов с именем test

find / -name test

Вернуться в домашнюю директорию:

cd

Права доступа

Доступ для всех к дериктори /home с правами чтение/запись/исполнение:

chmod 0777 /home/

Рекурсивное изменение прав доступа к директории /home и всехе на чтение/запись/исполнение для всех групп. Все вложенные директории и файлы будут иметь права 0777:

chmod -R 0777 /home/

Изменение владельца и группы только для файла /home/test.txt:

chown username:groupname /home/test.txt

Изменение владельца для всего содержимого директории /home:

chown -R username/home/

Архивирование файлов и директорий

Создать tar-архив с именем arch.tar содержащий /home/test.txt:

tar -cf arch.tar /home/test.txt

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

tar -xf arch.tar

Cоздание архива с именем arch.tar.gz использую сжатие gzip:

tar -czf arch.tar.gz /home/test.txt

Распаковать tar-архив использующий сжатие gzip:

tar -xvzf arch.tar.gz

Cоздать tar-архив с именем arch.tar.bz использую сжатие bzip2:

tar -cjf arch.tar.bz2 /home/test.txt

Распаковать tar-архив использующий сжатие bzip2:

tar -xvjf arch.tar.bz

Cоздать tar-архив с именем arch.tar.bz использую сжатие pbzip2 (необходимо отдельно установить это архиватор):

tar -cf arch.tar.bz2 /home/test.txt –use-compress-program pbzip2

Как обнулить файл по крону

Обнулить файл можно просто командой

1
:> file

В cron это можно записать для лога Postfix так:

1
0 * * * * :> /var/log/maillog

Обнуляться будет каждый час.

Как убрать все комментарии из конфигурационного файла

Вы можете вывести всё из конфига без решётки, просто выполнив это

1
cat /etc/config.conf | grep -v -E "#|^$"

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

Команды Linux: установка программ

Просмотр установленных пакетов. Показать список установленных пакетов в Gentoo:

equery list

Показать список установленных пакетов rpm в системе:

rpm -qa

Показать список установленных пакетов DEB в системе:

dpkg -l |more

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

rpm дистрибутивы

Установка RPM пакета pkgname.rpm:

rpm -ihv pkgname.rpm

Удаление RPM пакета pkgname:

rpm -e pkgname

Создание rpm пакетов из tar.gz

1
2
rpmbuild -ta pack-XXX.tar.gz 
rpm -i /usr/src/redhat/RPMS/[arch]/pack-XXX.[arch].rpm

DEB дистрибутивы

Установка всех пакетов в директории:

dpkg -i *.rpm

Обновление списка доступных пакетов из Internet:

apt-get update

Обновление доступной версии установленных пакетов в системе:

apt-get upgrade

Установка DEB пакета pkgname:

apt-get install pkgname

Удаление DEB пакета pkgname:

apt-get remove pkgname

Установка всех пакетов в директории:

dpkg -i *.deb

Поиск пакета pkgname:

dpkg -S pkgname

Анализ работы системы

Информация в реальном времени о загрузки системы (процессор, память и пр.):

top

Псевдографически оформленная команда top:

htop

Просмотр информации о ходе загрузки системы:

dmesg

Посмотреть расширенную статистику потребления ресурсов системы в процентах ( в некоторых дистрибутивов необходима установка пакета sysstat

mpstat 1

Посмотреть информацию по использованию виртуальной памяти:

vmstat 2

Посмотреть статистику прерываний по устройствам:

iostat 2

Очистить кеш памяти. Зачастую этого делать не нужно, система сама это прекрасно выполняет. Но если сильно хочется…

1
2
sync
echo "3" > /proc/sys/vm/drop_caches

Узнать значение swappiness, который управляет интенсивностью перемещения данных из ОЗУ в swap-память.

cat /proc/sys/vm/swappiness

Если у вас достаточно оперативной памяти и вы хотите чтобы swap-память использовалась только в случае крайней необходимости, то можно установить swappiness в 10. Для текущего сеанса командой:

sudo sysctl vm.swappiness=10

Но после перезагрузки параметр вновь будет установлен в 60. Чтобы установить новое значение в качестве постоянного, нужно открыть файл /etc/sysctl.conf, найти строку vm.swappiness=60 и зменить значение. Если данной строки не будет значит нужно дописать ее в конце файла:

vm.swappiness=10

анализ сетевой активности

Анализ логов веб-сервера. Список самых частых IP

1
tail -f /var/log/nginx/nginx.access.log | cut -d ' ' -f 1 | logtop

или

1
grep "&key=" /var/log/nginx/nginx.access.log | cut -d ' ' -f 1 | sort | uniq -c | sort -n | tail -n 30

На какой домен чаще всего обращаются:

1
tcpdump -npi eth0 port domain

Сколько запросов с какой IP

1
netstat -ntu | awk '{print $5}'| cut -d: -f1 | sort | uniq -c | sort -nr | more

Загруженность канала

1
ftop -i eth0 -B

информация об устройствах

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

lsdev

Показать полную информацию о модели процессора (частота, поддерживаемые инструкции и т.д.):

cat /proc/cpuinfo

Показать информацию о прерываниях:

1
watch -n1 ‘cat /proc/interrupts’

Информация о используемой и свободной ОЗУ и Swap-файле (-m указывает, что отображать нужно в Мб):

free -m

Показать список всех устройств и их параметров:

lshal

Показать обнаруженные PCI-устройства:

lspci -tv

Показать обнаруженные USB-устройства:

lsusb -tv

Показать информацию о системе взятую из BIOS компьютера (процессор, память, слоты и пр.):

dmidecode

Программа для получения информации о начинки компьютера:

lshw

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

Информация о всех подключенных жестких и сменных дисках:

fdisk -l

Полная информация о IDE/ATA жестких дисках:

hdparm -I /dev/sda

Выводит SMART-информацию о разделе жесткого диска /dev/sda1 (необходима установка пакета smartmontools)

smartctl -a /dev/sda1

Производительность жесткого диска

Показывает производительность жесткого диска:

hdparm -tT /dev/sda

Монтирование разделов жесткого диска

Узнать полную информацию о примонтированных устройсвах:

mount

Посмотреть только примонтированные разделы жесткого диска:

cat /proc/partitions

Узнать свободное место на разделах:

df -h

Примонтировать раздел /dev/sda1 к точке монтирования /mnt:

mount /dev/sda1 /mnt

Примонтировать большинство CD-ROM`ов:

mount -t auto /dev/cdrom /mnt/cdrom

Примонтировать IDE CD-ROM:

mount /dev/hdc -t iso9660 -r /cdrom

Примонтировать SCSI CD-ROM:

mount /dev/scd0 -t iso9660 -r /cdrom

Монтирование ISO-образов:

mount -t iso9660 -o loop /home/disc.iso /mnt/cdrom

Монтирование FreeBSD разделов в Linux:

mount -t ufs -o ufstype=ufs2,ro /dev/sda2 /mnt

Монтирование сетевых ресурсов (SMB):

mount -t smbfs -o username=user,password=123 //net/docs

Отмонтирует раздел от точки монтирования /mnt:

umount /mnt

Невозможно отмонтировать устройство. Возникает сообщение device is busy. Для этого можно использовать ключ -l

umount -l /mnt

Стоит учесть, что это грозит потерей данных. Для начала стоит всё-таки поискать, какой процесс занял устройство и удалить его. Выполните:

fuser -m /mnt

Получим его PID. Завершите процесс и уже безопасно отключите устройство.

Просмотр действий с файлами

Данная команда позволит узнать, к какому файлу в домашней папке user прошло обращение:

inotifywait -mr -e open /home/user

То же самое, но с modify расскажет о тех файлах, которые были изменены

inotifywait -mr -e modify /home/user

Конфигурация сети

Показать параметры всех сетевых карт:

ifconfig –a или ip a

Показать параметры сетевого интерфейса eth0:

ifconfig eth0

Задать основной IP адрес сетевому интерфейсу eth0:

ifconfig eth0 192.168.0.1 netmask 255.255.255.0

Узнать состояние сетевого интерфейса eth0 (для некоторых дистрибутивов требуется установка пакета ethtool). Команда ethtool применяется только для проводных подключений, не работает с беспроводными интерфейсами:

ethtool eth0

Принудительно задать скорость сетевому интерфейсу 100Mbit и режим Full duplex и отключить автоматическое определение:

ethtool -s eth0 speed 100 duplex full autoneg off

Задать дополнительный IP адрес сетевому интерфейсу eth0:

ifconfig eth0:0 192.168.0.1 netmask 255.255.255.0

Запустить сетевой интерфейс eth0:

ifconfig eth0 up

Отключить сетевой интерфейс eth0:

ifconfig eth0 down

Смена MAC адреса:

ifconfig eth0 hw ether 00:01:02:03:04:05

Перезагрузка DHCP сервера:

/etc/init.d/dhcpd restart

Проверка сетевого соединения. Пингуется IP адрес 192.168.0.1:

ping 192.168.0.1

Маршрутизация

Выводит на экран таблицу маршрутизации:

route -n

Выводит на экран таблицу маршрутизации:

netstat -rn

Управление портами (брандмауэр)

  • Показывает список всех открытых портов:

netstat -an | grep LISTEN

Показать список всех открытых портов в сеть Internet:

lsof -i

Узнать все активные соединения с интернетом:

netstat -tup

Посмотреть все открытые сокеты

socklist

Посмотреть список приложений, которые открывают порты:

netstat -anp -udp -tcp | grep LISTEN

Узнать статус IPTABLES:

iptables -Lnv

Открыть доступ ко всем портам:

1
2
3
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

Удалить все цепочки:

iptables -X

Управление NAT

Установить NAT на интерфейсе eth0:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Перенаправление порта 22022, который использется для ssh:

iptables -t nat -A PREROUTING -p tcp -d 99.99.99.99 -dport 22022 -j DNAT -to 192.168.0.2:22

Перенаправление диапазона портов 900-1000:

1
iptables -t nat -A PREROUTING -p tcp -d 99.99.99.99 -dport 900:1000 -j DNAT  -to 192.168.0.2:900-1000

Проверка статуса NAT

iptables -L -t nat

Проверка доменных имён

Проверка обратной зоны

dig -x IP

Проверка записей (на примере mx)

dig aleksdem.com mx

Проверка данных с определённого DNS

dig aleksdem.com @ns1.example.com

проверка порта UDP

проверяем, открыт ли порт 5060 на удалённом хосте 127.0.0.1 :)

nc -uv 127.0.0.1 5060

Отправка письма с вложением

Отправка письма с вложением из консоли:

1
mutt -s "SUBJ" -a /tmp/test.txt user@wikiadmin.net < home/user/MAIL

Просим компьютер сигналить, когда какой-либо из серверов недоступен

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

1
while true; do ping -c1W1w1 aleksdem.com 2>/dev/null || { echo Server down; beep; } ; sleep 1; done

Внимание, команды beep по умолчанию в системе нет, надо ставить отдельно

apt-get install beep

создание и запись ISO образов

Посмотреть все доступные CD-ROM:

cdrecord -scanbus

Создание ISO образов с диска CD-ROM:

dd if=/dev/hdb of=/tmp/mycd.iso bs=2048 conv=notrunc

работа с процессами

Все запущенные процессы имеют уникальные номера – PID. Показать все загруженные процессы:

ps axjf

ps auxw (like FreeBSD)

Показать PID определенного процесса – sshd:

pgrep -l sshd

Показать PID процесса использующий порт 22:

fuser -va 22/tcp

Показывает PID процесса имеющего доступ к /home:

fuser -va /home

Показывает список процессы, которые используют /home:

lsof /home

Послать процессу с PID-ом 7777 сигнал TERM – завершить процесс:

killall TERM 7777

Послать процессу x.sh сигнал TERM – завершить процесс:

killall term x.sh

Убить все процессы имеющие x.sh

killall x.sh

Послать процессу с именем httpd сигнал HUP – остановить процесс:

killall HUP httpd

Убить все процессы имеющие доступ к /home:

fuser -k -TERM -m /home

Важные сигналы посылаемые процессам:

1
2
3
4
5
1 – HUP остановить процесс
2 – INT прервать процесс
3 – QUIT выйти
9 – KILL «убить» процесс
15 – TERM завершить процесс

Runlevels

После загрузки ядра Linux начинают загружаться различные демоны и программы, такие как NetworkManager, Evolution и т. д., результат которых мы видим у себя после загрузки на рабочем столе. Загрузка каждой службы осуществляется скриптом. Все скрипты лежат в /etc/init.d. Runlevels – это целое число, которое определяет «уровень загрузки».

Уровни загрузки бывают:

1
2
3
4
5
6
7
Runlevels=0 Выключение компьютера
Runlevels=1 режим Single-User
Runlevels=2 Текстовый режим без поддержки сети
Runlevels=3 Текстовый режим с поддержкой сети
Runlevels=4
Runlevels=5 Графический режим
Runlevels=6 Перезагрузка компьютера.

То есть скрипты, которые должны загружаться только в текстовом режиме с поддержкой сети, имеют Runlevels равный 3. Более простой вариант настройки:

Очень удобная настройка Runlevels (необходима установка пакета sysv-rc-conf):

sysv-rc-conf

Показать список всех скриптов с соответствующими им Runlevels:

1
2
chkconfig -list
rc-status -a (gentoo)

Показать разрешенные Runlevels только отдельного скрипта, в нашем случае sshd:

chkconfig -list sshd

Выставление скрипту sshd значений Runlevels по-умолчанию:

1
2
update-rc.d sshd defaults  #Debian
rc-update add sshd default

Добавление скрипту udev Runlevels 3 и 5:

chkconfig udev -level 35 on

Изменить параметры для скрипта sshd (для Debian-подобных дистрибутивов):

update-rc.d sshd start 20 2 3 4 5 . stop 20 0 1 6

Отключение у sshd всех Runlevels:

chkconfig sshd off

Отключение у sshd всех Runlevel (для Debian-подобных дистрибутивов):

update-rc.d -f udev remove

Работа с ядром и модулями

Узнать текущую версию ядра Linux:

uname -a

Работа с модулями ядра. Список всех модулей загруженных в ядро:

lsmod

Загрузка модуля на примере isdn:

modprobe isdn

Создание сжатого образа ядра системы:

make

Компиляция модуля:

make modules

Установка модуля:

make modules_install

Установка в ядро системы:

make install

Конвертирование различной информации

Выводит список всех доступных кодировок:

iconv -l

Смена кодировки. Был файл cp1251.txt с кодировкой cp1251, а в итоге получился файл utf8.txt с кодировкой utf8:

1
iconv -f cp1251 -t UTF-8 -o file_cp1251.txt > file_utf8.txt

Конвертирование PDF в JPEG

Конвертируется name.pdf в постраничные JPEG изображения (в некоторых дистрибутивах необходимо установить пакет imagemagick):

1
convert name.pdf name-%03d.jpg

Конвертируются JPEG изображения в PDF (в некоторых дистрибутивах необходимо установить пакет imagemagick):

convert name.jpeg name.pdf

Конвертирование видео

1
mencoder -o videoout.avi -oac mp3lame -ovc lavc -srate 11025 -channels 1 -af-adv force=1 -lameopts preset=medium -lavcopts vcodec=msmpeg4v2:vbitrate=600 -mc 0 vidoein.AVI

Конвертирование аудио

Копирование треков с AudioCD в текущую директорию wav-файлами:

cdparanoia -B

Конвертирование wav-файлов в mp3 с качеством 256 kb/s:

lame -b 256 in.wav out.mp3

Конвертирование wav-файлов в Ogg Vorbis с качеством 256 kb/s:

oggenc in.wav -b 256 out.ogg

Печать на принтере

Выбор принтера по-умолчанию на примере Canon LBP-2900

export PRINTER=lbp2900

Распечатать на принтере Canon LBP-2900 две копии файла name.txt:

lpr #2 name.txt

Удаление всех задач с принтера по-умолчанию:

lprm -