Полезные команды Linux

Ниже представлены различные команды системной оболочки Unix подобных операционных систем. Имейте в виду, это просто сборник, не относящийся к какому-то конкретному дистрибутиву, то есть многие из этих команд, специфичны для какой-то определенной системы и могут отсутствовать в других дистрибутивах Linux.

Большинство из приведенных ниже команд, являются достаточно повседневными, то есть часто используются в процессе администрирования Unix-систем ( различных дистрибутивов Linux ).

Корректные: выключение, перезагрузка, выход из системы

# init 0
Выключить систему
# logout
Завершить текущую сессию
# reboot
Перезагрузка
# shutdown -h now
Еще один вариант корректного выключения
# shutdown -h 22:15 &
Запланировать выключение системы на 22 часа 15 минут
# shutdown -c
Отменить запланированное выключения системы
# shutdown -r now
Еще один вариант перезагрузки
# telinit 0
Тоже способ выключения системы

Получение различной информации о системе

# arch
Вывести на экран архитектуру компьютера
# uname -m
Так-же выводит архитектуру компьютера
# cal 2010
Печатает календарь на 2010 год. Без аргументов выводит календарь на текущий месяц
# cat /proc/cpuinfo
Вывести подробную информацию о процессоре
# cat /proc/interrupts
Вывести информацию о прерываниях
# cat /proc/meminfo
Выводит статистику использования памяти
# cat /proc/swaps
Вывести информацию о swap файле(ах) ( файл подкачки )
# cat /proc/version
Вывести информацию о версии текущего ядра
# cat /proc/net/dev
Вывести информацию и статистику по сетевым устройствам
# cat /proc/mounts
Показать смонтированные файловые системы
# clock -w
Записать текущую системную дату в BIOS
# date
Вывести текущую системную дату и время
# date 041217002007.00
Установить дату и время в значение МесяцДеньЧасМинутаГод.Секунда
# dmidecode -q
Вывести в читабельном виде информацию по аппаратному оборудованию системы (SMBIOS / DMI)
# hdparm -i /dev/hda
Вывести характеристики жесткого диска
# hdparm -tT /dev/sda
Измерять скорость чтения данных с жесткого диска
# lspci -tv
Вывести список устройств на шине PCI
# lsusb -tv
Вывести список устройств на USB шине
# uname -r
Вывести версию используемого ядра

Дисковое пространство

# df -h
Вывод информации о свободном и занятом дисковом пространстве на смонтированных разделах, в формате, удобном для чтения
# dpkg-query -W -f=’${Installed-Size;10}t${Package}n’ | sort -k1,1n
Выводит объем используемого дискового пространства, занятого файлами deb-пакета, с сортировкой по размеру (ubuntudebian т.п.)
# du -sh dir
Выводит объем дискового пространства, занимаемый директорией dir
# du -sk * | sort -rn
Выводит листинг файлов и директорий с размером, сортируя его по размеру
# ls -lSr | more
Выводит листинг файлов и директорий, сортируя по возрастанию размера и перенаправляет его в программу more для постраничного просмотра
# rpm -q -a —qf ‘%10{SIZE}t%{NAME}n’ | sort -k1,1n
Выводит объем дискового пространства, занимаемого файлами rpm-пакета, с сортировкой по размеру ( fedoraredhat и т.п. )

Работа с файлами и папками

# pwd
Вывести текущую директорию
# cd /home
Перейти в директорию /home
# cd ..
Перейти в родительский каталог, то есть подняться на уровень выше
# cd ../..
Подняться в дереве каталогов на два уровня
# cd
Перейти в домашний каталог
# cd ~user
Перейти в домашний каталог пользователя user
# cd —
Перейти в предыдущую директорию, из которой был сделан переход в текущую директорию
# cp -a test_1 test_2
Копировать директорию test_1 в директорию test_2
# cp file_1 file_2
Копировать файл file_1 в файл file_2
# cp -a /tmp/test .
Rопировать директорию test и все ее содержимое в текущую директорию
# cp test/* .
Копировать все файлы содержащиеся в директории test в текущую директорию
# iconv -l
Выводит список доступных для использования кодировок
# iconv -c -f windows-1251 -t utf-8 inputFile > outputFile
Конвертировать файл из кодировки windows-1251 в кодировку utf-8
# ln -s /path/to/filedir ./link
Создать в текущей директории символическую ссылку link на директорию или файл filedir
# ln /path/to/filedir ./link
Создать в текущей директории жесткую ссылку link на директорию или файл filedir
# ls
Вывести листинг содержимого текущей директории
# ls -F
Листинг текущей директории с добавлением к именам символов, обозначающих тип объекта
# ls -l
Листинг текущей директории с подробностями по каждому объекту ( права доступа, владелец, группа, дата, размер )
# ls -a
Кроме обычных объектов, вывести в листинге, скрытые файлы и директории, текущего каталога
# ls /tmp | pr -T5 -W$COLUMNS
Листинг директории /tmp в 5 колонок
# ls *[0-9]*
Вывести в листинг файлов и директорий текущего каталога, содержащие в имени цифровые символы
# lstree
Листинг иерархии директорий и файлов, начиная с корневого каталога (/)
# mkdir dir
Создать в текущем каталоге, директорию с именем dir
# mkdir dir_1 dir_2
Создать в текущем каталоге две директории, с именами dir_1 и dir_2
# mkdir -p /path/to/dir
Создать иерархию директорий. Кроме самой директории dir будут созданы все промежуточные директории
# mv filedir new_filedir
Переместить ( переименовать ) файл или директорию из filedir в new_filedir
# rm -rf /dir
Рекурсивно удалить директорию dir и всё её содержимое, без запроса подтверждения на удаление
# rm -f file
Удалить файл file, без запроса подтверждения
# rm -rf /dir_1 /dir_2
Удалить директории /dir_1 и /dir_2 вместе с содержимым, без запроса подтверждения
# rmdir /dir
Удалить директорию /dir
# tree
Вывести иерархию директорий и файлов, начиная с корневой (/)
# touch -t 0712250000 file1
Изменить дату и время создания файла, если указанный файл не существует, создать его с указанными датой и временем (YYMMDDhhmm)

Поиск нужного файла

# find / -user vasya
Найти все директории и файлы принадлежащие пользователю vasya. Поиск будет производиться, начиная с корневой директории (/)
# find / -name filedir
Найти директории и файлы с именем filedir. Поиск будет производиться, начиная с корневой директории (/)
# find /usr/bin -type f -atime +20
Найти все файлы в директории /usr/bin, время последнего обращения к которым более 20 дней
# find /usr/bin -type f -mtime -10
Найти все файлы в директории /usr/bin, которые были созданы или модифицированы в течении последних 10 дней
# find / -xdev -name \*.rpm
Искать директории и файлы, имена которых оканчиваются на «.rpm«, но игнорируя съёмные накопители, cdrom, usb и т.п.
# find . -maxdepth 1 -name *.jpg -print -exec convert
Найти в текущей директории все файлы с расширением jpg и выполнить для каждого команду convert ( Imagemagick )
# find /path/to/dir -name \*.c
Найти все директории и файлы, имена которых оканчиваются на ««. Поиск будет производиться, начиная с директории /path/to/dir
# find / -name *.rpm -exec chmod 755 ‘{}’ \;
Начиная с корня, найти все фалы и директории, имена которых оканчиваются на «.rpm«, и для каждого изменить права доступа
# whereis ls
Вывод полных путей к бинарным файлам, файлом исходных кодов и руководств, имеющих отношение к файлу ls
# locate \*.ps
Поиск всех файлов, содержащих в имени «.ps» по специальной базе данных, предварительно сформированной командой updatedb
# which ls
Вывести полный путь до файла ls

Монтирование файловых систем

# mount /dev/hda1 /mnt/disk
Монтировать устройство /dev/hda1 в папку с именем /mnt/disk. точка монтирования, папка /mnt/disk, должна существовать
# fuser -km /mnt/hda1
Размонтировать устройство hda1 если оно заблокировано каким либо процессом
# mount -o loop file.iso /mnt/cdrom
Смонтировать фаил или образ ISO в директорию /mnt/cdrom
# mount /dev/hdb /mnt/cdrecorder
Монтировать cdrw или dvdrom
# mount -t vfat /dev/hda5 /mnt/hda5
Смонтировать раздел с файловой системой FAT32
# mount /dev/cdrom /mnt/cdrom
Монтировать cdrom или dvdrom
# mount /dev/fd0 /mnt/floppy
Монтировать floppy disk ( дисковод мягких дисков )
# mount /dev/hdc /mnt/cdrecorder
Монтировать cdrw или dvdrom
# mount /dev/sda1 /mnt/usbdisk
Монтировать USB устройство
# mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share
Монтировать сетевую файловую систему Windows (SMB/CIFS)
# umount -n /mnt/hda2
Размонтировать без записи в файл /etc/mtab, используется в ситуациях, когда файл находится в режиме только чтение или жесткий диск переполнен
# umount /dev/hda2
Размонтировать диск hda2, предварительно неоходимо выйти из точки монтирования /mnt/hda2

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

# useradd -c «User Vasya» -g admin -d /home/vasya -s /bin/bash vasya
Создать пользователя vasya, домашним каталогом будет создана директория /home/vasya, в качестве системной оболочки будет назначен/bin/bash, пользователь будет включен в группу admin, кроме того для учетной записи будет создан комментарий «User Vasya»
# useradd vasya
Создать пользователя vasya
# usermod -c «User FTP» -g system -d /ftp/ftpuser -s /bin/nologin ftpuser
Изменение пользователя
# userdel -r vasya
Удалить пользователя с именем vasya и его домашнюю директорию
# groupadd [ group_name ]
Создать группу с именем group_name
# chage -E 2005-12-31 vasya
Установить дату окончания действия учётной записи пользователя vasya
# groupdel [ group_name ]
Удалить группу group_name
# groupmod -n test new_test
Переименовать группу test в new_test
# newgrp — [group]
Изменяет основную группу текущего пользователя. При указании «-«, ситуация будет идентичной той, в которой пользователь вышил из системы и снова вошёл. Если не указывать группу, основная группа будет назначена из файла /etc/passwd
# grpck
Проверка корректности системных файлов учётных записей. Проверяется файл/etc/group
# pwck
Проверка корректности системных файлов учётных записей. Проверяются файлы /etc/passwd и /etc/shadow
# passwd
Изменить пароль текущего пользователя
# passwd vasya
Изменить пароль пользователя vasya ( может выполнять только root )

Атрибуты файлов

# chattr +a file
Разрешает только добавление данных в файл
# chattr +d file
Игнорировать данный файл при создании резервной копии с помощью программы dump
# chattr +c file
Разрешить ядру автоматически сжимать/разжимать содержимое файла
# chattr +i file1
Защита файла от каких либо изменений или манипуляций: редактирование, перемещение, удаление, создание ссылок на него
# chattr +S file1
Определяет, будет-ли при сохранении изменений, произведена синхронизация, как при использовании команды sync
# chattr +u file1
При удалении файла с данным атрибутом, его будет сохранено, что-бы оставить пользователю возможность восстановить данные в случае необходимости
# chattr +s file1
Позволяет безвозвратное удаление данного файла. При удалении файла с этим атрибутом, место на диске, занимаемое файлом, перезаписывается нулями, после чего файл уже не подлежит восстановлению
# lsattr
Листинг файлов с атрибутами

Работа с правами доступа файлов и директорий

# chown vasya /file
Назначить пользователя vasya владельцем файла file
# chown -R vasya directory
Рекурсивно обойти директорию directory и назначить пользователя vasya владельцем всех вложенных файлов и директорий
# chown vasya:group /file
Назначить владельца и группу для файла /file
# chmod ugo+rwx /directory
Установить полные права доступа rwx ( Read Write eXecute ) для всех ugo ( User Group Other ) на директорию /directory. То-же самое можно сделать, используя числовой представление chmod 777 directory
# chmod go-rwx /directory
Удалить все права на директорию /directory для группы и остальных
# chgrp new_group file
Изменить группу-владельца для file на new_group
# chmod o+t /home/public
Установить так называемый STIKY-бит на директорию /home/public. Удалить файл в такой директории может только владелец данного файла
# chmod o-t /home/public
Удалить STIKY-бит с директории /home/public
# chmod u+s /bin/binary_file
Установить SUID-бит на файл /bin/binary_file. Это позволяет любому пользователю системы, запускать данный файл с правамивладельца файла
# chmod u-s /bin/binary_file
Удалить SUID-бит с файла /bin/binary_file
# chmod g+s /home/public
Установить SGID-бит на директории /home/public
# chmod g-s /home/public
Удалить SGID-бит с директории /home/public
# find / -perm -u+s
Поиск всех файлов с установленным SUID битом, начиная с корня файловой системы
# ls -lh
Листинг текущего каталога с правами доступа

Архивация и сжатие файлов

# gzip -9 file1
Поместить файл file1 в архив gzip с максимальной степенью сжатия
# rar a file1.rar file1 file2 dir1
Создать rar архив file1.rar, заархивировав файлы: file1file2 и директорию: dir1
# rar a file1.rar test_file
Упаковать в rar архив file1.rar файл test_file
# rar x file.rar
Разархивировать rar архив file.rar
# bzip2 file1
Сжимает файл file1
# bunzip2 file1.bz2
Разжимает файл file1.bz2
# gzip file1
Сжимает файл file1
# gunzip file1.gz
Разжимает файл file1.gz
# tar -cvf archive.tar file1 file2 dir1
Создать tar архив archive.tar, упаковав в него файлы file1file2 и директорию dir1
# tar -cvf archive.tar file
Упаковать в tar-архив archive.tar, файл file
# tar -tf archive.tar
Вывести содержимое tar архива