вторник, 28 августа 2012 г.



 echo 1 > /sys/class/fc_host/host1/issue_lip
 echo "- - -" > /sys/class/scsi_host/host1/scan
 echo 1 > /sys/class/fc_host/host2/issue_lip
 echo "- - -" > /sys/class/scsi_host/host2/scan
 vxdisk list
 vxdctl enable
 vxdisk list
 vxdisksetup -i sd***
 vxdg -g  my-dg  adddisk sd***
 vxdisk list
 vxassist -g   my-dg    maxgrow my-vol
 vxassist -g   my-dg   growby&to   my-vol   1111111
 /opt/VRTS/bin/fsadm -b 1111111 /san_mnt/disk

понедельник, 27 августа 2012 г.

Уровни очередей (Queues) при работе виртуальных машин с хранилищами VMware vSphere.

17/07/2012 
http://www.vmgu.ru/news/vmware-vsphere-queue-levels
Пост:
Мы уже не раз писали о различных типах очередей ввода-вывода, присутствующих на различных уровнях в VMware vSphere, в частности, в статье "Глубина очереди (Queue Depth) и адаптивный алгоритм управления очередью в VMware vSphere". Недавно на блогах компании VMware появилсяхороший пост, упорядочивающий знания об очередях ввода-вывода на различных уровнях виртуальной инфраструктуры.
Если речь идет о виртуальных машинах на сервере VMware ESXi, работающих с дисковым массивом, можно выделить 5 видов очередей:
  • GQLEN (Guest Queue) - этот вид очередей включает в себя различные очереди, существующие на уровне гостевой ОС. К нему можно отнести очереди конкретного приложения, очереди драйверов дисковых устройств в гостевой ОС и т.п.
  • WQLEN (World Queue/ Per VM Queue) - это очередь, существующая для экземпляра виртуальной машины (с соответствующим World ID), которая ограничивает единовременное число операций ввода-вывода (IOs), передаваемое ей.
  • AQLEN (Adapter Queue) - очередь, ограничивающая одновременное количество обрабатываемых на одном HBA-адаптере хоста ESXi команд ввода вывода.
  • DQLEN (Device Queue / Per LUN Queue) - это очередь, ограничивающая максимальное количество операций ввода-вывода от хоста ESXi к одному LUN (Datastore).
  • SQLEN (Storage Array Queue) - очередь порта дискового массива (Storage Processor, SP)
Эти очереди можно выстроить в иерархию, которая отражает, на каком уровне они вступают в действие:

Очереди GQLEN бывают разные и не относятся к стеку виртуализации VMware ESXi, поэтому мы рассматривать их не будем. Очереди SQLEN мы уже частично касались тут и тут. Если до SP дискового массива со стороны сервера ESX / ESXi используется один активный путь, то глубина очереди целевого порта массива (SQLEN) должна удовлетворять следующему соотношению:
SQLEN>= Q*L
где Q - это глубина очереди на HBA-адаптере, а L - число LUN, обслуживаемых SP системы хранения. Если у нас несколько активных путей к одному SP правую часть неравенства надо еще домножить на P - число путей.
Соответственно, в виртуальной инфраструктуре VMware vSphere у нас несколько хостов имеют доступ к одному LUN через его SP и получается следующее соотношение:
SQLEN>= ESX1 (Q*L*P) + ESX2 (Q*L*P)+ и т.д.
Теперь рассмотрим 3 оставшиеся типа очередей, которые имеют непосредственное отношение к хосту VMware ESXi:

Как мы видим из картинки - очереди на различных уровнях ограничивают число I/O, которые могут быть одновременно обработаны на различных сущностях:
  • Длина очереди WQLEN по умолчанию ограничена значением 32, что не позволяет виртуальной машине выполнять более 32-х I/O одновременно.
  • Длина очереди AQLEN - ограничена значением 1024, чтобы собирать в себя I/O от всех виртуальных машин хоста.
  • Длина очереди DQLEN - ограничена значением 30 или 32, что не позволяет "выедать" одному хосту ESXi с одного хранилища (LUN) более 30-ти или 32-х операций ввода-вывода
Все эти очереди можно посмотреть с помощью esxtop:

Зачем вообще нужны очереди? Очень просто - очередь это естественный способ ограничить использование общего ресурса. То есть одна виртуальная машина не заполонит своими командами ввода-вывода весь HBA-адаптер, а один хост ESXi не съест всю производительность у одного Datastore (LUN), так как ограничен всего 32-мя I/O к нему.
Мы уже писали о функционале Storage I/O Control (SIOC), который позволяет регулировать последний тип очереди, а именно DQLEN, что позволяет корректно распределить нагрузку на СХД между сервисами в виртуальных машинах в соответствии с их параметрами shares (эта функциональность есть только в издании vSphere Enterprise Plus). Механизм Storage IO Control для хостов VMware ESX включается при превышении порога latency для тома VMFS, определяемого пользователем. Однако, стоит помнить, что механизм SIOC действует лишь в пределах максимально определенного значения очереди, то есть по умолчанию не может выйти за пределы 32 IO на LUN от одного хоста.
Для большинства случаев этого достаточно, однако иногда требуется изменить обозначенные выше длины очередей, чтобы удовлетворить требования задач в ВМ, которые генерируют большую нагрузку на подсистему ввода-вывода. Делается это следующими способами:
1. Настройка длины очереди WQLEN.
Значение по умолчанию - 32. Его задание описано в статье KB 1268. В Advanced Settings хоста ESXi нужно определить следующий параметр:
Disk.SchedNumReqOutstanding (DSNRO)
Он глобально определяет, сколько операций ввода-вывода (IOs) может максимально выдать одна виртуальная машина на LUN одновременно. В то же время, он задает это максимальное значение в IOs для всех виртуальных машин на этот LUN от хоста ESXi (это глобальная для него настройка). То есть, если задано значение 32, то все машины могут одновременно выжать 32 IOs, это подтверждается в случае, где 3 машины генерируют по 32 одновременных IO к одному LUN, а реально к LUN идут все те же 32, а не 3*32.
2. Настройка длины очереди AQLEN.
Как правило, этот параметр менять не требуется, потому что дефолтного значения 1024 хватает практически для всех ситуаций. Где его менять, я не знаю, поэтому если знаете вы - можете написать об этом в комментариях.
3. Настройка длины очереди DQLEN.
Настройка этого параметра описана в KB 1267 (мы тоже про это писали) - она зависит от модели и драйвера HBA-адаптера (в KB информация актуальна на июнь 2010 года). Она взаимосвязана с настройкой Disk.SchedNumReqOutstanding и, согласно рекомендациям VMware, должна быть эквивалентна ей. Если эти значения различаются, то когда несколько ВМ используют с хоста ESXi один LUN - актуальной длиной очереди считается минимальное из этих значений.
Для отслеживания текущих значений очередей можно использовать утилиту esxtop, как описано в KB 1027901.

Метрики производительности процессора в утилите esxtop для VMware vSphere.

19/07/2012 
http://www.vmgu.ru/news/vmware-vsphere-esxtop-cpu

Пост:
Мы уже касались некоторых аспектов мониторинга производительности с помощью утилиты esxtop, которая есть на сервере VMware ESXi, а также метрик производительности хранилищ (и немного сетевого взаимодействия). Сегодня мы более детально взглянем на метрики производительности процессора (CPU) для контроля нагрузки виртуальных машин.
Если мы запустим утилиту esxtop, то увидим следующие столбцы (интересующее нас выделено красным):

Нас интересует 5 счетчиков, касающиеся процессоров виртуальных машин, с помощью которых мы сможем сделать выводы об их производительности. Рассмотрим их подробнее:
Счетчик %RUN
Этот счетчик отображает процент времени, в течение которого виртуальная машина исполнялась в системе. Когда этот счетчик для ВМ около нуля или принимает небольшие значение - то с производительностью процессора все в порядке (при большом его значении для idle). Однако бывает так, что он небольшой, а виртуальная машина тормозит. Это значит, что она заблокирована планировщиком ESXi или ей не выделяется процессорного времени в связи с острой нехваткой процессорных ресурсов на сервере ESXi. В этом случае надо смотреть на другие счетчики (%WAIT, %RDY и %CSTP).
Если значение данного счетчика равно <Число vCPU машины> x 100%, это значит, что в гостевой ОС виртуальной машины процессы загрузили все доступные процессорные ресурсы ее vCPU. То есть необходимо зайти внутрь ВМ и исследовать проблему.
Счетчики %WAIT и %VMWAIT
Счетчик %WAIT отображает процент времени, которое виртуальная машина ждала, пока ядро ESXi (VMkernel) выполняло какие-то операции, перед тем, как она смогла продолжить выполнение операций. Если значение этого счетчика значительно больше значений %RUN, %RDY и %CSTP, это значит, что виртуальная машина дожидается окончания какой-то операции в VMkernel, например, ввода-вывода с хранилищем. В этом случае значение счетчика %SYS, показывающего загрузку системных ресурсов хоста ESXi, будет значительно выше значения %RUN.
Когда вы видите высокое значение данного счетчика, это значит, что нужно посмотреть на производительность хранилища виртуальной машины, а также на остальные периферийные устройства виртуального "железа". Зачастую, примонтированный ISO-образ, которого больше нет на хранилище, вызывает высокое значение счетчика. Это же касается примонтированных USB-флешек и других устройств ВМ.
Не надо пугаться высокого значения %WAIT, так как оно включает в себя счетчик %IDLE, который отображает простой виртуальной машины. А вот значение счетчика %VMWAIT - уже более реальная метрика, так как не включает в себя %IDLE, но включает счетчик %SWPWT (виртуальная машина ждет, пока засвопированные таблицы будут прочитаны с диска; возможная причина - memory overcommitment). Таким образом, нужно обращать внимание на счетчик %VMWAIT. К тому же, счетчик %WAIT представляет собой сумму метрик различных сущностей процесса виртуальной машины:

Счетчик %RDY
Главный счетчик производительности процессора. Означает, что виртуальная машина (гостевая ОС) готова исполнять команды на процессоре (ready to run), но ожидает в очереди, пока процессоры сервера ESXi заняты другой задачей (например, другой ВМ). Является суммой значений %RDY для всех отдельных виртуальных процессоров ВМ (vCPU). Обращать внимание на него надо, когда он превышает пороговое значение 10%.
По сути, есть две причины, по которым данный счетчик может зашкаливать приведенное пороговое значение:
  • сильная нагрузка на физические процессоры из-за большого количества виртуальных машин и нагрузок в них (здесь просто надо уменьшать нагрузку)
  • большое количество vCPU у конкретной машины. Ведь виртуальные процессоры машин на VMware ESX работают так: если у виртуальной машины 4 vCPU, а на хосте всего 2 физических pCPU, то одна распараллеленная операция (средствами ОС) будет исполняться за в два раза дольший срок. Естественно, 4 и более vCPU для виртуальной машины может привести к существенным задержкам в гостевой ОС и высокому значению CPU Ready. Кроме того, в некоторых случаях нужен co-sheduling нескольких виртуальных vCPU (см. комментарии к статье), когда должны быть свободны столько же pCPU, это, соответственно, тоже вызывает задержки (с каждым vCPU ассоциирован pCPU). В этом случае необходимо смотреть значение счетчика %CSTP
Кроме того, значение счетчика %RDY может быть высоким при установленном значении CPU Limit в настройках виртуальной машины или пула ресурсов (в этом случае посмотрите счетчик %MLMTD, который при значении больше 0, скорее всего, говорит о достижении лимита). Также посмотрите вот этот документ VMware.
Счетчик %CSTP
Этот счетчик отображает процент времени, когда виртуальная машина готова исполнять команды, одна вынуждена ждать освобождения нескольких vCPU при использовании vSMP для одновременного исполнения операций. Например, когда на хосте ESXi много виртуальных машин с четырьмя vCPU, а на самом хосте всего 4 pCPU могут возникать такие ситуации с простоем виртуальных машин для ожидания освобождения процессоров. В этом случае надо либо перенести машины на другие хосты ESXi, либо уменьшить у них число vCPU.
В итоге мы получаем следующую формулу (она верна для одного из World ID одной виртуальной машины)
%WAIT + %RDY + %CSTP + %RUN = 100%
То есть, виртуальная машина либо простаивает и ждет сервер ESXi (%WAIT), либо готова исполнять команды, но процессор занят (%RDY), либо ожидает освобождения нескольких процессоров одновременно (%CSTP), либо, собственно, исполняется (%RUN).

Git How To

Глубина очереди (Queue Depth) и адаптивный алгоритм управления очередью в VMware vSphere.

Глубина очереди (Queue Depth) и адаптивный алгоритм управления очередью в VMware vSphere.

20/06/2011 
http://www.vmgu.ru/news/vmware-esx-queue-depth-dsnro-san

Пост:
Как знают администраторы систем хранения данных, у различных компонентов SAN-сети есть такой параметр как глубина очереди (Queue Depth). Он есть у HBA-адаптера сервера (на котором, например, работает VMware ESX / ESXi) и у порта Storage Processor'а системы хранения (SP). Глубина очереди определяет сколько операций ввода-вывода (IO) может быть одновременно обработано на устройстве.

Как мы уже писали, если до SP со стороны сервера ESX / ESXi используется один активный путь, то глубина очереди целевого порта массива (T) должна удовлетворять следующему соотношению:
T >= Q*L,
где Q - это глубина очереди на HBA-адаптере, а L - число LUN, обслуживаемых SP системы хранения. Если у нас несколько активных путей к одному SP правую часть неравенства надо еще домножить на P - число путей.
Соответственно, в виртуальной инфраструктуре VMware vSphere у нас несколько хостов имеют доступ к одному LUN через его SP и получается следующее соотношение:
T>= ESX1 (Q*L*P) + ESX2 (Q*L*P)+ и т.д.
Queue Depth на серверах
По умолчанию, для хостов VMware ESX / ESXi значение Queue Depth равно 32, как его изменить, читайте у нас тут и вот тут. Теперь внимание: этот параметр имеет значение только когда у вас только одна виртуальная машина на хост-сервере использует конкретный LUN. Если его используют уже 2 машины, то он игнорируется, а в действие вступает следующая расширенная настройка (Advanced Setting - как его задаватьописано тут):
Disk.SchedNumReqOutstanding (DSNRO)
Этот параметр также по умолчанию равен 32. Он глобально определяет, сколько операций ввода-вывода (IOs) может максимально выдать одна виртуальная машина на LUN одновременно. В то же время, он задает это максимальное значение в IOs для всех виртуальных машин на этот LUN. То есть, если задано значение 32, то все машины могут одновременно выжать 32 IOs, это подтверждается в статье Jason Boche, где 3 машины генерируют по 32 одновременных IO к одному LUN, а реально к LUN идут все те же 32, а не 3*32:

Здесь видно, что активно выполняется 30 команд (максимально 32) для параметра DQLEN, а остальные 67 остаются в очереди. То есть параметр определяет максимальную планку в IO как для одной машины на LUN, так и для всех машин на LUN.
Важно, чтобы параметры Queue Depth и DSNRO были установлены в одно и то же значение. Это рекомендация VMware. Так что, если вздумаете изменить один из них - не забудьте и про второй. И помните, что параметр DSNRO для хоста - глобальный, а значит будет применяться ко всем LUN, подключенным к хосту.
Target Port Queue Depth на массивах
Для дискового массива (а точнее, SP) очередь - это то, куда он сладывает SCSI-команды в то время, пока обрабатывается и выполняется пачка предыдущих. Нормальный midrange-массив имеет глубину очереди 2048 и более. Если массив получает в очередь команд IO больше значения Target Port Queue Depth, то он назад выдает команду QFULL, которая означает, что очередь заполнена и хост-серверу нужно с этим что-то делать. VMware ESX / ESXi реагирует на это следующим образом - он уменьшает очередь на LUN и периодически (каждые 2 секунды) проверяет, не исчезло ли QFULL, и если исчезло, то начинает постепенно увеличивать глубину очереди для этого LUN (это может занять до одной минуты). Это и есть причины тормозов, которые часто возникают у пользователей VMware ESX / ESXi.
Как управлять очередью и адаптивный алгоритм VMware
Теперь становится понятным, почему мы сразу не выставляем параметр Disk.SchedNumReqOutstanding на хостах VMware ESX / ESXi в максимальное значение - мы можем вызвать QFULL на SP массива. С другой стороны, уменьшать его тоже нехорошо - мы ограничим количество операций IO с хоста на LUN.
Поэтому здесь нужен гибкий подход и он есть у VMware (adaptive queue depth algorithm). Работает он таким образом: мы его активируем с помощью параметров Disk.QFullSampleSize и Disk.QFullThreshold в Advanced Settings. Они влияют вот на что:
  • QFullSampleSize - если число число ответов QFULL (оно же BUSY) превысит его, то ESX / ESXi наполовину обрежет глубину очереди (LUN queue depth)
  • QFullThreshold - если число ответов о том, что QFULL или BUSY больше нет, превысит его, то ESX / ESXi будет постепенно увеличивать LUN queue depth на 1 (вроде бы, каждые 2 секунды).
Но сколько бы не уменьшалось DQLEN - ниже заданного нами значения DSNRO оно не упадет. Это защищает нас от неожиданного провала в производительности. Кстати, эти параметры тоже глобальные - так что если один (например, тормозящий) массив с хоста будет подвергаться такому адаптивному эффекту со стороны ESX / ESXi, то и для другого (например, производительного) тоже будут выполняться такие фокусы.
Теперь, что дополнительно можно почитать на эту тему:
То есть мораль всей басни такова - дефолтные зачения DSNRO и Queue Depth подходят для большинства случаев. Но иногда имеет смысл изменить их. Но в этом случае надо учитывать параметры системы хранения данных, структуру SAN, количество LUN и другие параметры, влияющие на производительность ввода-вывода.

Tuning VxFS I/O parameters


Tuning VxFS I/O parameters

VxFS provides a set of tunable I/O parameters that control some of its behavior. These I/O parameters are useful to help the file system adjust to striped or RAID-5 volumes that could yield performance superior to a single disk. Typically, data streaming applications that access large files see the largest benefit from tuning the file system.
VxVM queries
VxVM receives the following queries during configuration:
  • The file system queries VxVM to determine the geometry of the underlying volume and automatically sets the I/O parameters.
  • VxVM is queried by mkfs when the file system is created to align automatically the file system to the volume geometry. If the default alignment from mkfs is not acceptable, the -o align=n option can be used to override alignment information obtained from VxVM.
The mount command queries VxVM when the file system is mounted and downloads the I/O parameters.If the default parameters are not acceptable or the file system is being used without VxVM, then the/etc/vx/tunefstab file can be used to set values for I/O parameters. The mount command reads the /etc/vx/tunefstab file and downloads any parameters specified for a file system. The tunefstab file overrides any values obtained from VxVM. While the file system is mounted, any I/O parameters can be changed using the vxtunefs command which can have tunables specified on the command line or can read them from the/etc/vx/tunefstab file. For more details,
See the vxtunefs(1M) and tunefstab(4) manual pages.
The vxtunefs command can be used to print the current values of the I/O parameters.
 To print the values
vxtunefs -p mount_point
The following is an example tunefstab file:
/dev/vx/dsk/userdg/netbackup
read_pref_io=128k,write_pref_io=128k,read_nstream=4,write_nstream=4
/dev/vx/dsk/userdg/metasave
read_pref_io=128k,write_pref_io=128k,read_nstream=4,write_nstream=4
/dev/vx/dsk/userdg/solbuild
read_pref_io=64k,write_pref_io=64k,read_nstream=4,write_nstream=4
/dev/vx/dsk/userdg/solrelease
read_pref_io=64k,write_pref_io=64k,read_nstream=4,write_nstream=4
/dev/vx/dsk/userdg/solpatch
read_pref_io=128k,write_pref_io=128k,read_nstream=4,write_nstream=4

http://sfdoccentral.symantec.com/sf/5.0/linux/html/fs_admin/ag_ch_performance_fs23.html#120378

Показывает все заблокированные объекты в пределах кластера


SELECT B.INST_ID,
       B.SESSION_ID AS SID,
       NVL(B.ORACLE_USERNAME, '(ORACLE)') AS USERNAME,
       A.OWNER AS OBJECT_OWNER,
       A.OBJECT_NAME,
       DECODE(B.LOCKED_MODE, 0, 'None',
                             1, 'Null (NULL)',
                             2, 'Row-S (SS)',
                             3, 'Row-X (SX)',
                             4, 'Share (S)',
                             5, 'S/Row-X (SSX)',
                             6, 'Exclusive (X)',
                             B.LOCKED_MODE) LOCKED_MODE,
       B.OS_USER_NAME
FROM   DBA_OBJECTS A,
       GV$LOCKED_OBJECT B
WHERE  A.OBJECT_ID = B.OBJECT_ID
ORDER BY 1, 2, 3, 4;
Действие / информацияКоманда / файл
Запуск/usr/openv/netbackup/bin/goodies/netbackup start
Остановка/usr/openv/netbackup/bin/goodies/bp.kill_all
Посмотреть список активных процессов/usr/openv/netbackup/bin/bpps -a
Запустить текстовый интерфейс управления/usr/openv/netbackup/bin/bpadm
Запустить графический интерфейс управления/usr/openv/netbackup/bin/jnbSA
(Должна быть установлена переменная DISPLAY)
Посмотреть логtail -100f /usr/openv/netbackup/db/error/daily_messages.log
Также нужно смотреть системный лог
# Остановим NetBackup (может останавливаться довольно долго):
/usr/openv/netbackup/bin/goodies/bp.kill_all
# Проверим, остались ли какие-нибудь процессы:
/usr/openv/netbackup/bin/bpps -a
# Если остались, их надо добить командой kill -9
# Запустим NetBackup, параллельно в другой сессии глядя в лог:
/usr/openv/netbackup/bin/goodies/netbackup start

Veritas Volume Manager Cheat Sheet


Veritas Volume Manager Cheat Sheet:

The Setup: an Oracle database supporting an application called ABC, and given the following:
Assuming that we need to create filesystems intended for Oracle and:
we are using a SID of 'ABC'
we have nine disks, c0t0d1 through c0t0d9
we will be creating six volumes: /u01/oradata/ABC ( 4gb ), /u02/oradata/ABC (4gb ), /u03/oradata/ABC (8gb ), /u04/oradata/ABC ( 4gb ), /u01/app/oracle/product/8.0.5_ABC ( 4gb ), and /u01/admin/ABC ( 4gb ).
We added these disks to Volume Manager Control during installation with vxinstall, or later with vxdiskadd(1m). Both vxinstall and vxdiskadd can add either initialize a previously unused disk, or 'encapsulate' a disk already containing data, but not under Volume Manager control.
we could take the following steps to set up our filesystems.

Adding an EMC disk to Veritas

Use the inq utility to see if you have SCSI visibility to the disk
Use vxdisk -o alldgs list to see if Veritas has seen the disk
if not, try the following, and then repeat the previous step:
devfsadm
vxdctl initdmp
vxdctl enable

Creating a Disk Group in Volume Manager:

Create a vxvm disk group for the Oracle SID using vxdg(1m). It's important that all of the disks/filesystems necessary for the ABC database to run are included in the disk group, otherwise the database could not be moved to another system.
The easiest way to do this is to use vxdiskadd
vxdiskadd c0t0d0 c0t0d1 c0t0d2 . . .
Doing it the hard way:
vxdg init ABCdg ABCdg01=c0t0d1
This would create a disk group called ABCdg containing one physical disk, c0t0d1, which will be referred to by it's name within vxvm, ABCdg01. You cannot initiate a disk group without specifying at least one disk as a member of the group. You should not include any disks destined to be part of an Oracle Database in the default vxvm group, rootdg. This allows you to use the vxdg 'deport' and 'import' commands to migrate an entire vxvm disk group to another host.
Now that we've create the disk group for our database, we can add the rest of our disks to it:
vxdg -g ABCdg adddisk ABCdg02=c0t0d2
vxdg -g ABCdg adddisk ABCdg09=c0t0d9

Creating Volumes With vxassist

vxassist(1m) is a vxvm command that acts as a front-end to other vxvm commands, much as newfs(1m) acts as a simpler-to-use front-end to mkfs(1m). Using vxassist with it's -v flag will display the actual vxvm commands used during volume construction. vxassist also front-ends vxfs commands and normal UNIX utilities during volume construction. An example of this is using a singlevxassist command to set up a volume. Using vxassist simplifies many vxvm tasks, but you should pay careful attention to the defaults you will inherit when setting up volumes using this tool. Understanding the contents of the /etc/default/vxassist file is important, especially when striping disks.
To make our 8gb /u03/oradata/ABC volume, we could use the following command line:
vxassist -g ABCdg make ABC01 8g
Breaking it down into it's component parts:
vxassist
-g ABCdg # this volume will belong to the ABCdg disk group
make # tells vxassist that we are creating a new volume
ABC01 # name the volume
8g # specify the size of the volume
Here we create the other five volumes:
vxassist -g ABCdg make ABC02 8g
vxassist -g ABCdg make ABC03 8g
vxassist -g ABCdg make ABC04 8g
vxassist -g ABCdg make ABC05 8g
vxassist -g ABCdg make ABC06 8g

Creating a File System:

We now lay filesystems down on our newly created volumes. We assume here that you've agreed with the Oracle DBA's to use a block size of 8192 for our filesystems. Not specifying a block size allow Veritas to dynamically assign one for you based upon the size of the volume. Our volumes would default to 1024 for a block size on our 4 GB volumes, and 2048 for our 8GB volume. We will specify the largefiles option, because the mkfs_vxfs(1m) command uses nolargefiles as a default, unlike mkfs_ufs(1m) on Solaris 2.6 or greater, which uses largefiles as a default. If we forgot to do so, we could use fsadm ( fsadm_vxfs(1m) ) to set the largefiles bit on. fsadm can also query a mounted filesystem for the current setting of this flag. Be certain that whatever flags you set during file system creation or modification are reflect in vfstab, or the resulting file system may be un-mount-able.
mkfs -F vxfs -o bsize=8192,largefiles /dev/vx/rdsk/ABCdg/ABC01

Mounting a File System:

Creating and mounting filesystems go hand in hand. You must be certain that any special flags set at creation time are reflected in /etc/vfstab, or on the command line if there is no entry in vfstab for your filesystem.
mount -F vxfs -o largefiles /dev/vx/dsk/ABCdg/ABC01 /u03/oradata/ABC

Resizing a mounted volume and file system:

/etc/vx/bin/vxresize -g rootdg -F vxfs archive 16g

Recovering disks under VM control:

(if you want to live dangerously, try looking at dfwset01:/root/progs/hose_vx_dg.pl)
Pre-reqs
Procedure
1) comment the volume(s) you're destroying out of vfstab
2) umount the volume
3) stop it:
vxvol stop volume01
4) remove it:
vxedit -rf rm volume01
5) remove the disk(s) the volume was on from the disk group ( up to the last disk )
vxdg -g mydg rmdisk dmdiskname01
6) Remove the the disk(s) from VXVM control
vxdisk rm c1t1d51s2
7) If you wish do get rid of the disk group ( in order to recover the last disk ), you must destroy the disk group:
vxdg destroy mydg
8) remove the last disk
vxdisk rm c2t7d9s2
9) If you're removing the disks from the EMC port, be sure to clean up:
drvconfig
disks
vxdctl enable
vxdctl initdmp


10) Freak out and realize you whacked the wrong thing, use /root/eotw to recover.

Renaming a VM Disk:

Since names like "ABCdg10" are not as descriptive as they could be, you can rename it to something more useful.
vxedit rename ABCdg10 ABCdg_hot_spare
Using long disk names can be more descriptive, but will make using vxva trickier, as it will truncate your disk name somewhat if it is too long.

Moving a Disk Group to Another System:

1) umount the disks:
umount /u01/app/oracle/product/8.0.5_ABC
umount /u01/admin/ABC
umount /u01/oradata/ABC
umount /u02/oradata/ABC
umount /u03/oradata/ABC
umount /u04/oradata/ABC
2) Stop the volumes:
vxvol -g ABCdg stopall
3) deport the disk group from one system:
vxdg deport ABCdg
4) import them on another system:
vxdg import ABCdg
5) Start all of the volumes on the new system and resync mirrors in the background:
vxrecover -g ABCdg -sb
6) mount the filesystems
mount /u01/app/oracle/product/8.0.5_ABC
mount /u01/admin/ABC
mount /u01/oradata/ABC
mount /u02/oradata/ABC
mount /u03/oradata/ABC
mount /u04/oradata/ABC
This procedure assumes that the second system can see the disks, and also that you have commented the file systems out of vfstab on the old system.
 
Rename a Disk Group
/root
dfwns19 # df -k  | grep reports
/dev/vx/dsk/reportsdg/ncr01 /u01/app/oracle/admin/REPORTS
/dev/vx/dsk/reportsdg/ncr02 /u01/app/oracle/product/8.0.5REPORTS
/dev/vx/dsk/reportsdg/ncr03 /u01/oradata/REPORTS
/dev/vx/dsk/reportsdg/ncr04 /u02/oradata/REPORTS
/dev/vx/dsk/reportsdg/ncr05 /u03/oradata/REPORTS
/dev/vx/dsk/reportsdg/ncr06 /u04/oradata/REPORTS
/dev/vx/dsk/reportsdg/ncr07 /u11/oraarch/REPORTS
dfwns19 # umount /u01/app/oracle/admin/REPORTS
dfwns19 # umount /u01/app/oracle/product/8.0.5REPORTS
dfwns19 # umount /u01/oradata/REPORTS
dfwns19 # umount /u02/oradata/REPORTS
dfwns19 # umount /u03/oradata/REPORTS
dfwns19 # umount /u04/oradata/REPORTS
dfwns19 # umount /u11/oraarch/REPORTS
dfwns19 # vxvol -g reportsdg stopall
dfwns19 # vxdg deport reportsdg
dfwns19 # vxdg -n nclproddg import reportsdg
dfwns19 # vxdg list

Mirroring and then breaking mirrors

# make an sd from your dm ( use the -g, or it won't work. The book is wrong )
#                     sdname       dmname,start_offset,sd_length
vxmake -g dwproddg sd dwprodd15-01 dwprodd15,0,8389440

# create a plex from your sd
vxmake -g dwproddg plex dw01-02 sd=dwprodd15-01 

# attach the plex to your volume
vxplex -g dwproddg att dw01 dw01-02

# watch it silver ( check out the pause and slow options. badass )
/tmp
dfwora03 # vxtask -l list
Task:      162 RUNNING
Type:      ATCOPY
Operation: PLXATT Vol dw01 0.0
Started:   Tue Dec 05 03:47:29 2000
Throttle:  0
Progress:  18.33% 1537352 of 8388608 Blocks 
Work time: 1 minute, 26 seconds (06:23 remaining)

# more than one sd per plex for plexen > one dm
vxmake -g dwproddg sd dwprodd17-01 dwprodd17,0,8833920
vxmake -g dwproddg sd dwprodd18-01 dwprodd18,0,7944000
vxmake -g dwproddg plex dw03-02 sd=dwprodd17-01,dwprodd18-01
vxplex -g dwproddg att dw03 dw03-02

# now for the scary part. dis-associating the plexes and sd's
vxplex -o rm dis dw01-01
# zap the dm from the dg
vxdg -g dwproddg rmdisk dwprodd01
# nuke the da
vxdisk rm c2t2d13s2  


NAME         STATE           ID
nclproddg    enabled  949356971.2501.dfwns19
 
 
 

Renaming a disk group and volume

bansecdbdg -> secproddg used as an example
# Unmount all volumes in the bansecdbdg disk group.
# Stop all volumes
vxvol -g bansecdbdg stopall

# Deport bansecdbdg
vxdg deport bansecdbdg

# Import bansecdbdg using the -n option
vxdg -n secproddg import bansecdbdg

# Recover the disk group by the new dg name
vxrecover -g secproddg -sb

# Rename each volume
vxedit -g secproddg rename bansecdb01 sec01
vxedit -g secproddg rename bansecdb02 sec02
.
.
.
vxedit -g secproddg rename bansecdb08 sec08

# Update vfstab, your mount points and remount the volumes

Resizing a disk, while specifying the disk

# Resize volume u11, and only use disk  dev20dg23
# x requires the volume to grow (i.e. does not let you specify a 
# smaller than existing volume size), and b backgrounds the 
# task (according to the tech)
./vxresize -F vxfs -bx -g dev20dg u11 16g dev20dg23

Moving a volume off of a particluar disk

# Move u11 off of dm dev20dg20
vxassist -g dev20dg move u11 !dev20dg20



Veritas Volume Manager Quick Reference Disk Commands

OperationCommandExample
Initialize diskvxdisksetupvxdisksetup -i c1t9d0
Uninitialize disksvxdiskunsetupvxdiskunsetup -C c1t9d0
List disksvxdisk list 
List disk headervxdisk listvxdisk list disk01
List disk private regionvxprivutil listvxprivutil list /dev/rdsk/c1t9d0s2
Reserve a diskvxedit setvxedit -g my-dg set reserve=on my-disk
Rename a diskvxedit renamevxedit -g my-dg rename my-disk new-disk
Rescan all disksvxdctl enable 

Disk Group Commands

OperationCommandExample
Create disk groupvxdg initvxdg init my-dg disk01=c1t9d0
Remove disk groupvxdg destroyvxdg destroy my-dg
Add diskvxdg adddiskvxdg -g my-dg adddisk disk02=c1t8d0
Remove diskvxdg rmdiskvxdg -g my-dg rmdisk disk02
Import diskgroupvxdg importvxdg import my-dg
Deport diskgroupvxdg deportvxdg deport my-dg
List diskgroupsvxdg listvxdg -o alldgs -e list
List free spacevxdg freevxdg -g my-dg free
List total free spacevxassistvxassist -g my-dg maxsize layout=concat
Rename diskgroup on deportvxdg deportvxdg -n new-dg deport old-dg
Rename diskgroup on importvxdg importvxdg -n new-dg import old-dg
Evacuate data from a diskvxevacvxevac -g my-dg fromdisk todisk(s)

Plex Commands

OperationCommandExample
Create a plexvxmake plexvxmake -g my-dg plex my-plex sd=my-sd
Associate a plexvxplex attvxplex -g my-dg att my-vol my-plex
Dis-associate a plexvxplex disvxplex -g my-dg dis my-plex
Attach a plexvxplex attvxplex -g my-dg att my-vol my-plex
Detach a plexvxplex detvxplex -g my-dg det my-plex
List plexesvxprintvxprint -lp
Remove a plexvxeditvxedit -g my-dg rm my-plex

Subdisk Commands

OperationCommandExample
Create a subdiskvxmake sdvxmake -g my-dg my-sd disk1,1,5000
Remove subdiskvxedit rmvxedit -g my-dg rm my-sd
Display subdisk infovxprint -st 
Associate subdisk to plexvxsd assocvxsd -g my-dg assoc my-plex my-sd
Disassociate subdiskvxsd disvxsd -g my-dg dis my-sd

Volume Commands

OperationCommandExample
Create a volumevxassist makevxassist -g my-dg make my-vol 1G
vxassist make my-vol 1G layout=stripe
Delete a volumevxedit rmvxedit -g my-dg -r rm my-vol
Display volume infovxprint -vtvxprint -g my-dg -vt
Display volume infovxinfovxinfo -g my-dg my-vol
Resize a volumevxassist growto
vxassist growby
vxassist -g my-dg growto my-vol 2G
vxassist -g my-dg growby my-vol 600M
Start a volumevxvol startvxvol -g my-dg start my-vol
Stop a volumevxvol stopvxvol -g my-dg stop my-vol
Initialise a volumevxvol init activevxvol -g my-dg init active my-vol
Recover a volumevxrecovervxrecover -g my-dg my-vol
Mirror a volumevxassist mirrorvxassist -g my-dg mirror my-vol
Add log to a volumevxassist addlogvxassist -g my-dg addlog my-vol
Snapshot a volumevxassist snapstart
vxassist snapshot
vxassist -g my-dg snapstart my-vol
vxassist -g my-dg snapshot my-vol my-snap
Change volume layoutvxassist relayoutvxassist -g my-dg relayout my-vol layout=stripe
Convert volume typevxassist convertvxassist -g my-dg convert my-vol layout=stripe-mirror
Estimate max volume sizevxassist maxsize
vxassist maxgrow
vxassist -g my-dg maxsize layout=... disk1 diskn
vxassist -g my-dg maxgrow my-vol
Remove a volumevxassist removevxassist -g my-dg remove my-vol
Remove a volumevxvol stop
vxedit -r rm
vxdg rmdisk
vxvol -g my-dg stop my-vol
vxedit -g my-dg -r rm my-vol
vxdg -g my-dg rmdisk my-disk
Help on layoutvxassist helpvxassist help layout

Multipathing Commands

OperationCommandExample
Display enclusresvxdmpadm listenclosurevxdmpadm listenclosure all
Display controllersvxdmpadm listctlrvxdmpadm listctlr all
Display subpathsvxdmpadm getsubpathsvxdmpadm getsubpaths ctlr=c3
vxdmpadm getsubpaths dmpnodename=EMC_CLARiiON2_4

Miscellaneous Commands

OperationCommandExample
Enable Enclosure Based Namingvxddladm set namingschemevxddladm set namingscheme=ebn
Disable Enclosure Based Namingvxddladm set namingschemevxddladm set namingscheme=obn

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


Как остановить и запустить экземпляры RAC
(http://all-oracle.ru/content/view/?part=2&id=18)
Рекомендовано для:
Oracle Database 8i
Oracle Database 9i R1
Oracle Database 9i R2
Oracle Database 10g R1
Oracle Database 10g R2
Oracle Database 11g R1

Нет различий между запуском обычной базы данных и базы данных RAC. Отличие в том, что базы данных RAC должны быть запущенны на нескольких узлах. Параметр CLUSTER_DATABASE=TRUE (PARALLEL_SERVER=TRUE) должен быть выставлен, до того как базы данных будут запущены в режиме кластера. В Oracle 10g можно использовать утилиту srvctl для запуска экземпляров и  прослушивателей по всему кластеру с одного узла.
Например:
$ srvctl status database -d RACDB
$ srvctl start database -d RACDB
$ srvctl start instance -d RACDB -i RACDB1
$ srvctl start instance -d RACDB -i RACDB2
$ srvctl stop database -d RACDB

Пример:
$ srvctl status database -d SORM
$ srvctl stop instance -d SORM -i sormc1
$ srvctl start instance -d SORM -i sormc1


Если указывать без опций, то происходит shutdown normal. но можно и указать режим закрытия явно, например
$ srvctl stop database -d SORM -o immediate


посмотреть какие БД прописаны в кластере

$ srvctl config database

Oracle Sql


select * from all_objects
where last_ddl_time like '%05.04.2012%'
order by 1;


select * from dba_audit_trail order by timestamp desc

select * from dba_users
where username like '%%';

alter user USERNAME account lock;

select * from dba_objects where status='INVALID';
select count(*) from dba_objects where status='INVALID'

select * from dba_source where upper(text) like '%WRAPPED%' and owner='';

Tuning TCP for Linux 2.4 and 2.6


Tuning TCP for Linux 2.4 and 2.6


NB: Recent versions of Linux (version 2.6.17 and later) have full autotuning with 4 MB maximum buffer sizes. Except in some rare cases, manual tuning is unlikely to substantially improve the performance of these kernels over most network paths, and is not generally recommended
Since autotuning and large default buffer sizes were released progressively over a succession of different kernel versions, it is best to inspect and only adjust the tuning as needed. When you upgrade kernels, you may want to consider removing any local tuning.
All system parameters can be read or set by accessing special files in the /proc file system. E.g.:
 cat /proc/sys/net/ipv4/tcp_moderate_rcvbuf
If the parameter tcp_moderate_rcvbuf is present and has value 1 then autotuning is in effect. With autotuning, the receiver buffer size (and TCP window size) is dynamically updated (autotuned) for each connection. (Sender side autotuning has been present and unconditionally enabled for many years now).
The per connection memory space defaults are set with two 3 element arrays:
 /proc/sys/net/ipv4/tcp_rmem       - memory reserved for TCP rcv buffers
 /proc/sys/net/ipv4/tcp_wmem       - memory reserved for TCP snd buffers
These are arrays of three values: minimum, initial and maximum buffer size. They are used to set the bounds on autotuning and balance memory usage while under memory stress. Note that these are controls on the actual memory usage (not just TCP window size) and include memory used by the socket data structures as well as memory wasted by short packets in large buffers. The maximum values have to be larger than the BDP of the path by some suitable overhead.
With autotuning, the middle value just determines the initial buffer size. It is best to set it to some optimal value for typical small flows. With autotuning, excessively large initial buffer waste memory and can even hurt performance.
If autotuning is not present (Linux 2.4 before 2.4.27 or Linux 2.6 before 2.6.7), you may want to get a newer kernel. Alternately, you can adjust the default socket buffer size for all TCP connections by setting the middle tcp_rmem value to the calculated BDP. This is NOT recommended for kernels with autotuning. Since the sending side is autotuned, this is never recommended for tcp_wmem.
The maximum buffer size that applications can request (the maximum acceptable values for SO_SNDBUF and SO_RCVBUF arguments to the setsockopt() system call) can be limited with /proc variables:
 /proc/sys/net/core/rmem_max       - maximum receive window
 /proc/sys/net/core/wmem_max       - maximum send window
The kernel sets the actual memory limit to twice the requested value (effectively doubling rmem_max and wmem_max) to provide for sufficient memory overhead. You do not need to adjust these unless your are planing to use some form of application tuning.
NB: Manually adjusting socket buffer sizes with setsockopt() disables autotuning. Application that are optimized for other operating systems may implicitly defeat Linux autotuning.
The following values (which are the defaults for 2.6.17 with more than 1 GByte of memory) would be reasonable for all paths with a 4MB BDP or smaller (you must be root):
 echo 1 > /proc/sys/net/ipv4/tcp_moderate_rcvbuf
        echo 108544 > /proc/sys/net/core/wmem_max 
        echo 108544 > /proc/sys/net/core/rmem_max 
        echo "4096 87380 4194304" > /proc/sys/net/ipv4/tcp_rmem
        echo "4096 16384 4194304" > /proc/sys/net/ipv4/tcp_wmem
Do not adjust tcp_mem unless you know exactly what you are doing. This array (in units of pages) determines how the system balances the total network buffer space against all other LOWMEM memory usage. The three elements are initialized at boot time to appropriate fractions of the available system memory.
You do not need to adjust rmem_default or wmem_default (at least not for TCP tuning). These are the default buffer sizes for non-TCP sockets (e.g. unix domain and UDP sockets).
All standard advanced TCP features are on by default. You can check them by:
 cat /proc/sys/net/ipv4/tcp_timestamps
 cat /proc/sys/net/ipv4/tcp_window_scaling
 cat /proc/sys/net/ipv4/tcp_sack 
Linux supports both /proc and sysctl (using alternate forms of the variable names - e.g. net.core.rmem_max) for inspecting and adjusting network tuning parameters. The following is a useful shortcut for inspecting all tcp parameters:
sysctl -a | fgrep tcp
For additional information on kernel variables, look at the documentation included with your kernel source, typically in some location such as /usr/src/linux-<version>/Documentation/networking/ip-sysctl.txt. There is a very good (but slightly out of date) tutorial on network sysctl's at http://ipsysctl-tutorial.frozentux.net/ipsysctl-tutorial.html.
If you would like to have these changes to be preserved across reboots, you can add the tuning commands to your the file /etc/rc.d/rc.local .
Autotuning was prototyped under the Web100 project. Web100 also provides complete TCP instrumentation and some additional features to improve performance on paths with very large BDP.
Contributors: John Heffner and Matt Mathis
Checked for Linux 2.6.18, 12/5/2006
http://www.psc.edu/index.php/networking/641-tcp-tune#Linux

Магические комбинации с SysRq


Магические комбинации с SysRq
Alt+SysRq+K - убивает все зависшие процессы, которые не отвечают на Ctrl+C.
Alt+SysRq+E (tErm) - посылает всем процессам (кроме Init) сигнал SIGTERM. Остаются только ядро, Init и текущая консоль. После этого можно заново запустить все сервисы.
Alt+SysRq+I (kIll) - аналогично предыдущей, но посылает сигнал SIGKILL, т.е. моментально убивает процессы без сохранения данных.
Alt+SysRq+S (Sync) - заставляет ядро выполнить синхронизацию буферов ввода/вывода, т.е. сбросить содержимое дисковых буферов на диск.
Alt+SysRq+U (Umount) - размонтирование всех смонтированных ФС
Alt+SysRq+B (Reboot) - мгновенная перезагрузка (практически Reset)
Alt+SysRq+0 (p0wer off) - мгновенно выключает питание, не размонтируя ФС.
Желательно зависшую Linux машину перезагружать с помощью магических клавиш следующим способом Alt + SysRq + R,E,I,S,U,B  

Vm

Ядро также имеет настройку известную как laptop_mode (режим ноутбука), которая заставляет его откладывать запись на диск (изначально создавалась с намерением позволить диску ноутбука останавливаться пока он не используется, отсюда и название). Несколько файлов в директории /proc/sys/vm/ контролируют его (режима) работу:
/proc/sys/vm/laptop_mode: Через сколько секунд после чтения данных должна начаться запись измененных файлов (это основано на предположении о том, что чтение вызовет раскрутку ранее остановленного диска).
/proc/sys/vm/dirty_writeback_centisecs: Как часто ядро должно проверять есть ли «грязные» (измененные) данные для записи на диск (в сантисекундах).
/proc/sys/vm/dirty_expire_centisecs: Насколько «грязны» должны быть данные, что бы ядро решило что они достаточно стары для записи на диск. В общем случае, это хорошая идея установить для этой опции такое же значение как и для dirty_writeback_centisecs выше.
/proc/sys/vm/dirty_ratio: Максимальный размер памяти (в процентах), для хранения грязных данных прежде чем процесс, их сгенерировавший, будет принужден записать их. Установка этому параметру высокого значения не должно быть проблемой, так как запись будет так же происходить если в системе закончится память.
/proc/sys/vm/dirty_background_ratio: Минимальное число памяти (в процентах), где позволено хранить гразные данные вместо записи на диск. Этот параметр должен быть намного меньше чем dirty_ratio что бы позволить записывать куски грязных данных за один проход.
vm.dirty_writeback_centisecs. Увеличим время между сбросом «грязных» буферов vm.dirty_writeback_centisecs в /etc/sysctl.conf. Рекомендую vm.dirty_writeback_centisecs = 15000

Утилита wget

Утилита wget
Скачиваем сайты целиком - утилита wget

wget — это утилита, которая предназначена для загрузки файлов по сети (из интернета). Я расскажу, как использовать wget, чтобы скачивать сайты из интернета целиком и затем просматривать их в автономном режиме.

С помощью wget можно скачивать сайты, включая картинки, всего лишь указав адрес сайта и определенные параметры. wget будет автоматически переходить по ссылкам на сайте и скачивать страницу за страницей. Рассмотрим несколько примеров от простых к более сложным использования wget для скачивания сайтов.

Чтобы скачать сайт целиком с помощью wget нужно выполнить команду:
wget -r -k -l 7 -p -E -nc http://site.com/
После выполнения данной команды в директорию site.com будет загружена локальная копия сайта http://site.com. Чтобы открыть главную страницу сайта нужно открыть файл index.html.

Рассмотрим используемые параметры:
-r указывает на то, что нужно рекурсивно переходить по ссылкам на сайте, чтобы скачивать страницы.
-k используется для того, чтобы wget преобразовал все ссылки в скаченных файлах таким образом, чтобы по ним можно было переходить на локальном компьютере (в автономном режиме).
-p указывает на то, что нужно загрузить все файлы, которые требуются для отображения страниц (изображения, css и т.д.).
-l определяет максимальную глубину вложенности страниц, которые wget должен скачать (по умолчанию значение равно 5, в примере мы установили 7). В большинстве случаев сайты имеют страницы с большой степенью вложенности и wget может просто «закопаться», скачивая новые страницы. Чтобы этого не произошло можно использовать параметр -l.
-E добавлять к загруженным файлам расширение .html.
-nc при использовании данного параметра существующие файлы не будут перезаписаны. Это удобно, когда нужно продолжить загрузку сайта, прерванную в предыдущий раз.

Мы рассмотрели лишь одно из возможных применений утилиты wget. На самом деле область применения wget значительно шире и wget обладает большим числом дополнительных параметров. За более подробной информацией обращайтесь к руководству, выполнив в командной строке: man wget.

Вот так лучше делать если сайт целиком качать
wget -rp -np -nc --wait=45 -Q200m http://*******

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

Code:
Системная информация
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 2007    вывести таблицу-календарь 2007-го года
date 041217002007.00     установить системные дату и время ММДДЧЧммГГГГ.СС (МесяцДеньЧасМинутыГод.Секунды)
clock -w    сохранить системное время в BIOS


Остановка системы
shutdown -h now    Остановить систему
init 0
telinit 0
shutdown -h hours:minutes &    запланировать остановку системы на указанное время
shutdown -c    отменить запланированную по расписанию остановку системы
shutdown -r now    перегрузить систему
reboot
logout    выйти из системы


Файлы и директории
cd /home    перейти в директорию '/home'
cd ..    перейти в директорию уровнем выше
cd ../..    перейти в директорию двумя уровнями выше
cd    перейти в домашнюю директорию
cd ~user    перейти в домашнюю директорию пользователя user
cd -    перейти в директорию, в которой находились до перехода в текущую директорию
pwd    показать текущюю директорию
ls    отобразить содержимое текущей директории
ls -F    отобразить содержимое текущей директории с добавлением к именам символов, храктеризующих тип
ls -l    показать детализированое представление файлов и директорий в текущей директории
ls -a    показать скрытые файлы и директории в текущей директории
ls *[0-9]*    показать файлы и директории содержащие в имени цифры
tree    показать дерево файлов и директорий, начиная от корня (/)
lstree
mkdir dir1    создать директорию с именем 'dir1'
mkdir dir1 dir2    создать две директории одновременно
mkdir -p /tmp/dir1/dir2    создать дерево директорий
rm -f file1    удалить файл с именем 'file1'
rmdir dir1    удалить директорию с именем 'dir1'
rm -rf dir1    удалить директорию с именем 'dir1' и рекурсивно всё её содержимое
rm -rf dir1 dir2    удалить две директории и рекурсивно их содержимое
mv dir1 new_dir    переименовать или переместить файл или директорию
cp file1 file2    сопировать файл file1 в файл file2
cp dir/* .    копировать все файлы директории dir в текущую директорию
cp -a /tmp/dir1 .    копировать директорию dir1 со всем содержимым в текущую директорию
cp -a dir1 dir2    копировать директорию dir1 в директорию dir2
ln -s file1 lnk1     создать символическую ссылку на файл или директорию
ln file1 lnk1    создать "жёсткую" (физическую) ссылку на файл или директорию
touch -t 0712250000 fileditest    модифицировать дату и время создания файла, при его отсутствии, создать файл с указанными датой и временем (YYMMDDhhmm)


Поиск файлов
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


mount | column -t
Текущие смонтированные файловые системы отображаемые в удобных колонках.
Использование этой команды позволяет вам более удобным способом окинуть взглядом все файловые системы смонтированные на данный момент.


Дисковое пространство
df -h    отображает информацию о смонтированных разделах с отображением общего, доступного и используемого пространства (Прим.переводчика. ключ -h работает не во всех *nix системах)
ls -lSr |more    выдаёт список файлов и директорий рекурсивно с сортировкой по возрастанию размера и позволяет осуществлять постраничный просмотр
du -sh dir1    подсчитывает и выводит размер, занимаемый директорией 'dir1' (Прим.переводчика. ключ -h работает не во всех *nix системах)
du -sk * | sort -rn     отображает размер и имена файлов и директорий, с соритровкой по размеру
rpm -q -a --qf '%10{SIZE}t%{NAME}n' | sort -k1,1n    показывает размер используемого дискового пространства, занимаемое файлами rpm-пакета, с сортировкой по размеру (fedora, redhat и т.п.)
dpkg-query -W -f='${Installed-Size;10}t${Package}n' | sort -k1,1n    показывает размер используемого дискового пространства, занимаемое файлами deb-пакета, с сортировкой по размеру (ubuntu, debian т.п.)


Пользователи и группы
groupadd group_name    создать новую группу с именем group_name
groupdel group_name    удалить группу group_name
groupmod -n new_group_name old_group_name    переименовать группу old_group_name в new_group_name
useradd -c "Nome Cognome" -g admin -d /home/user1 -s /bin/bash user1    создать пользователя user1, назначить ему в качестве домашнего каталога /home/user1, в качестве shell'а /bin/bash, включить его в группу admin и добавить комментарий Nome Cognome
useradd user1    создать пользователя user1
userdel -r user1    удалить пользователя user1 и его домашний каталог
usermod -c "User FTP" -g system -d /ftp/user1 -s /bin/nologin user1    изменить атрибуты пользователя
passwd    сменить пароль
passwd user1    сменить пароль пользователя user1 (только root)
chage -E 2005-12-31 user1    установить дату окончания действия учётной записи пользователя user1
pwck    проверить корректность системных файлов учётных записей. Проверяются файлы /etc/passwd и /etc/shadow
grpck    проверяет корректность системных файлов учётных записей. Проверяется файл/etc/group
newgrp [-] group_name    изменяет первичную группу текущего пользователя. Если указать "-", ситуация будет идентичной той, в которой пользователь вышил из системы и снова вошёл. Если не указывать группу, первичная группа будет назначена из /etc/passwd


Выставление/изменение полномочий на файлы
ls -lh    просмотр полномочий на файлы и директории в текущей директории
ls /tmp | pr -T5 -W$COLUMNS    вывести содержимое директории /tmp и разделить вывод на пять колонок
chmod ugo+rwx directory1    добавить полномочия на директорию directory1 ugo(User Group Other)+rwx(Read Write eXecute) - всем полные права. Аналогичное можно сделать таким образом chmod 777 directory1
chmod go-rwx directory1    отобрать у группы и всех остальных все полномочия на директорию directory1.
chown user1 file1    назначить владельцем файла file1 пользователя user1
chown -R user1 directory1    назначить рекурсивно владельцем директории directory1 пользователя user1
chgrp group1 file1    сменить группу-владельца файла file1 на group1
chown user1:group1 file1    сменить владельца и группу владельца файла file1
find / -perm -u+s    найти, начиная от корня, все файлы с выставленным SUID
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.
chmod o+t /home/public    назначить STIKY-бит директории /home/public. Позволяет удалять файлы только владельцам
chmod o-t /home/public    снять STIKY-бит с директории /home/public


Специальные атрибуты файлов
chattr +a file1    позволить открывать файл на запись только в режиме добавления
chattr +c file1    позволяет ядру автоматически сжимать/разжимать содержимое файла.
chattr +d file1    указавет утилите dump игнорировать данный файл во время выполнения backup'а
chattr +i file1    делает файл недоступным для любых изменений: редактирование, удаление, перемещение, создание линков на него.
chattr +s file1    позволяет сделать удаление файла безопасным, т.е. выставленный атрибут s говорит о том, что при удалении файла, место, занимаемое файлом на диске заполняется нулями, что предотвращяет возможность восстановления данных.
chattr +S file1    указывает, что, при сохранении изменений, будет произведена синхронизация, как при выполнении команды sync
chattr +u file1    данный атрибут указывает, что при удалении файла содержимое его будет сохранено и при необходимости пользователь сможет его восстановить
lsattr    показать атрибуты файлов


Архивирование и сжатие файлов
bunzip2 file1.bz2    разжимает файл 'file1.gz'
gunzip file1.gz
gzip file1    сжимает файл 'file1'
bzip2 file1
gzip -9 file1    сжать файл file1 с максимальным сжатием
rar a file1.rar test_file    создать rar-архив 'file1.rar' и включить в него файл test_file
rar a file1.rar file1 file2 dir1    создать rar-архив 'file1.rar' и включить в него file1, file2 и dir1
rar x file1.rar    распаковать rar-архив
unrar x file1.rar
tar -cvf archive.tar file1    создать tar-архив archive.tar, содержащий файл file1
tar -cvf archive.tar file1 file2 dir1    создать tar-архив archive.tar, содержащий файл file1, file2 и dir1
tar -tf archive.tar    показать содержимое архива
tar -xvf archive.tar    распаковать архив
tar -xvf archive.tar -C /tmp    распаковать архив в /tmp
tar -cvfj archive.tar.bz2 dir1    создать архив и сжать его с помощью bzip2(Прим.переводчика. ключ -j работает не во всех *nix системах)
tar -xvfj archive.tar.bz2    разжать архив и распаковать его(Прим.переводчика. ключ -j работает не во всех *nix системах)
tar -cvfz archive.tar.gz dir1    создать архив и сжать его с помощью gzip
tar -xvfz archive.tar.gz    разжать архив и распаковать его
zip file1.zip file1    создать сжатый zip-архив
zip -r file1.zip file1 file2 dir1    создать сжатый zip-архив и со включением в него нескольких файлов и/или директорий
unzip file1.zip    разжать и распаковать zip-архив


Просмотр содержимого файлов
cat file1    вывести содержимое файла file1 на стандартное устройсво вывода
tac file1    вывести содержимое файла file1 на стандартное устройсво вывода в обратном порядке (последняя строка становиться первой и т.д.)
more file1    постраничный вывод содержимого файла file1 на стандартное устройство вывода
less file1    постраничный вывод содержимого файла file1 на стандартное устройство вывода, но с возможностью пролистывания в обе стороны (вверх-вниз), поиска по содержимому и т.п.
head -2 file1    вывести первые две строки файла file1 на стандартное устройство вывода. По-умолчанию выводится десять строк
tail -2 file1    вывести последние две строки файла file1 на стандартное устройство вывода. По-умолчанию выводится десять строк
tail -f /var/log/messages    выводить содержимое файла /var/log/messages на стандартное устройство вывода по мере появления в нём текста.

‘less’ ведет себя также как ‘tail -f’
less +F somelogfile
Использование опции +F переключает less в режим «следования». Такой трюк работает аналогично ‘tail -f’. Чтобы остановить прокрутку, используйте прерывание, вы получите обычные преимущества less (прокрутка и т.п.).
Нажатие SHIFT-F приведет к продолжению ‘tailling’.


Манипуляции с текстом
cat file_originale | [operation: sed, grep, awk, grep и т.п.] > result.txt    общий синтаксис выполнения действий по обработке содержимого файла и вывода результата в новый
cat file_originale | [operazione: sed, grep, awk, grepи т.п.] >> result.txt    общий синтаксис выполнения действий по обработке содержимого файла и вывода результата в существующий файл. Если файл не существует, он будет создан
grep Aug /var/log/messages    из файла '/var/log/messages' отобрать и вывести на стандартное устройство вывода строки, содержащие "Aug"
grep ^Aug /var/log/messages    из файла '/var/log/messages' отобрать и вывести на стандартное устройство вывода строки, начинающиеся на "Aug"
grep [0-9] /var/log/messages    из файла '/var/log/messages' отобрать и вывести на стандартное устройство вывода строки, содержащие цифры
grep Aug -R /var/log/*    отобрать и вывести на стандартное устройство вывода строки, содержащие "Aug", во всех файлах, находящихся в директории /var/log и ниже
sed 's/stringa1/stringa2/g' example.txt    в файле example.txt заменить "string1" на "string2", результат вывести на стандартное устройство вывода.
sed '/^$/d' example.txt    удалить пустые строки из файла example.txt
sed '/ *#/d; /^$/d' example.txt    удалить пустые строки и комментарии из файла example.txt
echo 'esempio' | tr '[:lower:]' '[:upper:]'    преобразовать символы из нижнего регистра в верхний
sed -e '1d' result.txt    удалить первую строку из файла example.txt
sed -n '/string1/p'    отобразить только строки содержашие "string1"
sed -e 's/ *$//' example.txt    удалить пустые символы в в конце каждой строки
sed -e 's/string1//g' example.txt    удалить строку "string1" из текста не изменяя всего остального
sed -n '1,8p;5q' example.txt    взять из файла с первой по восьмую строки и из них вывести первые пять
sed -n '5p;5q' example.txt    вывести пятую строку
sed -e 's/0*/0/g' example.txt    заменить последовательность из любого количества нулей одним нулём
cat -n file1    пронумеровать строки при выводе содержимого файла
cat example.txt | awk 'NR%2==1'    при выводе содержимого файла, не выводить чётные строки файла
echo a b c | awk '{print $1}'    вывести первую колонку. Разделение, по-умолчанию, по проблелу/пробелам или символу/символам табуляции
echo a b c | awk '{print $1,$3}'    вывести первую и треью колонки. Разделение, по-умолчанию, по проблелу/пробелам или символу/символам табуляции
paste file1 file2    объединить содержимое file1 и file2 в виде таблицы: строка 1 из file1 = строка 1 колонка 1-n, строка 1 из file2 = строка 1 колонка n+1-m
paste -d '+' file1 file2    объединить содержимое file1 и file2 в виде таблицы с разделителем "+"
sort file1 file2    отсортировать содержимое двух файлов
sort file1 file2 | uniq    отсортировать содержимое двух файлов, не отображая повторов
sort file1 file2 | uniq -u    отсортировать содержимое двух файлов, отображая только уникальные строки (строки, встречающиеся в обоих файлах, не выводятся на стандартное устройство вывода)
sort file1 file2 | uniq -d    отсортировать содержимое двух файлов, отображая только повторяющиеся строки
comm -1 file1 file2    сравнить содержимое двух файлов, не отображая строки принадлежащие файлу 'file1'
comm -2 file1 file2    сравнить содержимое двух файлов, не отображая строки принадлежащие файлу 'file2'
comm -3 file1 file2    сравнить содержимое двух файлов, удаляя строки встречающиеся в обоих файлах


Преобразование наборов символов и файловых форматов
dos2unix filedos.txt fileunix.txt    конвертировать файл текстового формата из MSDOS в UNIX (разница в символах возврата коретки)
unix2dos fileunix.txt filedos.txt    конвертировать файл текстового формата из UNIX в MSDOS (разница в символах возврата коретки)
recode ..HTML < page.txt > page.html    конвертировать содержимое тестового файла page.txt в html-файл page.html
recode -l | more    вывести список доступных форматов


Анализ файловых систем
badblocks -v /dev/hda1    проверить раздел hda1 на наличие bad-блоков
fsck /dev/hda1    проверить/восстановить целостность linux-файловой системы раздела hda1
fsck.ext2 /dev/hda1    проверить/восстановить целостность файловой системы ext2 раздела hda1
e2fsck /dev/hda1
e2fsck -j /dev/hda1    проверить/восстановить целостность файловой системы ext3 раздела hda1 с указанием, что журнал расположен там же
fsck.ext3 /dev/hda1    проверить/восстановить целостность файловой системы ext3 раздела hda1
fsck.vfat /dev/hda1    проверить/восстановить целостность файловой системы fat раздела hda11
fsck.msdos /dev/hda1
dosfsck /dev/hda1


Форматирование файловых систем
mkfs /dev/hda1    создать linux-файловую систему на разделе hda1
mke2fs /dev/hda1    создать файловую систему ext2 на разделе hda1
mke2fs -j /dev/hda1    создать журналирующую файловую систему ext3 на разделе hda1
mkfs -t vfat 32 -F /dev/hda1    создать файловую систему FAT32 на разделе hda1
fdformat -n /dev/fd0    форматирование флоппи-диска без проверки
mkswap /dev/hda3    создание swap-пространства на разделе hda3


swap-пространство
mkswap /dev/hda3    создание swap-пространства на разделе hda3
swapon /dev/hda3    активировать swap-пространство, расположенное на разделе hda3
swapon /dev/hda2 /dev/hdb3    активировать swap-пространства, расположенные на разделах hda2 и hdb3


Создание резервных копий (backup)
dump -0aj -f /tmp/home0.bak /home    создать полную резервную копию директории /home в файл /tmp/home0.bak
dump -1aj -f /tmp/home0.bak /home     создать инкрементальную резервную копию директории /home в файл /tmp/home0.bak
restore -if /tmp/home0.bak    восстановить из резервной копии /tmp/home0.bak
rsync -rogpav --delete /home /tmp    синхронизировать /tmp с /home
rsync -rogpav -e ssh --delete /home ip_address:/tmp     синхронизировать через SSH-туннель
rsync -az -e ssh --delete ip_addr:/home/public /home/local    синхронизировать локальную директорию с удалённой директорией через ssh-туннель со сжатием
rsync -az -e ssh --delete /home/local ip_addr:/home/public    синхронизировать удалённую директорию с локальной директорией через ssh-туннель со сжатием
dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr 'dd of=hda.gz'    сделать "слепок" локального диска в файл на удалённом компьютере через ssh-туннель
tar -Puf backup.tar /home/user    создать инкрементальную резервную копию директории '/home/user' в файл backup.tar с сохранением полномочий
( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr 'cd /home/share/ && tar x -p'    копирование содержимого /tmp/local на удалённый компьютер через ssh-туннель в /home/share/
( tar c /home ) | ssh -C user@ip_addr 'cd /home/backup-home && tar x -p'     копирование содержимого /home на удалённый компьютер через ssh-туннель в /home/backup-home
tar cf - . | (cd /tmp/backup ; tar xf - )    копирование одной директории в другую с сохранением полномочий и линков
find /home/user1 -name '*.txt' | xargs cp -av --target-directory=/home/backup/ --parents    поиск в /home/user1 всех файлов, имена которых оканчиваются на '.txt', и копирование их в другую директорию
find /var/log -name '*.log' | tar cv --files-from=- | bzip2 > log.tar.bz2    поиск в /var/log всех файлов, имена которых оканчиваются на '.log', и создание bzip-архива из них
dd if=/dev/hda of=/dev/fd0 bs=512 count=1    создать копию MBR (Master Boot Record) с /dev/hda на флоппи-диск
dd if=/dev/fd0 of=/dev/hda bs=512 count=1    восстановить MBR с флоппи-диска на /dev/hda


Сеть (LAN и WiFi)
ifconfig eth0    показать конфигурацию сетевого интерфейса eth0
ifup eth0    активировать (поднять) интерфейс eth0
ifdown eth0    деактивировать (опустить) интерфейс eth0
ifconfig eth0 192.168.1.1 netmask 255.255.255.0    выставить интерфейсу eth0 ip-адрес и маску подсети
ifconfig eth0 promisc    перевести интерфейс eth0 в promiscuous-режим для "отлова" пакетов (sniffing)
ifconfig eth0 -promisc    отключить promiscuous-режим на интерфейсе eth0
dhclient eth0    активировать интерфейс eth0 в dhcp-режиме.
route -n    вывести локальную таблицу маршрутизации
netstat -rn
route add -net 0/0 gw IP_Gateway    задать ip-адрес шлюза по умолчанию (default gateway)
route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1    добавить статический маршрут в сеть 192.168.0.0/16 через шлюз с ip-адресом 192.168.1.1
route del 0/0 gw IP_gateway    удалить ip-адрес шлюза по умолчанию (default gateway)
echo "1" > /proc/sys/net/ipv4/ip_forward    разрешить пересылку пакетов (forwarding)
hostname    отобразить имя компьютера
host www.linuxguide.it    разрешить имя www.linuxguide.it хоста в ip-адрес и наоборот
host 62.149.140.85
ip link show    отобразить состояние всех интерфейсов
mii-tool eth0    отобразить статус и тип соединения для интерфейса eth0
ethtool eth0    отображает статистику интерфеса eth0 с выводом такой информации, как поддерживаемые и текущие режимы соединения
netstat -tupn    отображает все установленные сетевые соединения по протоколам TCP и UDP без разрешения имён в ip-адреса и PID'ы и имена процессов, обеспечивающих эти соединения
netstat -tupln    отображает все сетевые соединения по протоколам TCP и UDP без разрешения имён в ip-адреса и PID'ы и имена процессов, слушающих порты
tcpdump tcp port 80    отобразить весь трафик на TCP-порт 80 (обычно - HTTP)
iwlist scan    просканировать эфир на предмет, доступности беспроводных точек доступа
iwconfig eth1    показать конфигурацию беспроводного сетевого интерфейса eth1

netstat -tlnp cписок всех «слушающих» портов совместно с PID всех сопутствующих процессов.
PID будет выведен только в том случае, если у вас root права.


Показать приложения, которые используют интернет соединение в данный момент.
ss -p


Включение звукового сигнала, когда требуемый IP будет доступен
ping -i 60 -a IP_address
Ждете когда ваш сервер закончит перезагружаться? Выполните команду предложенную выше и вы услышите сигнал, когда он будет доступен в онлайн. Флаг -i 60 указывает выполнять пинги через интервал 60 секунд, варьируйте его по вашему желанию. Флаг -a указывает команде пинг включить звуковой сигнал, когда команда получит ответ от хоста (или другими словами, когда ваш сервер загрузит сетевые сервисы).


ssh -N -L2001:localhost:80 somemachine
поднять туннель с 80 порта какой либо машины на ваш локальный порт 2001
Теперь вы сможете получить доступ к сайту через http://localhost:2001/



Просмотр сетевой активности в реальном режиме времени
lsof -i



Microsoft Windows networks(SAMBA)
nbtscan ip_addr    разрешить netbios-имя nbtscan не во всех системах ставится по-умолчанию, возможно, придётся доустанавливать вручную. nmblookup включен в пакет samba.
nmblookup -A ip_addr
smbclient -L ip_addr/hostname    отобразить ресурсы, предоставленные в общий доступ на windows-машине
smbget -Rr smb://ip_addr/share    подобно wget может получить файлы с windows-машин через smb-протокол
mount -t smbfs -o username=user,password=pass //winclient/share /mnt/share    смонтировать smb-ресурс, предоставленный на windows-машине, в локальную файловую систему


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    перенаправление пакетов, адресованных одному хосту, на другой хост


Мониторинг и отладка
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/dmesg    вывести десять последних записей из журнала загрузки ядра
tail /var/log/messages    вывести десять последних записей из системного журнала


Другие полезные команды
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 с возможностью останова и продолжения в последствии

Скачиваем весь веб сайт
wget –random-wait -r -p -e robots=off -U mozilla http://www.example.com
-p параметр указывающий для wget необходимость скачивать все файлы, включая изображения.
-e robots=off вы не хотите, чтобы wget подчинялся правилам файла robots.txt
-U mozilla идентификатор вашего браузера.
–random-wait указывает wget делать случайные интервал задержек между скачиваниями, своеобразная защита от возможного попадания в бан
Еще несколько полезных параметров wget:
–limit-rate=20k ограничение скорости закачки
-b продолжает выполнять wget даже после выхода из консоли
-o $HOME/wget_log.txt выводим в лог выходные сообщения

Полезный пример использования: когда wget закончит скачивание будет выведено сообщение:
wget URL ; notify-send "Done"

echo 'wget -c www.example.com/files.iso' | at 09:00    начать закачку в указанное время
ldd /usr/bin/ssh    вывести список библиотек, необходимых для работы ssh
alias hh='history'    назначить алиас hh команде history

Ну и так по мелочи разное.

    * login запрос от пользователя имени и пароля (запрос от системы к пользователю) для входа в систему( по умолчанию, при наборе пароля, он не отображается).
    * logout выход из текущего сеанса оболочки.
    * startx команда для запуска графического интерфейса X Window (не путайте с системой Windows.Не бойтесь. Это не она:)).
    * shutdown останавливает систему и предотвращает повреждение файловой системы при этом, но,используется только при работе в консольном режиме.При работе в режиме X Window, не используйте.
    * halt быстрое и корректное выключение системы.
    * poweroff корректное выключение системы.
    * reboot корректное выключение с последущей загрузкой.Перезагрузка.
    * vmstat выдаёт сведения о процессах, памяти и загруженности центрального процессора.
    * su вход в сеанс администратора, но прийдётся ввести пароль.Для выхода из этого сеанса наберите exit и нажмите ENTER.
    * apropos поиск строки в заголовках и названиях документации ( дополнительно вводится слово для поиска). Выдаёт список всего найденного.
    * cal форматированный календарь на текущий месяц ( добавить y и будет календарь на весь текущий год).
    * date отображает текущие дату и время, по системным часам ядра.
    * oclock простые часы, которые висят на рабочем столе (много дополнительных параметров).
    * finger отображение информации о пользователе, имя которого указано в команде.
    * hostname команда отображает идентификатор данного узла сети ( его имя). root может изменить имя узла на новое.
    * hwclock встроенные часы Вашего компьютера.Для изменения даты и времени и синхронизации с системными часами, необходимы привелегии root.
    * pwd отображает полный путь к текущему каталогу.
    * tzselect запуск утилиты, которая позволяет выбрать часовой пояс.
    * uname выводит информацию об используемой операционной системе (при вводе дополнительных параметров команды , выдаёт довольно много информации).
    * uptime показывает текущее время, продолжительность сеанса , количество пользователей и загруженность процессора.
    * users отображает краткий список пользователей работающих в системе в данный момент.
    * w подробная информация о всех пользователях, работающих в данный момент и также простой, вход в систему и др.Если нужен один пользователь, то указать имя в параметре.
    * whatis поиск по базе данных страниц руководства и отображение краткого описания.
    * who список пользователей работающих в системе в данный момент.
    * whereiz находит файлы, страницы справочного руководства для указанной команды.
    * which показывает полный путь к исполняемому файлу команды.
    * whoami показывает текущий идентификатор пользователя, работающего в данном терминале.
    * write отправляет сообщение другому пользователю, находящемуся в системе, путём копирования строк с терминала отправителя на терминал получателя.
    * wall отправляет сообщение на терминал каждого пользователя находящегося в системе в данный момент.
    * history показывает пронумерованный список команд, которые Вы выполняли в этом и предыдущем сеансе. Если в списке историии их довольно много, то увидите последние.
    * jobs выводит список всех выполняемых и приостановленных задач.
    * kill завершить процесс (необходимо указать какой).
    * killall позволят управлять процессами используя их имена или имена файлов, а не идентификаторы как в kill. Завершаются все указанные процессы.
    * kernelversion показывает основную и дополнительную версии ядра.
    * nice позволяет отобразить или настроить приоритет задачи.
    * ps выводит список всех работающих процессов.
    * pstree показывает иерархию процессов системы, что хорошо показывает их взаимозависимость.
    * renice задаёт приоритет для указанной задачи.
    * script позволяет записывать весь вывод с терминала в файл.Что бы остановить запись нажмите Ctrl+d.Если имя файла не указано то записывается в typescript.
    * times показывает полное время выполнения процессов для всей системы и данного пользователя.
    * top запускает программу , которая позволяет управлять процессами.И ещё много дополнительной, полезной информации.
    * cd смена текущего каталога.По умолчанию переходит в домашний каталог текущего пользователя (если без параметров).
    * dir отображает файлы в текущем каталоге в алфавитном порядке и с учётом регистра.
    * file показывает тип содержимого указанного файла(текст, выполняемый, данные).
    * find поиск файлов в текущем каталоге.Если указать путь, можно искать везде.
    * free отображает информацию об оперативной памяти, подкачки, кэше,свободная памать, общая и т.д.
    * ls показывает все файлы в текущем каталоге в алфавитном порядке.Аналогична dir.
    * last показывает список пользователей, которые заходили в систему с момента создания файла /var/log/wtmp.
    * lastlog проверяет историю входа в систему зарегистрированных пользователей.Форматирует и выводит на печать файл /var/log/lastlog.
    * logger посылает запрос демону syslogd с просьбой поместить сообщение в системный журнал.
    * lpr отправляет документ на печать демону печати.
    * chmod изменяет режим доступа к файлу.Символьный или числовой формат.
    * chown смена владельца указанного файла.Требуется доступ root.
    * chage применяется для изменения срока действия учетной записи.Для администрирования.
    * chfn изменяет сведения о пользователе в файле /etc/passwd из которого берёт информацию команда finger .
    * chgrp команда для администратора,для изменения группы владельцев файла.
    * clear очищает экран терминала (если это возможно).
    * crontab обеспечивает возможность выполнения определённых задач по расписанию. Чаще используется администратором, хотя свои задачи могут быть и у пользователей.
    * csplit разбивает файл на несколько частей.Надо задать метод разбивки (строки и т.д.).
    * cp копирует один файл в другой, или несколько файлов в каталог.
    * dd копирование файла с одновременным выполнением различных, дополнительных преобразований.
    * dc калькулятор.
    * debugfs применяется для восстановления файловой системы (ext2,ext3) если недостаточно команды fsck.
    * df показывает количество используемого и свободного дискового пространства для всех подключенных разделов файловой системы.
    * du показывает количество блоков диска, занятых каждым из файлов каталога.
    * mc запускает программу Midnight Commander диспетчер файлов в текстовой консоли. Напоминает MSDOS менеджеры и довольно проста и удобна в использовании.Очень много нужных и удобных функций.
    * mkdir создание указанного каталога.
    * man справочное руководство.
    * mcat копирует необработанные данные на дискету.
    * mcopy использует отформатированную дискету MSDOS для копирования файлов в Линукс и из Линукс без предварительного подключения дискеты к файловой системе.
    * mdel удаляет файл на отформатированной дискете MSDOS.
    * mdir отображает содержимое каталога на дискете MSDOS.
    * mdu показывает дисковое пространство занятое каталогом MSDOS.
    * mesg контролирует доступ к Вашему терминалу, что бы коллеги не могли засыпать Вас сообщениями с помощью команды write
    * mformat создаёт на дискете файловую систему MSDOS.
    * mkbootdisk применяется в некоторых дистрибутивах, для создания загрузочной дискеты, содержащей всё необходимое для аварийной загрузки.
    * mktemp создаёт уникальное имя файла для временной работы.
    * mlabel создаёт метку тома на MSDOS на отформатированной дискете.
    * mmd создаёт подкаталог MSDOS на отформатированной дискете.
    * mmount подключает к файловой системе отформатированное устройство MSDOS.
    * mmove перемещает или переименовывает файл на дискете MSDOS.
    * more средство постраничного просмотра текстового файла.
    * mv переименовывает или перемещает файлы или каталоги.
    * rm удаление указанного файла.Можно и много удалить.
    * rmdir удаление указанного пустого каталога.
    * safedelete удалиние указанного файла в каталог safedelete,где он хранится некоторое время перед необратимым удалением.
    * stat отображение всей доступной информации об указанном файле.
    * touch изменяет время последнего доступа или изменения файла на текущее время.
    * undelete восстанавливает файлы удалённые командой safedelete.
    * wc показывает число строк, слов и символов в файле.
    * bunzip2 распаковывает указанный файл на 30%быстрей чем gzip.
    * bzip2 сжимает указанный файл по ускоренному алгоритму.
    * bzip2recover делает попытку восстановить данные из повреждённого файла сжатого bzip2.
    * compress сжимает указанный файл по другому алгоритму.
    * uncompress распаковывает файл сжатый предыдущей командой.
    * cpio позволяет создавать архивы и извлекать из архивов файлы.Позволяет копировать файлы. Необходимо указывать соответствующие параметры.
    * gpg позволяет зашифровать и расшифровать файл.Метод шифрования открытым ключом. Позволяет создавать электронные подписи.Если этой программы нет у Вас, скачайте http://www.gnupg.org
    * gzip сжимает указанный файл.
    * gunzip распаковывает указанный файл (расширения .Z,.gz,.tgz,.zip ).
    * gzexe позволяет сжать исполняемый файл с указанным именем так, что бы он автоматически распаковывался и выполнялся, когда пользователь даёт команду на выполнение сжатого файла.
    * gpasswd устанавливает пароль группы.
    * mcrypt Шифрует указанный файл.Создаётся новый файл в рабочем каталоге с расширением .enc. Вам будет предложено ввести пароль.Не забудьте его.
    * mdecrypt расшифровывает это же файл.Если этих утилит нет, скачайте http://mcrypt/hellug.grl
    * tar помещает два и более файлов в новый или существующий архив или извлекает их из архива.При задании каталога, заархивирует все файлы в каталоге и подкаталоге.
    * talk позволяет вести интерактивный диалог с пользователем сети ИНТЕРНЕТ.
    * tee отсылет выходные данные на два устройства вывода.Можно одновременно вывести на экран и в файл.
    * toe выдаёт сведения о существующих терминалах, которые могут быть использованы для дальнейшей работы.
    * touch изменяет время создания файла на текущее.Если файл не существует, то создаёт новый, пустой файл.
    * unarj распаковывает или выводит список содержимого указанного архива в формате .ARJ(формат сжатия MS DOS).
    * unzip распаковывает и извлекает файлы из архивов , созданных утилитами ZIP ( Linux,MS DOS,Microsoft Windows ).
    * zip архивирует и сжимает файлы.
    * zipinfo отображает информацию о содержимом архива.Если указать имя, то выдаст информацию о конкретном файле.
    * zipnote позволяет вывести и отредактировать комментарии к файлам из архива ZIP.
    * zipsplit позволяет разделить архив zip на достаточно маленькие части, для записи их на сменные носители, и записывает файлы на указанное устройство(дискеты).
    * zforce добавляет расширение .gz ко всем файлам в рабочем каталоге, или к указанному файлу, которые были сжаты, но не имеют расширения.Т.е. предотвращает повторное сжатие.
    * uuencode кодирует двоичный файл для передачи по ASC11сетям.
    * uudecode декодирует выше названный файл.
    * autorun автоматически распознаёт все доступные приводы CDROM в системе, монтирует их при вставке диска и может запускать отдельные приложения (например проигрыватель).Для использования, необходимо добавить параметры в файл привода.
    * badblocks проверить указанное устройство на наличие повреждённых секторов (указать устройство).
    * eject извлекает носитель из указанного устройства.Если устройство смонтировано то команда производит размонтирование перед извлечением носителя.
    * e2fsck проверяет и при необходимости восстанавливает повреждённый том файловой системы (ext2,ext3).
    * echo выводит строку текста на стандартное устройство вывода.
    * fdformat форматирование гибкого диска.Дополнительно вводится имя устройства и необходимый вид форматирования.
    * fg переводит процесс выполняемый в фоновом режиме в приоритетный режим.
    * fgconsole показывает количество активных виртуальных консолей.
    * fsck проверяет и восстанавливает файловую систему.
    * mount монтирование файловой системы.
    * umount отмонтирование файловой системы (в обоих командах необходимо указать, что именно).
    * rdev при вызове без параметров выводит информацию о текущей файловой системе.
    * rcp применяется для копирования файлов с одного компьютера на другой.
    * rdate получает значение даты и времени от другого узла сети.Используется для синхронизации системного времени узлов.
    * rename переименовывает файлы.Очень удобно, когда много файлов.
    * resize изменяет размер окна виртуального терминала в графическом окружении.
    * restore восстанавливает файлы заархивированные с помощью команды dump.
    * runlevel отображает текущий и предыдущий уровни выполнения.
    * shred выполняет безопасное удаление файла предварительно перезаписав его содержимое на другой диск.
    * sleep приостанавливает начало выполнения процесса на заданное количество секунд.
    * usleep приостанавливает на микросекунды.
    * sync очищает буферы файловой системы.
    * cmp производит быстрое сравнение двух указанных файлов.Если они идентичны, то никакие сообщения не выводятся.
    * column форматирует входной текст из указанного файла в список из пяти колонок.
    * diff сравнивает два указанных текстовых файла.Каждое отличие выводится в контексте. Позволяет сравнивать каталоги.
    * diff3 сравнивает три указанных файла и выводит результаты.
    * enscript преобразует указанный текстовый файл в формат Post Script.Вывод может быть направлен на печать или записан в файл.
    * fmt данная утилита производит форматирование каждой строки в указанном файле таким образом, что все строки имеют одинаковую ширину.
    * head утилита выводит первые десять строк файла.Можно и несколько файлов.

Вытаскиваем аудио из видеофайла.
mplayer -ao pcm -vo null -vc dummy -dumpaudio -dumpfile <output-file> <input-file>