четверг, 17 января 2013 г.

Консольные команды Linux

В этом посте собраны нужные, базовые команды Linux, которые используются часто в работе, их очень много, со временем большинство из них запоминаются.

Выключение: 
# init 0 
# shutdown -h now 
# shutdown -h 20:00 & //выключение назначено на 20:00

Перезагрузка: 
# reboot 
# shutdown -r now 
# shutdown -r 20:00 & //перезагрузка назначена на 20:00

Завершение текущей сессии: 
# logout

Вывод на экран архитектуры компьютера: 
$ arch 
$ uname -m

Календарь и время: 
$ cal //вывод текущего дня и месяца 
$ cal 1976 //вывод календаря 1976 года 
$ cal -hjy jan 2013 //вывод порядковых номеров дней года

$ date //вывод текущего времени 
# date 011623342013.06 //установить дату и время в значение МесяцДеньЧасМинутаГод.Секунда

# clock -w //запись текущей системной даты в BIOS

Информация о системе: 
$ cat /proc/cpuinfo //подробная информация о процессоре 

$ cat /proc/meminfo //подробная информация о памяти 
$ cat /proc/swaps //подробная информация о файле(-ах) подкачки 
$ free //краткая информация о состоянии памяти

$ cat /proc/version //подробная информация о версии текущего ядра
$ cat /proc/mounts //вывод смонтированных файловых систем
$ cat /proc/net/dev //вывод информации о сетевых устройствах

# hdparm -i /dev/sda //вывод характеристик жесткого диска /dev/sda 

# hdparm -tT /dev/sda //измерение скорости чтения данных с устройства /dev/sda
$ lspci -tv //вывод устройств на шине PCI 
$ lsusb -tv //вывод устройств на шине USB

Uname:
$ uname -s //вывод имени ядра 
$ uname -n //вывод имени машины в сети, либо cat /etc/hostname 
$ uname -r //вывод номера выпуска ОС 
$ uname -v //вывод версии ядра 
$ uname -o //вывод имени операционной системы 
$ uname -a //печать всей информации

Информация о дисковом пространстве: 
$ df -h //вывод информации о состоянии памяти на 
смонтированных разделах 
# du -sh /bin //вывод занятой памяти каталога /bin

Работа с файлами и каталогами: 
$ pwd //вывод текущего каталога

Переход:
# cd /home/Downloads //переход в каталог Downloads 
# cd .. //подняться на уровень выше по иерархической лестнице 
# cd ../.. //подняться на два уровня выше по иерархической лестнице 
$ cd //перейти в домашний каталог 
# cd ~user //перейти в домашний каталог пользователя user

Копирование:
# cp -a dir_1 dir_2 //копировать каталог dir_1 в dir_2 
# cp file_1 file_2 //копировать file_1 в file_2 
# cp -a /tmp/dir . //копировать каталог dir и его содержимое в текущий каталог 
# cp/tmp/dir/* . //копировать только файлы каталога /tmp/dir/ в текущий каталог

Кодировки:
$ iconv -l //вывод всех доступных кодировок 
# iconv -c -f utf-8 -t windows-1251 inputFile > outputFile //конвертирование inputFile с кодировкой utf-8 в outputFile с кодировкой windows-1251

Ссылки:
# ln -s /home/Downloads/someFileOrDir ./link //создание в текущем каталоге символической ссылки на каталог или файл someFileOrDir 
# ln /home/Downloads/someFileOrDir ./link //создание в текущем каталоге жесткой ссылки на каталог или файл someFileOrDir

Вывод содержимого:
$ ls //вывод содержимого текущего каталога 
$ ls -F /bin //вывод содержимого каталога /bin с указанием '/' - для каталогов, '|' - для имени FIFO, '*' - для исполняемых файлов 
$ ls -l //вывод содержимого каталога в одноколоночном формате: тип, права доступа, количество ссылок, владелец, группа, размер (байт), временной штамп, имя 
$ ls -a //вывод ВСЕХ каталогов и файлов (даже скрытых)

Создание и переименование:
$ mkdir dir_1 //создание каталога dir_1 в данном каталоге 
$ mkdir dir_1 dir_2 //создание каталогов dir_1 и dir_2 в данном каталоге 
$ mkdir -p /path/to/dir //создать иерархию каталогов
$ mv oldfile newfile //переименование или перемещение файла oldfile в newfile 

Удаление:
# rm -rf /dir //рекурсивное удаление каталога со всем его содержимым без запроса на подтверждение 
# rm -f file //удаление file без запроса на подтверждение 
# rm /dir //удаление каталога /dir

Поиск:
$ find /home -user UserName //найти все каталоги и файлы, принадлежащие пользователю UserName, поиск начинается с каталога /home и в каталогах выше уровнем 
$ find /bin -name someFileOrDir //поиск каталогов и файлов и именем someFileOrDir начиная с каталога /bin 

$ whereis man //вывод полных путей к бинарным файлам, исходным кодам и руководствам файла man 
$ which man //вывод полного пути до файла man

Монтирование файловых систем:
# mount /dev/sda1 /mnt/disk1 //монтирование устройства sda1 в каталог /mnt/disk1, последний каталог должен существовать
# mount -o loop /path_to_file/file.iso /mnt/cdrom //монтирование образа в каталог /mnt/cdrom 
# mount -t vfat /dev/sda2 /mnt/disk2 //монтирование раздела с файловой системой FAT32 
# mount /dev/cdrom /mnt/cdrom //монтирование cdrom'а 
# mount /dev/fd0 /mnt/floppy //монтирование мягких (гибких) дисков 
# mount /dev/sdc1 /mnt/usbdisk //монтирование USB-устройства 

# umount /dev/sdb //размонтирование устройства /dev/sdb 
# fuser -km /mnt/sdb //размонтировать устройство, если оно заблокировано процессом 
# umount -n /mnt/sdb //размонтирование устройства без записи в mtab

Пользователи и группы:
# useradd UserName //создание пользователя UserName 
# groupadd [group_name] //создание группы с именем group_name 
# useradd -c «This is first user» -g admin -d /home/NewUser -s /bin/bash NewUser //создание пользователя и именем NewUser, находящийся в группе admin (параметр -g), со своей домашней директорией /home/NewUser (параметр -d), с оболочкой bash (параметр -s) и комментарием к пользователю «This is first user» 

# usermod -c «Hahaha» -g system -d /home/dir -s /bin/sh unknownuser //изменение пользователя
# groupmod -n group_name new_group_name //переименование группы group_name в new_group_name 

# userdel -r UserName //удаление пользователя UserName и его домашнего каталога 
# groupdel [group_name] //удаление группы group_name 

# chage -E2016-11-30 user //установка даты окончания действия пользователя user (yyyy-mm-dd)
$ passwd //смена пароля текущего пользователя 
# passwd UserName //смена пароля пользователя UserName

Права доступа и атрибуты файлов:
# chown UserName /file_name //назначить пользователя UserName владельцем файла /file_name 
# chown UserName:UserGroup /file_name //назначить пользователя UserName и группу UserGroup владельцами файла /file_name
# chmod ugo+rwx /dir // установка полных прав доступа (ReadWriteExecute) для всех (UserGroupOther) на каталог /dir, аналог chmod 777 /dir
# chgrp new_group file //смена группы владельца на new_group файла file 

# chmod o+t /home/User //установка Sticky-бита на каталог /home/User 
# chmod o-t /home/User //удаление Sticky-бита на каталог /home/User 

Анализ файловой системы:
# badblocks -v /dev/sda1 //проверка раздела /dev/sda1 на наличие bad-блоков 

# fsck /dev/sda1 //проверка и восстановление целостность файловой системы раздела /dev/sda1 
# fsck.ext2 /dev/sda1 //проверить и восстановить целостность файловой системы ext2 раздела /dev/sda, аналогично и для (msdos, vfat, ext3, ext4) 
# dosfsck /dev/sda1 //аналог fsck.msdos /dev/sda1, аналогично (e2fsck, e2fsck -j для ext3)

Просмотр содержимого файлов:
$ cat file //вывод содержимого начиная с первой строки 
$ tac file //вывод содержимого начиная с последней строки 
$ more file //вывод содержимого файла постранично 
$ less file //аналогично more, но позволяет двигаться по содержимому файла назад и вперед 
$ tail -2 file //вывести две последние строки файла

Работа с текстом:
$ cat -n file //вывод содержимого файла с нумерацией строк 
$ cat file | awk 'NR%2==1' //вывод нечетных строк файла, аналогично для четных (вместо единицы ноль)

$ comm -3 file1 file2 //сравнение содержимого файлов, удаляя одинаковые строки 
$ comm -1 file1 file2 //сравнение содержимого файлов, не отображая строки file1, аналогично параметр -2 для file2

$ grep [0-9] file //вывод строк файла, содержащих цифры 
$ grep ^Yes file //вывод строк файла, начинающихся с «Yes» 
$ grep Yes file //вывод строк файла, содержащих сочетание символов «Yes» 
$ grep Yes -R /home/* //вывод строк всех файлов каталога /home содержащих сочетание символов «Yes»

$ sed 's/first/second/g' file //замена first на second файла file, и вывод его содержимого 
$ sed '/*#/d; /^$/d' file //удаление пустых строк и комментариев файла file, аналог '/^$/d' 
$ sed -e '1d' file //удаление первой строки из file 
$ sed -n '/string/p' //отображение строк содержащих string 
$ sed -e 's/*$//' file //удаление пустых символов в конце каждой строки 
$ sed -n '5p;5q' file //вывод пятой строки 
$ sed -n '2,5p' file //вывод строк со второй по пятую 
$ sed -e 's/00*/0/g'file //замена последовательности нулей одним нулем

$ sort file1 file2 //вывод отсортированного содержимого file1 и file2 
$ sort file1 file2 | uniq //вывод отсортированного содержимого file1 и file2 исключая повторные значение (параметр -d — повторяющиеся значения, -u — уникальные) 

$ echo 'word' | tr '[:lower]' '[:upper:]' //перевод символов из нижнего регистра в верхний

Ping — программа проверяющая доступность хостов. 

Простейший пример команды ping: 
$ ping example.com //посылаются пакеты с интервалом в 1 секунду

Изменение интервала отправки пакетов: 
$ ping -i 5 example.com //5 секунд 
$ ping -i 0.2 example.com //200 миллисекунд (5 пакетов в секунду) 
# ping -i 0.1 example.com //100 миллисекунд нижний предел, возможен только для суперпользователя

Перед проверкой удаленного хоста желательно проверить локальный хост, это возможно тремя способами: 
$ ping 0 
$ ping localhost 
$ ping 127.0.0.1

Также возможен контроль количества посылаемых пакетов: 
$ ping -c 10 example.com //отправляем 10 пакетов 
# ping -c 10 -i 0.2 example.com //отправляем 10 пакетов с интервалом 100мс, команда будет выполняться 1 секунду

Текущая версия ping: 
$ ping -V

«Флуд» в сети (отправка большого количества пакетов за минимальное время): 
# ping -f localhost

Возможно звуковое уведомление, если сначала от хоста нет ответа, а потом ответ пришел: 
$ ping -a example.com

Также можно пропустить ответы от хоста, а выводить только статистику: 
$ ping -c 5 -q example.com

Изменение размера отправляемого пакета (по умолчанию 64 byte): 
$ ping -s 100 localhost //108 byte

Можно указать время выполнения команды: 
$ ping -w 5 localhost //в течении пяти секунд будет пинговаться localhost

С помощью комбинации клавиш Ctrl+| можно смотреть статистику выполнения, не прерывая пинг.

Ifconfig - конфигурирование интерфейсов ядра.

Вывод информации об интерфейсах: 
# ifconfig //вывод всех доступных интерфейсов 
# ifconfig eth0 //вывод настроек интерфейса eth0 
# ifconfig -a //вывод всех интерфейсов, включая отключенные 

Включение и отключение интерфейса: 
# ifconfig eth0 up //включение 
# ifconfig eth0 down //отключение 
либо 
# ifup eth0 //включение 
# ifdown eth0 //отключение 

Назначения адреса интерфейсу:
# ifconfig eth0 192.168.1.20 //назначение ip-адреса 
# ifconfig eth0 netmask 255.255.255.0 //назначение сетевой маски 
# ifconfig eth0 broadcast 192.168.2.255 //назначение бродкаста 

# ifconfig eth0 192.168.2.2 netmask 255.255.255.0 broadcast 192.168.2.255 //три предыдущие команды в одной 

Изменение MTU
# ifconfig eth0 mtu XX //где XX значение MTU

Promisc mode:
По умолчанию когда сетевая карта получает пакет, она проверяет адрес получателя. В случае если этот адрес отличен от назначенных ей адресов, пакет отбрасывается. В promiscuous mode, карта не отбрасывает данные пакеты. Вместо этого она принимает все пакеты, приходящие через интерфейс. Для установки данного режима требуются привилегии суперпользователя. Большинство сетевых мониторов и анализаторов используют данный режим для захвата пакетов и анализа сетевого трафика. 
# ifconfig eth0 promisc //перевод интерфейса eth0 в promiscious mode 
# ifconfig eth0 -promisc //перевод eth0 в нормальный режим

Другие полезные команды:
# dhclient eth0 //включение DHCP на сетевом интерфейсе eth0 
$ hostname //вывод имени компьютера
$ host example.com //преобразование домена в ip-адрес и наоборот
$ ip link show //вывод статус связи всех сетевых интерфейсов 
# iwlist scan //поиск беспроводных сетей и точек доступа 
# mii-tool eth0 //вывод состояния связи сетевого интерфейса eth0 
$ nslookup example.com //ресольвить (разрешить) доменное имя в ip-адрес и наоборот 
# route -n //вывод локальной таблицы маршрутизации, аналогично netstat -rn 
$ netstat -tup //вывод всех установленных соединений TCP и UDP без разрешения имен в ip-адресах и PID'ы и имена процессов, ожидающих соединений на сетевых портах

# route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 //добавление статического маршрута в сеть 192.168.0.0 через шлюз с ip-адресом 192.168.1.1 
# route add -net 0/0 gw IP_Gateway //назначение ip-адреса шлюза по умолчанию (default gateway) 
# route del 0/0 gw IP_Gateway //удаление ip-адреса шлюза
# tcpdump tcp port 80 //отлов и вывод трафика на TCP-порт 80 (HTTP) 
# echo «1» > /proc/sys/net/ipv4/ip_forward //разрешение пересылки пакетов (форвардинга) 
$ whois example.com //вывод информации о доменном имени

GZip/GunZip:
$ gzip file //сжатие файла file в архив file.gz 
$ gzip -9 file //поместить файл file в архив-gzip с максимальной степенью сжатия
$ gunzip file.gz //разжимает архив file.gz

BZip/BunZip:
$ bzip2 file //сжатие файла file, архив file.bz2 
$ bunzip2 file.bz2 //разжимает архив file.bz2

Tar:
$ tar -cvf archive.tar file1 file2 dir //создать tar-архив с именем archive.tar, содержимое — файлы file1file2 и каталог dir 
$ tar -tf archive.tar //вывод содержимого архива 
$ tar -xvf archive.tar //распаковать archive.tar 
$ tar -xvf archive.tar -C /home/user //распаковка архива в каталог /home/user
$ tar -cvzf archive.tar.gz dir/* //создать tar-архив из содержимого каталога dir и запаковать его с помощью gzip 
$ tar -xvzf archive.tar.gz //разжать и распаковать архив archive.tar.gz 
$ tar -cvjf archive.tar.bz2 file //создать tar-архив с файлом file и запаковать его с помощью bz2 
$ tar -xvjf archive.tar.bz2 -C /home/user //распаковать архив archive.tar.bz2 в каталог /home/user

Zip/UnZip:
$ zip archive.zip file //создание сжатого zip-архива с файлом file 
$ zip -r archive.zip file1 file2 dir //запаковать несколько файлов и директорий в zip-архив 
$ unzip archive.zip //разжать и распаковать archive.zip

Rar/Unrar:
$ rar a archive.rar file1 file2 //создание rar-архива archive.rar 
$ rar x archive.rar //распаковать rar-архив, аналог unrar x archive.rar

Мониторинг и отладка системы:
$ ps //вывод списка процессов, запущенного пользователем
$ ps -A //краткий список запущенных процессов 
$ free //статистика использования памяти 
$ last reboot //вывод истории перезагрузок системы 
$ lsof /home/user //вывод списка открытых файлов из каталога /home/user 
$ lsof -p PROC_ID //вывод списка файлов, открытых процессом с PID PROC_ID 
$ lsmod //вывод списка загруженных модулей ядра 
$ pstree //вывод дерева процессов 
# tail /var/log/messages //вывод десяти последних записей из системного журнала 
# tail /var/log/dmesg //вывод десяти последних записей из журнала загрузки ядра 
$ top //вывод списка работающих процессов в режиме реального времени 
# smartctl -i /dev/sda //проверка доступности S.M.A.R.T. на /dev/sda 
# smartctl -A /dev/sda //проверка состояния жесткого диска через S.M.A.R.T 
$ watch -n1 'cat /proc/interrupts' //вывод прерываний в режиме реального времени 
$ vmstat 1 //вывод информационного отчета о системе каждую секунду (параметр 1
$ w username //вывод информации о процессах пользователя username 
$ uptime //вывод времени работы системы

Другие полезные команды:
$ alias h='history' //создать псевдоним h, для команды history
$ apropos ...keyword //вывод команд, относящихся к ключевым словам 
$ chsh //смена командной оболочки пользователя 
$ gpg -c file //шифрование file с помощью GNU Privacy Guard 
$ gpg file.gpg //дешифрация file с помощью GPG 
$ ldd /usr/bin/prog_name //вывод списка библиотек, используемых программой prog_name 
$ man prog_name //вывод странички руководства prog_name 
$ wget -r www.example.com //рекурсивная загрузка содержимого сайта example.com 
$ wget -c www.example.com/file //загрузка файла file с возможностью останова и докачки 
$ echo 'wget -c www.example.com/file' | at 09:00 //включение закачки в 9:00 
$ whatis prog_name //вывод описания действий для prog_name 
$ who -a //вывод списка залогиненых пользователей, время последней загрузки системы и прочую информацию

Комментариев нет: