Главная цель статьи — создать список основных команд Linux, что упростит как изучение, так и эксплуатацию этой операционной системы.
Все команды Linux разбиты на тематические подразделы с краткими описаниями. Список команд будет обновляться и дополняться.
1. Общие команды Linux
Здесь собраны Linux-команды, которым не нашлось место в других разделах.
# uname -a
# Показывается версия ядра Linux;
# lsb_release -a
# На экран выводится информация о версии ОС и основанных на ней дистрибутивах;
# clear
# Очищается экран терминала;
# cat /etc/SuSE-release
# На экран выводится информация о версии ОС SuSE;
# man hier
# Описывается иерархия файловой системы (для чего необходима каждая директория в Linux);
# wall Привет
# На терминалы других пользователей отправляется сообщение «Привет»;
# date
# Отображается текущая дата и время;
# cal -3
# Отображается в удобной форме предыдущий, текущий и следующий месяц;
# uptime
# Отображается текущее время и работа системы без выключения и перезагрузки;
# hostname
# Выводится сетевое имя компьютера;
# whois linux.org
# Показывается информация о домене linux.org;
# wget --convert-links -r Linux.org
# Сайт копируется целиком, конвертируются ссылки для автономной работы. Копирование производится на глубину 5-ти уровней;
# wget http://itshaman.ru/images/logo_white.png
# Файл http://itshaman.ru/images/logo_white.png скачивается в текущую папку;
# pppconfig
# Команда нужна для создания и настройки соединения Dial-Up при выходе в интернет по модему;
# pppoeconf
# Команда для создания и настройки выхода в сеть через ADSL-модем;
# !!
# Обеспечивается выполнение последней команды;
# history | tail -50
# Отображаются последние 50 набранных команд;
# exit
# Сеанс текущего пользователя завершается;
# passwd
# Пароль текущего пользователя меняется;
# shutdown -h now
# Для выхода из Linux;
# poweroff
# Для выхода из Linux;
# reboot
# Система перезагружается;
# last reboot
# Выводится статистика перезагрузок;
# winecfg
# Для настройки Wine — неэмулятора WinAPI;
# host itshaman.ru
# Для отображения IP-адреса введённого сайта.
2. Команды Linux для работы с директориями и файлами
В этом списке вы увидите команды Linux, которые предназначены для создания и удаления директорий и файлов. Также список включает команды навигации между файлами, команды для назначения прав доступа и владельца.
2.1 Файлы и директории
# pwd
# Выводится текущий путь;
# ls
# Выводится список каталогов и файлов по порядку;
# ls -laX
# Выводится отформатированный список всех директорий и файлов, в том числе скрытых;
# cd
# Для перехода в домашнюю директорию;
# cd /home
# Для перехода в директорию /home;
# touch /home/primer2
# Создаётся пустой файл /home/primer2;
# tail /var/log/messages
# Выводится конец файла. Это удобно, если вы работе с большими файлами и логами;
# cat /home/primer2
# Показывается содержимое файла;
# nano /home/primer2
# Обеспечивается редактирование файла;
# gedit /home/primer2
# Ещё одна Linux-команда для редактирования файла;
# echo "Последняя строчка" | sudo tee -a /home/primer2
# К концу файла добавляется "Последняя строчка";
# cp /home/Mut@NT/primer.txt /home/primer.txt
# Копируется /home/Mut@NT/primer.tx в home/primer.txt;
# mkdir /home/Mut@NT/shaman
# Создаётся директория с именем shaman;
# rmdir /home/Mut@NT/shaman
# Удаляется директория с именем shaman;
# rm -rf /home/Mut@NT/shaman
# Удаляется директория со вложенными фалами;
# ln -s /home/Mut@NT/primer.txt /home/primer
# Cоздаётся символическая ссылка к файлу /home/Mut@NT/primer.txt;
# cp -la /dir1 /dir2
# Для копирования директории;
# mv /dir1 /dir2
# Для переименовывания директории;
# du -sh /home/Mut@NT/
# На экран выводится размер заданной директории. Команда подходит и для определения размера файлов;
# locate primer
# Выполняется поиск файлов с именем primer.
2.2 Права доступа
# [sudo] chmod 0777 /home/
# Меняются права доступа к директории. В данном случае 0777 – это разрешение на чтение/запись/исполнение для всех групп;
# [sudo] chown Mut@NT:ITShaman /home/primer.txt
# Меняются владелец и группы, но только для файла /home/primer.txt;
# [sudo] chmod -R 0777 /home/
# Происходит рекурсивное изменение прав доступа к директории. Значение 0777 мы уже описали выше. Права 0777 будут иметь все вложенные файлы и директории;
# [sudo] chown -R Mut@NT /home/
# Для всего содержимого директории меняется владелец.
3. Команды Linux: работаем с архивами
# tar cf primer.tar /home/primer.txt
# Создаётся tar-архив с именем primer.tar;
# tar cjf primer.tar.bz2 /home/primer.txt
# Создаётся tar-архив со сжатием Bzip2 и именем primer.tar.bz;
# tar czf primer.tar.gz /home/primer.txt
# Cоздаётся tar-архив со сжатием Gzip и именем primer.tar.gz;
# tar xf primer.tar
# В текущую папку распаковывается архив primer.tar;
# tar xjf primer.tar.bz
# Распаковывается tar-архив с Bzip2;
# tar xzf primer.tar.gz
# Распаковывается tar-архив с Gzip.
4. Команды Linux для установки программ
4.1 Просмотр установленных пакетов
RPM-дистрибутивы
# rpm -qa
# Отображается список пакетов RPM, установленных в системе.
DEB–дистрибутивы
# dpkg -l |more
# Для показа списка пакетов DEB, установленных в системе;
# apt-cache search имя пакета
# Для поиска в индексах доступного пакета и вывода на экран краткой информации о нужном пакете (это весьма полезная команда, обеспечивающая поиска программ из консоли);
# apt-cache showpkg имя пакета
# Для отображения полной информации об указанном пакете.
4.2 Установка и удаление пакетов
RPM-дистрибутивы
# [sudo] rpm -i pkgname.rpm
# Устанавливается RPM-пакет pkgname.rpm;
# [sudo] dpkg -i *.rpm
# Устанавливаются все пакеты в директории;
# [sudo] rpm -e pkgname
# Удаляется RPM-пакет pkgname.
DEB-дистрибутивы
# [sudo] apt-get update
# Обновляется список доступных пакетов из интернета;
# [sudo] apt-get upgrade
# Обновляется доступная версия установленных пакетов в системе;
# [sudo] dpkg -i *.deb
# Устанавливаются все пакеты в директории;
# [sudo] apt-get install pkgname
# Устанавливается DEB-пакет pkgname;
# [sudo] apt-get remove pkgname
# Удаляется DEB-пакет pkgname.
5. Команды Linux для мониторинга работы и просмотра логов
Здесь собраны команды Linux нужные для мониторинга работы ОС. Все показания, полученные с их помощью, выводятся на экран в режиме реального времени. Число, которое стоит после команды, обозначает интервал между выводом информации.
# top
# Для получения информации о загруженных процессах, потреблении ОЗУ;
# htop
# Расширенная онлайн-статистика о загруженных процессах;
# dmesg
# Отображение log-файла загрузки операционной системы и нахождения новых устройств;
# mpstat 1
# Отображается расширенная статистика потребления ресурсов в процентах (для некоторых дистрибутивов нужна установка пакета sysstat);
# iostat 2
# Показывается расширенная статистика прерываний по устройствам;
# vmstat 2
# Расширенная статистика по применению виртуальной памяти.
6. Команды Linux для отображения информации об устройствах
# lsdev
# Установленные устройства (для некоторых дистрибутивов потребуется пакет procinfo);
# cat /proc/cpuinfo
# Полная информация о модели процессора;
# cat /proc/meminfo
# Расширенная информация о занимаемой ОС;
# watch -n1 'cat /proc/interrupts'
# Данные о прерываниях;
# grep SwapTotal /proc/meminfo
# Размер раздела, который выделен под swap;
# free -m
# Используемые и свободные ОЗУ и Swap-файл (-m указывает, что отображать данные надо в Мб);
# lshal
# Полный список всех устройств, а также их параметров;
# lspci -tv
# Показ обнаруженных PCI-устройств;
# cat /proc/devices
# Все устройства в системе (названия взяты из директории /proc/devices);
# lsusb -tv
# USB-устройства;
# [sudo] dmidecode
# Версия BIOS;
# gtf 1024 768 75
# Вывод строки ModeLine для монитора на параметрах экрана 1024x768x75Hz.
7. Команды Linux для жёстких дисков и файловой системы
7.1 Информация о жёстком диске и файловой системе
# fdisk -l
# Все подключенные жесткие и сменные диски;
# smartctl -a /dev/sda1
# Вывод SMART-данных о разделе жесткого диска /dev/sda1 (нужен пакет smartmontools);
# [sudo] hdparm -I /dev/sda
# IDE/ATA жёсткие диски;
# [sudo] blkid
# Вывод UUID всех доступных накопителей в системе.
7.2 Производительность жёстких дисков
# [sudo] hdparm -tT /dev/sda
# Отображение производительности жёсткого диска.
7.3 Монтирование разделов жёсткого диска
# mount | column -t
# Примонтированные устройства;
# cat /proc/partitions
# Только примонтированные разделы;
# df
# Свободное место на разделах;
# [sudo] mount /dev/sda1 /mnt
# Монтаж раздела /dev/sda1 к точке монтирования /mnt;
# [sudo] mount -t auto /dev/cdrom /mnt/cdrom
# Монтаж большинства CD-ROM`ов;
# [sudo] mount /dev/hdc -t iso9660 -r /cdrom
# Монтаж IDE CD-ROM;
# [sudo] mount /dev/scd0 -t iso9660 -r /cdrom
# Монтаж SCSI CD-ROM;
# [sudo] mount -t ufs -o ufstype=ufs2,ro /dev/sda3 /mnt
# Монтаж разделов FreeBSD в Linux;
# [sudo] mount -t iso9660 -o loop /home/file.iso /home/iso
# Монтаж ISO-образов;
# [sudo] mount -t smbfs -o username=vasja,password=pupkin //pup/Video
# Монтаж сетевых ресурсов (SMB);
# [sudo] mount /dev/sdb1 -t vfat -o rw /mnt
# Монтаж раздела с файловой системой FAT 16/32 к точке монтирования /mnt с возможностью записи;
# [sudo] umount /mnt
# Демонтаж раздела от точки монтирования /mnt;
8. Команды Linux для настройки сети
8.1 Конфигурация сети
# ifconfig
# Параметры всех сетевых;
# ifconfig eth0
# Параметры сетевого интерфейса eth0;
# [sudo] ethtool eth0
# Состояние сетевого интерфейса eth0 (Может потребоваться пакет ethtool). Команда применяется только для проводных подключений (с беспроводными интерфейсами не работает);
# [sudo] ethtool -s eth0 speed 100 duplex full autoneg off
# Принудительное задание скорости сетевому интерфейсу 100 Mbit и режима Full duplex и отключение автоматического определения;
# ifconfig eth0 192.168.50.254 netmask 255.255.255.0
# Задание основного IP-адреса сетевому интерфейсу eth0;
# ip addr add 192.168.50.254/24 dev eth0
# Аналогично;
# ifconfig eth0:0 192.168.51.254 netmask 255.255.255.0
# Задание дополнительного IP-адреса сетевому интерфейсу eth0;
# ip addr add 192.168.51.254/24 dev eth0 label eth0:1
# Аналогично;
# [sudo] ifconfig eth0 up
# Запуск сетевого интерфейса eth0;
# [sudo] ifconfig eth0 down
# Его отключение;
# ifconfig eth0 hw ether 00:01:02:03:04:05
# Для смены MAC-адреса;
# [sudo] /etc/init.d/dhcpd restart
# Для перезагрузки DHCP клиента;
# ping 192.168.0.2
# Для проверки сетевого соединения. Пингуется IP-адрес 192.168.0.2.
8.2 Маршрутизация
# route -n
# Для вывода на экран таблицы маршрутизации;
# netstat -rn
# Аналогично.
8.3 Управление портами (брандмауэр)
# lsof -i
# Показывается список всех открытых портов в сеть интернет;
# netstat -an | grep LISTEN
# Отображение списка всех открытых портов;
# [sudo] netstat -tup
# Вывод активных соединений с интернетом;
# socklist
# Открытые сокеты;
# [sudo] netstat -anp --udp --tcp | grep LISTEN
# Выводится список приложений, открывающих порты;
# [sudo] iptables -P INPUT ACCEPT
# Открытие доступа ко всем портам;
# [sudo] iptables -P FORWARD ACCEPT
# То же самое;
# [sudo] iptables -P OUTPUT ACCEPT
# То же;
# [sudo] iptables -L -n -v
# Статус firewall (статус iptables);
# [sudo] iptables -X
# Удаляются все цепочки.
8.4 Управление NAT
# [sudo] iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# Чтобы «поднять» NAT на интерфейсе eth0;
# [sudo] iptables -t nat -A PREROUTING -p tcp -d 78.31.70.238 --dport 993:995 -j DNAT --to 192.168.16.254:993-995
# Перенаправить диапазон портов 993-995;
# [sudo] iptables -t nat -A PREROUTING -p tcp -d 78.31.70.238 --dport 20022 -j DNAT --to 192.168.16.44:22
# Перенаправить порт 20022, используемый для ssh;
# iptables -L -t nat
# Для проверки статуса NAT.
9. Команды Linux для создания и записи образов ISO
# cdrecord -scanbus
# Отображение всех доступных CD-ROM;
# dd if=/dev/hdc of=/tmp/mycd.iso bs=2048 conv=notrunc
#Создание образов ISO с диска CD-ROM.
10. Команды Linux: группы и пользователи
Эти команды Linux необходимы для работы с пользователями и группами пользователей.
# id
# Сводная информация по текущему пользователю (логин, UID, GID, группы);
# finger Mut@NT
# Информация о пользователе Mut@NT;
# last
# Последние зарегистрированные пользователи;
# who
# Имя текущего пользователя и время его входа;
# useradd Mut@NT
# Добавляет нового пользователя Mut@NT;
# groupadd Otus
# Добавляет группу Otus;
# usermod -a -G Otus Mut@NT
# Добавляет пользователя с именем Mut@NT в группу под названием Otus (для Debian);
groupmod -A Mut@NT Otus
# Добавление пользователя Mut@NT в группу под названием Otus (SuSE);
# userdel Mut@NT
# Пользователь Mut@NT удаляется;
# groupdel Otus
# Группа Otus удаляется.
11. Команды Linux для работы с процессами
Обратите внимание, что все процессы, которые запущены, имеют PID — уникальные номера.
# ps axjf
# Все загруженные процессы;
# pgrep -l sshd
# PID конкретного процесса – sshd;
# fuser -va 22/tcp
# PID процесса использующего 22-й порт;
# echo $$
# PID вашей оболочки;
# fuser -va /home
# PID процесса;
# lsof /home
# Список процессов;
# killall 0 httpd
# Текущее состояние процесса httpd;
# kil 4712
# С помощью этой команды вы «убьёте» процесс с PID 4712;
# [sudo] killall TERM 4711
# Команда посылает процессу с PID`ом 4711 сигнал TERM, завершающий процесс;
# [sudo] killall HUP httpd
# Процесс с именем httpd получает сигнал HUP, останавливающий процесс;
# [sudo] fuser -k -TERM -m /home
# «Убиваются» все процессы, обладающие доступом к /home.
Ещё раз про важные сигналы, которые можно послать процессам: • 1 — HUP; остановка процесса; • 2 — INT; прерывание процесса; • 3 — QUIT; выход; • 9 — KILL; чтобы «убить» процесс; • 15 — TERM; завершение процесса.
12. Команды Linux: Runlevels
После того, как происходит загрузка ядра Linux, загружаются разные демоны и приложения, например, NetworkManager, Evolution и прочие. Результат мы видим на рабочем столе после загрузки. При этом загрузка каждой службы выполняются скриптом, которые находятся в /etc/init.d.
Runlevels – это целое число, определяющее «уровень загрузки».
Уровни бывают: • Runlevels=0; выключение компьютера; • Runlevels=1; работа в режиме Single-User; • Runlevels=2; текстовый режим (сеть не поддерживается); • Runlevels=3; текстовый режим но уже с поддержкой сети; • Runlevels=4; • Runlevels=5; графический режим; • Runlevels=6; осуществляется перезагрузка компьютера.
Таким образом, скрипты, которые загружаются лишь в текстовом режиме с поддержкой сети, — это Runlevels=3.
Упрощённый вариант настройки:
# [sudo] sysv-rc-conf
#Чрезвычайно удобная настройка Runlevels, правда, нужен пакет sysv-rc-conf.
А вот ручной вариант настройки:
# chkconfig --list
# Список всех скриптов с соответствующими Runlevels;
# chkconfig --list udev
# Разрешенные Runlevels только отдельного скрипта, у нас это udev;
# [sudo] update-rc.d udev defaults
# Скрипту udev выставляются значения Runlevels по умолчанию;
# [sudo] chkconfig udev off
# У udev отключаются все Runlevels;
# [sudo] update-rc.d -f udev remove
# Аналогично для Debian;
# [sudo] chkconfig udev --level 35 on
# Для добавления скрипту udev Runlevels 3 и 5;
# [sudo] update-rc.d udev start 20 2 3 4 5 . stop 20 0 1 6
# Для изменения параметров для скрипта udev.
13. Команды Linux для работы с ядром и модулями
13.1 Работа с ядром системы
# uname -a
# Отображение версии ядра Linux.
13.2 Работа с модулями ядра
# lsmod
# Вывод списка всех модулей, загруженных в ядро;
# [sudo] modprobe isdn
# Для загрузки модуля на примере isdn;
# make
# Создаётся сжатый образ ядра;
# [sudo] make modules_install
# Устанавливается модуль;
# make modules
# Производится компиляция модуля;
# [sudo] make install
# Для установки в ядро системы.
14. Команды Linux для работы с LiveCD
# [sudo] chroot /mnt
# Происходит смена root-окружения на /mnt. Далее корневой раздел, который примонтирован к /mnt, используется как родной.
15. Команды Linux для конвертирования данных
15.1 Конвертирование текста
# iconv -l
# Вывод списка всех кодировок, которые доступны;
# iconv -f cp1251 -t UTF-8 file_cp1251.txt -o file_utf8.txt
# Смена кодировки. Например, был файл file_cp1251.txt (кодировка cp1251), а получился файл file_utf8.txt (кодировка utf8).
15.2 Конвертирование PDF в JPEG
# convert name.pdf name-%03d.jpg
# Конвертация name.pdf в постраничные изображения JPEG (может понадобиться пакет imagemagick);
# convert *.jpeg name.pdf
# Конвертация изображений JPEG в PDF (может потребоваться пакет imagemagick).
15.3 Конвертирование видео
# 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
15.4 Конвертирование аудио
# cdparanoia -B
# Треки с AudioCD копируются в текущую директорию wav-файлами;
# oggenc in.wav -b 256 out.ogg
# Wav-файлы конвертируются в Ogg Vorbis с качеством 256 kb/s;
# lame -b 256 in.wav out.mp3
# Wav-файлы конвертируются в mp3 с качеством 256 kb/s.
16. Команды Linux для печати на принтере
# export PRINTER=lbp2900
# Выбирается принтер по умолчанию. У нас это Canon LBP-2900;
# lprm -
# С принтера по умолчанию удаляются все задачи;
# lpr # 2 name.txt
# На принтере распечатываются две копии файла name.txt.