Главная > Операционные системы > 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|headCDROM # 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
Системе нужно объяснить три простые вещи:
В переводе на язык UNIX, это звучит так: mount -t vfat /dev/hda3 /mnt/storage Если нужно часто монтировать одни и те же разделы, занесите их в /etc/fstab - это общесистемный конфиг, в котором указаны все необходимые разделы для монтирования. Редактировать этот файл может не абы кто, а только root. Так что разживитесь рутовыми полномочиями и редактируйте /etc/fstab Файл /etc/fstab состоит из колонок, разделители между колонками параметров - табуляция (клавиша TAB). Вот пример содержимого файла /etc/fstab: /etc/fstab: static file system information.Формат колонок такой:
Ниже приводятся уточнения для каждого случая файловой системы, но идея монтирования разделов в Linux одна и та же. mount -t vfat /dev/hda1 /home/vasya/tempdir ^^^^ ^^^ ^^^^ ^^^^^^^^^^^ После всех операций раздел следует размонтировать, чтобы данные на него записались из памяти - точно так же, как при работе с флешками в Windows. Для этого следует дать команду: $ umount /mnt/XXгде /mnt/XX - точка монтирования. Если ни одно приложение не работает с разделом, то раздел размонтируется отключится и данные на него полностью запишутся. После этого устройство можно безопасно извлечь. Всё очень просто и логично. Как и многое другое в UNIX. Предварительные действия перед монтированием Прежде, чем монтировать разделы, нужно создать точки монтирования. Точки монтирования следует создавать в каталогах /mnt или /media. Для этого даём команду: $ sudo mkdir /mnt/winи даём каталогу права доступа для обычных пользователей: $ sudo 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Пример: монтирование типичной флешки выглядит так $ 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Пример: монтирование раздела 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Пример: монтирование 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Пример: монтирование 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Пример: монтирование раздела с данными выглядит так $ 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Ну и что делать, если раздел в Linux не размонтируется!? Очень просто - посмотреть, какой процесс держит раздел или файл и не даёт отмонтировать его. Дальше либо закрыть это приложение, либо придушить его с помощью команды kill. Даём команду: lsof | grep /mnt/windowsВертикальная черта означает передачу вывода команды lsof программе grep и фильтрации по слову /mnt/windows После этого вы получите ответ вида: lsof | grep /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 |