Главная | Контакты



Главная > Операционные системы > UNIX

Некоторые команды на базе UNIX

Мониторинг и отладка

# top

отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию (с автоматическим обновлением данных)

# ps -eafw

отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию (единожды)

# ps -e -o pid,args -forest

вывести PID'ы и процессы в виде дерева

# pstree

отобразить дерево процессов

# kill -9 98989

"убить" процесс с PID 98989 "на смерть" (без соблюдения целостности данных)

# kill -KILL 98989
# kill -TERM 98989

Корректно завершить процесс с PID 98989

# kill -1 98989

заставить процесс с PID 98989 перепрочитать файл конфигурации

# kill -HUP 98989
# lsof -p 98989

отобразить список файлов, открытых процессом с PID 98989

# lsof /home/user1

отобразить список открытых файлов из директории /home/user1

# strace -c ls >/dev/null

вывести список системных вызовов, созданных и полученных процессом ls

# strace -f -e open ls >/dev/null

вывести вызовы бибилотек

# watch -n1 'cat /proc/interrupts'

отображать прерывания в режиме реального времени

# last reboot

отобразить историю перезагрузок системы

# last user1

отобразить историю регистрации пользователя user1 в системе и время его нахождения в ней

# lsmod

вывести загруженные модули ядра

# free -m

показать состояние оперативной памяти в мегабайтах

# smartctl -A /dev/hda

контроль состояния жёсткого диска /dev/hda через SMART

# smartctl -i /dev/hda

проверить доступность SMART на жёстком диске /dev/hda

# tail /var/log/messages

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

# tail /var/log/dmesg

вывести десять последних записей из журнала загрузки ядра

Другие полезные команды
# apropos :keyword

выводит список комманд, которые так или иначе относятся к ключевым словам. Полезно, когда вы знаете что делает программа, но не помните команду

# man ping

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

# whatis :keyword

отображает описание действий указанной программы

# mkbootdisk -device /dev/fd0 `uname -r`

создаёт загрузочный флоппи-диск

# gpg -c file1

шифрует файл file1 с помощью GNU Privacy Guard

# gpg file1.gpg

дешифрует файл file1 с помощью GNU Privacy Guard

# wget -r www.example.com

загружает рекурсивно содержимое сайта www.example.com

# wget -c www.example.com/file.iso

загрузить файл www.example.com/file.iso с возможностью останова и продолжения в последствии

# echo 'wget -c www.example.com/files.iso' | at 09:00

начать закачку в указанное время

# ldd /usr/bin/ssh

вывести список библиотек, необходимых для работы ssh

# alias hh='history'

назначить алиас hh команде history

# fc-cache -f -v

копируем шрифты в папку /home/"name"/.fonts (или другую) и добавляем их этой командой

# locale -a

cписок всех установленных локалей

# sudo -s
# /usr/share/locales/install-language-pack ru_RU.CP1251
# /usr/share/locales/install-language-pack ru_RU.KOI8-R
# locale-gen

устанавливаем русские локали, если нужно

# env LC_ALL=ru_RU.CP1251 (приложение)

запустить приложение в определенной локали

# env LC_ALL=C (приложение)

запустить приложение в английской локали

Узнать десятку своих самых используемых команд очень просто:
# history|awk '{a[$2]++ } END{for(i in a){print a[i] " " i}}'|sort -rn|head
CDROM
# cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force

clean a rewritable cdrom

# mkisofs /dev/cdrom > cd.iso

create an iso image of cdrom on disk

# mkisofs /dev/cdrom | gzip > cd_iso.gz

create a compressed iso image of cdrom on disk

# mkisofs -J -allow-leading-dots -R -V "Label CD" -iso-level 4 -o ./cd.iso data_cd

create an iso image of a directory

# cdrecord -v dev=/dev/cdrom cd.iso

burn an ISO image

# gzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom -

burn a compressed ISO image

# mount -o loop cd.iso /mnt/iso

mount an ISO image

# cd-paranoia -B

rip audio tracks from a CD to wav files

# cd-paranoia - "-3?

rip first three audio tracks from a CD to wav files

# cdrecord -scanbus

scan bus to identify the channel scsi Системе нужно объяснить три простые вещи:

  1. какая файловая система на разделе;
  2. какой файл-устройство вам нужно;
  3. куда его подключить для просмотра = точка монтирования;
Каталог, в котором вы будете просматривать содержимое ваших разделов, называется точкой монтирования (mount point). Поэтому нужно объяснить системе - командой или через графический интерфейс - что вы хотите смонтировать, куда и что за файловая система на этом разделе.

В переводе на язык UNIX, это звучит так:
mount -t vfat /dev/hda3 /mnt/storage

Если нужно часто монтировать одни и те же разделы, занесите их в /etc/fstab - это общесистемный конфиг, в котором указаны все необходимые разделы для монтирования. Редактировать этот файл может не абы кто, а только root. Так что разживитесь рутовыми полномочиями и редактируйте /etc/fstab

Файл /etc/fstab состоит из колонок, разделители между колонками параметров - табуляция (клавиша TAB). Вот пример содержимого файла /etc/fstab:
/etc/fstab: static file system information.


/dev/hda2 / reiserfs notail,noatime 0 1
/dev/hdb /mnt/cdrom iso9660 ro,user,noauto 0 0
/dev/sda1 /mnt/flash vfat iocharset=koi8-r,codepage=866,rw,user,auto 0 0


Формат колонок такой:
  • Монтируемое устройство (файл-устройство, он же раздел, который вы хотите примонтировать).
  • Точка монтирования (в какую директорию в файловой системе монтировать, точка монтирования).
  • Тип монтируемой файловой системы.
  • Опции монтирования (кодировка языка, необходимость монтирования при старте).
  • Dump (обычно 0).
  • Pass (обычно 0).
Важно, чтобы вы вставляли Тab после каждой колонки при редактировании /etc/fstab

Ниже приводятся уточнения для каждого случая файловой системы, но идея монтирования разделов в Linux одна и та же.

mount -t vfat /dev/hda1 /home/vasya/tempdir

^^^^ ^^^ ^^^^ ^^^^^^^^^^^
прикрутить тип FAT что прикрутить куда это прикрутить


Пишем буквально то, чего хотим: от имени суперпользователя, прикрутить логическую структуру с файловой системой FAT, находящуюся в файле /dev/hda1, к каталогу /home/vasya/tempdir.

После всех операций раздел следует размонтировать, чтобы данные на него записались из памяти - точно так же, как при работе с флешками в Windows. Для этого следует дать команду:
$ umount /mnt/XX
или
$ sudo umount /mnt/XX

где /mnt/XX - точка монтирования. Если ни одно приложение не работает с разделом, то раздел размонтируется отключится и данные на него полностью запишутся. После этого устройство можно безопасно извлечь.

Всё очень просто и логично. Как и многое другое в UNIX.


Предварительные действия перед монтированием

Прежде, чем монтировать разделы, нужно создать точки монтирования. Точки монтирования следует создавать в каталогах /mnt или /media. Для этого даём команду:
$ sudo mkdir /mnt/win
или
mkdir /mnt/win
и даём каталогу права доступа для обычных пользователей:
$ sudo chmod 777 /mnt/win
или
chmod 777 /mnt/win
Это позволит считывать и записывать данные не только суперпользователю-руту, но и обычному пользователю. Даже если в системе вы - единственный пользователь. Свою точку монтирования в директории /mnt нужно создать для каждого раздела.

Далее приводятся описания нескольких типичных случаев монтирования разделов и файлов.


Как примонтировать раздел с файловой системой FAT в Linux
Самое главное здесь - кодировка. Замечательная корпорация Microsoft изобрела свою собственную кодировку CP866 для MS DOS, CP1251 для Windows и только в последнее время прозрела до UTF8. Благодарим Microsoft за изобретение велосипеда с треугольными колёсами и приступаем к монтированию.

Однократное монтирование FAT
Временное, однократное монтирование, например, флешки, выглядит в командной строке так:
$ sudo mount -t vfat /dev/XX /mnt/YY -o iocharset=utf8,codepage=cp866
или
mount -t vfat /dev/XX /mnt/YY -o iocharset=utf8,codepage=cp866
Пример: монтирование типичной флешки выглядит так
$ sudo mount -t vfat /dev/sda1 /mnt/flash -o iocharset=utf8,codepage=cp866
То есть монтируем раздел /dev/sda1 типа vfat в точку монтирования /mnt/flash


Постоянное монтирование FAT
Если нужно постоянно обращаться к этим разделам, правим /etc/fstab добавляя строку:
/dev/XX /mnt/YY vfat iocharset=utf8,codepage=866,user,rw 0 0
Пример: та же типичная флешка в /etc/fstab смотрится так
/dev/sda1 /mnt/flash vfat iocharset=utf8,codepage=866,user,rw 0 0
То есть монтируем раздел /dev/sda1 типа vfat в точку монтирования /mnt/flash После этого раздел FAT в Linux будет доступен. Отмонтирование по команде umount /mnt/flash
Как правильно говорят в комментариях, iocharset совпадает с текущей локалью - например, iocharset=utf8.



Как примонтировать раздел с файловой системой NTFS в Linux
Кодировка в NTFS нормальная, но здесь нас ждёт другая засада. Замечательная корпорация Microsoft изобрела не просто новый велосипед с треугольными колёсами, а ещё и закрыла его, треугольноколесатого велокактуса, описание. Да так, что пришлось очень долго его взламывать и создавать драйвера обратной разработкой. О сложности проблемы даёт понять описание дефрагментации NTFS, что, как говорится, внушает.

Но с этим надо жить, и это всё монтировать. Монтировать и записывать на NTFS в Linux, тем не менее, возможно, благодаря героическим усилиям ребят, создавших драйвер NTFS-3g. Этот драйвер можно установить командой:
aptitude install ntfs-3g
или поискать пакет ntfs-3g в графической оболочке установки программ вашего любимого дистрибутива.


Однократное монтирование NTFS
Временное, однократное монтирование, например, раздела с данными Windows, выглядит так:
$ sudo mount -t ntfs-3g /dev/XX /mnt/YY -o umask=0,nls=utf-8
или
mount -t ntfs-3g /dev/XX /mnt/YY -o umask=0,nls=utf-8
Пример: монтирование раздела Windows с NTFS разделом выглядит так
$ sudo mount -t ntfs-3g /dev/sda1 /mnt/flash -o umask=0,nls=utf-8
То есть монтируем раздел /dev/sda1 типа
ntfs-3g в точку монтирования /mnt/flash



Постоянное монтирование NTFS
Если нужно постоянно обращаться к этим разделам, правим /etc/fstab добавляя строку:
/dev/XX /mnt/YY ntfs-3g umask=0,nls=utf-8,user,auto,rw 0 0
Пример: та же типичная флешка в /etc/fstab смотрится так
/dev/sda1 /mnt/windows ntfs-3g umask=0,nls=utf-8,user,auto,rw 0 0
То есть монтируем раздел /dev/sda1 типа ntfs-3g в точку монтирования /mnt/windows После этого раздел NTFS в Linux будет доступен. Отмонтирование по команде umount /mnt/windows



Как примонтировать CD/DVD диск в Linux
Всё проще - скорее всего, это уже сделано в вашем дистрибутиве. Тем не менее, привожу это здесь для примера.

Однократное монтирование CD/DVD
Временное, однократное монтирование, например, DVD-диска с данными в Linux, вглядит так:
$ sudo mount -t iso9660 /dev/XX /mnt/YY
или
mount -t iso9660 /dev/XX /mnt/YY
Пример: монтирование DVD-диска с данными выглядит так
$ sudo mount -t iso9660 /dev/cdrom /mnt/dvd
То есть монтируем раздел /dev/cdrom типа iso9660 в точку монтирования /mnt/dvd


Постоянное монтирование CD/DVD
Если нужно постоянно обращаться к этим разделам, правим /etc/fstab добавляя строку:
/dev/XX /mnt/YY iso9660 umask=0,nls=utf-8,user,ro 0 0
Пример: та же типичная флешка в /etc/fstab смотрится так
/dev/cdrom /mnt/cdrom iso9660 umask=0,nls=utf-8,user,ro 0 0
То есть монтируем раздел /dev/cdrom типа iso9660 в точку монтирования /mnt/cdrom После этого оптический диск в Linux будет доступен. Отмонтирование по команде umount /mnt/cdrom



Как примонтировать ISO-файл или другой файл в Linux
Вы откуда-то скачали ISO-файл и хотите просмотреть его содержимое. Для этого в Windows есть такой костыль под названием Alcohol. В Linux и вообще в UNIX такие костыли не требуются, так как монтирование ISO-образа ничем для системы не отличается от монтирования CD/DVD-диска. Нужно только передать один параметр -o loop чтобы сообщить системе, что монтировать мы собираемся на петлевое устройство (loopback). Если делать это надо много и часто, можно воспользоваться программой GmountISO, описанной в _cornelius.net.ru/2008/05/03/gmountiso/

Для монтирования ISO-образа в командной строке даём команду:
$ sudo mount -t iso9660 file.iso /mnt/YY -o loop
или
mount -t iso9660 file.iso /mnt/YY -o loop
Пример: монтирование DVD-диска с данными выглядит так
$ sudo mount -t iso9660 file.iso /mnt/dvd -o loop
То есть монтируем файл file.iso типа iso9660 в точку монтирования /mnt/dvd на петлевое устройство loop
Точно так же можно монтировать любой CD/DVD образ, а так же файл-образы сжатых\зашифрованных\экзотических файловых систем типа SquashFS. Отмонтирование по команде umount /mnt/dvd



Как примонтировать раздел с файловой системой EXT2/EXT3/ReiserFS/XFS/JFS... в Linux
Монтирование нормальных файловых систем проблем не создаёт. Приведу пример только с ext3, остальные файловые системы в Linux монтируются точно так же, только вместо ext3 подставьте буквально: ext2, reiserfs, xfs, jfs в зависимости от вашей файловой системы.

Однократное монтирование
Временное, однократное монтирование, например, флешки, выглядит в командной строке так:
$ sudo mount -t ext3 /dev/XX /mnt/YY
или
mount -t
ext3 /dev/XX /mnt/YY
Пример: монтирование раздела с данными выглядит так
$ sudo mount -t ext3 /dev/sda1 /mnt/data
То есть монтируем раздел /dev/sda1 типа ext3 в точку монтирования /mnt/data


Постоянное монтирование
Если нужно постоянно обращаться к этим разделам, правим /etc/fstab добавляя строку:
/dev/XX /mnt/YY ext3 user,auto,rw 0 0
Пример: та же типичная флешка в /etc/fstab смотрится так
/dev/sda1 /mnt/data ext3 user,auto,rw 0 0
То есть монтируем раздел /dev/sda1 типа
ext3 в точку монтирования /mnt/data После этого раздел EXT3 в Linux будет доступен. Отмонтирование по команде umount /mnt/data



Что делать, если устройство в Linux не хочет размонтироваться!?
Вы пытаетесь размонтировать раздел с данными (флешка, CD/DVD диск...) и получаете сообщение с ошибкой - устройство занято. Например, при выполнении команды umount /mnt/windows получаете сообщение вида:
umount /mnt/windows
umount: /mnt/windows: device is busy
umount: /mnt/windows: device is busy

Ну и что делать, если раздел в Linux не размонтируется!? Очень просто - посмотреть, какой процесс держит раздел или файл и не даёт отмонтировать его. Дальше либо закрыть это приложение, либо придушить его с помощью команды kill. Даём команду:
lsof | grep /mnt/windows
Вертикальная черта означает передачу вывода команды lsof программе grep и фильтрации по слову /mnt/windows
После этого вы получите ответ вида:
 lsof | grep /mnt/windows
lsof: WARNING: cant stat() reiserfs file system /dev/.static/dev
Output information may be incomplete.
mc 14134 beast cwd DIR 8,1 4096 1 /mnt/windows

Стало быть, ваш раздел держит MC (Midnight Commander), который вы скорее всего открыли на другом рабочем столе и просто забыли о нём. Найдите это приложение, закройте его и отмонтируйте раздел снова - теперь проблема должна быть решена.
IPTABLES (firewall)
# iptables -t filter -nL

отобразить все цепочки правил

# iptables -nL
# iptables -t nat -L

отобразить все цепочки правил в NAT-таблице

# iptables -t filter -F

очистить все цепочки правил в filter-таблице

# iptables -F
# iptables -t nat -F

очистить все цепочки правил в NAT-таблице

# iptables -t filter -X

удалить все пользовательские цепочки правил в filter-таблице

# iptables -t filter -A INPUT -p tcp -dport telnet -j ACCEPT

позволить входящее подключение telnet'ом

# iptables -t filter -A OUTPUT -p tcp -dport http -j DROP

блокировать исходящие HTTP-соединения

# iptables -t filter -A FORWARD -p tcp -dport pop3 -j ACCEPT

позволить "прокидывать" (forward) POP3-соединения

# iptables -t filter -A INPUT -j LOG -log-prefix "DROP INPUT"

включить журналирование ядром пакетов, проходящих через цепочку INPUT, и добавлением к сообщению префикса "DROP INPUT"

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

включить NAT (Network Address Translate) исходящих пакетов на интерфейс eth0. Допустимо при использовании с динамически выделяемыми ip-адресами.

# iptables -t nat -A PREROUTING -d 192.168.0.1 -p tcp -m tcp -dport 22 -j DNAT -to-destination 10.0.0.2:22

перенаправление пакетов, адресованных одному хосту, на другой хост

# shutdown -h now

Остановить систему

init 0
telinit 0
shutdown -h hours:minutes &

запланировать остановку системы на указанное время

# shutdown -c

отменить запланированную по расписанию остановку системы

# shutdown -r now

перегрузить систему

reboot[/doc
[doc]logout

]выйти из системы

# find / -name file1

найти файлы и директории с именем file1. Поиск начать с корня (/)

# find / -user user1

найти файл и директорию принадлежащие пользователю user1. Поиск начать с корня (/)

# find /home/user1 -name "*.bin"

Найти все файлы и директории, имена которых оканчиваются на '. bin'. Поиск начать с '/ home/user1?

# find /usr/bin -type f -atime +100

найти все файлы в '/usr/bin', время последнего обращения к которым более 100 дней

# find /usr/bin -type f -mtime -10

найти все файлы в '/usr/bin', созданные или изменённые в течении последних 10 дней

# find / -name *.rpm -exec chmod 755 '{}' \;

найти все фалы и директории, имена которых оканчиваются на '.rpm', и изменить права доступа к ним

# find / -xdev -name "*.rpm"

найти все фалы и директории, имена которых оканчиваются на '.rpm', игнорируя съёмные носители, такие как cdrom, floppy и т.п.

# locate "*.ps"

найти все файлы, сожержащие в имени '.ps'. Предварительно рекомендуется выполнить команду 'updatedb'

# whereis halt

показывает размещение бинарных файлов, исходных кодов и руководств, относящихся к файлу 'halt'

# which halt

отображает полный путь к файлу 'halt'

# mount /dev/hda2 /mnt/hda2

монтирует раздел 'hda2? в точку монтирования '/mnt/hda2?. Убедитесь в наличии директории-точки монтирования '/mnt/hda2?

# umount /dev/hda2

размонтирует раздел 'hda2?. Перед выполнением, покиньте '/mnt/hda2?

# fuser -km /mnt/hda2

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

# umount -n /mnt/hda2

выполнить размонитрование без занесения информации в /etc/mtab. Полезно когда файл имеет атрибуты "только чтение" или недостаточно места на диске

# mount /dev/fd0 /mnt/floppy

монтировать флоппи-диск

# mount /dev/cdrom /mnt/cdrom

монтировать CD или DVD

# mount /dev/hdc /mnt/cdrecorder

монтировать CD-R/CD-RW или DVD-R/DVD-RW(+-)

# mount -o loop file.iso /mnt/cdrom

смонтировать ISO-образ

# mount -t vfat /dev/hda5 /mnt/hda5

монтировать файловую систему Windows FAT32

# mount -t smbfs -o username=user,password=pass //winclient/share /mnt/share

монтировать сетевую файловую систему Windows (SMB/CIFS)

# mount -o bind /home/user/prg /var/ftp/user

"монтирует" директорию в директорию (binding). Доступна с версии ядра 2.4.0. Полезна, например, для предоставления содержимого пользовательской директории через ftp при работе ftp-сервера в "песочнице" (chroot), когда симлинки сделать невозможно. Выполнение данной команды сделает копию содержимого /home/user/prg в /var/ftp/user

Системная информация
# arch 	 или      uname -m

отобразить архитектуру компьютера

# uname -r

отобразить используемую версию ядра

# dmidecode -q

показать аппаратные системные компоненты - (SMBIOS / DMI)

# hdparm -i /dev/hda

вывести характеристики жесткого диска

# hdparm -tT /dev/sda

протестировать производительность чтения данных с жесткого диска

# cat /proc/cpuinfo

отобразить информацию о процессоре

# cat /proc/interrupts

показать прерывания

# cat /proc/meminfo

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

# cat /proc/swaps

показать файл(ы) подкачки

# cat /proc/version

вывести версию ядра

# cat /proc/net/dev

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

# cat /proc/mounts

отобразить смонтированные файловые системы

# lspci -tv

показать в виде дерева PCI устройства

# lsusb -tv

показать в виде дерева USB устройства

# date

вывести системную дату

# cal 2008

вывести таблицу-календарь 2008-го года

# date 071217002008.00

установить системные дату и время ММДДЧЧммГГГГ.СС (МесяцДеньЧасМинутыГод.Секунды)

# clock -w

сохранить системное время в BIOS


Главная > Операционные системы > UNIX