Рубрики
cpu \ mem \ disk \ usage \ daemon \ процессы

Система информация \ uname \ lsb-release \ uptime \ dmesg \ id \ htop \ cron \ jobs \ kill

Версия операционной системы и ядра

# uname -a                               # Версия операционной системы и ядра (BSD)
# lsb_release -a                         # Информация о релизе (LSB distribution)
# cat /etc/SuSE-release                  # Версия SuSE
# cat /etc/debian_version                # Версия Debian

Используйте /etc/DISTR-release где DISTR= lsb (Ubuntu), redhat, gentoo, mandrake, sun (Solaris) и т.д. . Смотри так-же /etc/issue.

# uptime                                 # Аптайм, время прошедшее с момента запуска системы + текущая нагрузка(LA)
# hostname                               # Имя хоста
# hostname -i                            # IP адрес хоста (только для Linux)
# man hier                               # Документация(man page) по иерархии файловой системы
# last reboot                            # История перезагрузок(reboot)

Железо определенное ядром при загрузке

# dmesg                                  # Железо, определенное при загрузке
# lsdev                                  # Информация об установлено железе
# dd if=/dev/mem bs=1k skip=768 count=256 | strings -n 30 # Прочитать данные из BIOS

# cat /proc/cpuinfo                      # Модель процессора
# cat /proc/meminfo                      # Физическая память
# grep MemTotal /proc/meminfo            # Объем физической памяти
# watch -n1 'cat /proc/interrupts'       # Следить за прерываниями
# free -m                                # Использованная и свободная память (-m для MB)
# cat /proc/devices                      # Сконфигурированные устройства
# lspci -tv                              # Устройства PCI
# lsusb -tv                              # Устройства USB
# lshal                                  # Показать список всех устройств с их свойствами
# dmidecode                              # Показать информацию из DMI/SMBIOS:, из BIOS

Все о системе

lshw - команда выведет полную информацию о железе, следует выполнять с правами root'а (sudo lshw).
hwinfo - вывод информации о железе. Предварительно требуется установить утилиту (sudo apt-get install hwinfo).
uname -a - вывод информации о системе, версии ядра, дистрибутиве и архитектуре (32/64 бита).
lsb_release -a - выведет название и версию используемого дистрибутива.
cat /etc/*release* - аналогично предыдущей команде, плюс информация о базовом дистрибутиве (например, для Linux Mint 9 выведет еще и Ubuntu 10.04, как базовый дистрибутив).
ls -clt / | tail -n 1 | awk '{ print $7, $6, $8 }' - с помощью этой команды можно узнать дату и время установки системы.
ls -dl /var/log/installer/ - аналогично предыдущей команде (но немного иного принципа), позволяет узнать дату и время установки системы.

Загрузка, статистика, сообщения

Следующие команды применяются для мониторинга текущего состояния системы
# top                                    # Утилита TOP, различная системная информация, процессы, LA
# mpstat 1                               # Статистика касающаяся процессора
# vmstat 2                               # Статистика виртуальной памяти, дисков и процессора
# iostat 2                               # Статистика операций ввода/вывода,I/O 
# systat -vmstat 1                       # BSD суммарная системная статистика 
# systat -tcp 1                          # BSD статистика tcp (так-же можно -ip)
# systat -netstat 1                      # BSD активные сетевые соединения
# systat -ifstat 1                       # BSD сетевой трафик на активных интерфейсах
# systat -iostat 1                       # BSD работа процессора и дисков
# tail -n 500 /var/log/messages          # Последние 500 сообщений Syslog из файла messeges
# tail /var/log/warn                     # Системные предупреждения

Пользователи

# id                                     # Показать uid(имя), gid(группу), текущего пользователя
# last                                   # Статистика последних входов в систему
# who                                    # Показать кто в системе в данный момент
# groupadd admin                         # Создать группу "admin" и пользователя colin (Linux/Solaris)
# useradd -c "Colin Barschel" -g admin -m colin
# usermod -a -G             # Добавить существующего пользователя в группу (Debian)
# groupmod -A               # Добавить существующего пользователя в группу (SuSE)
# userdel colin                          # Удалить пользователя colin (Linux/Solaris)

# adduser joe                            # FreeBSD добавить пользователя joe (интерактивно)
# rmuser joe                             # FreeBSD удалить пользователя joe (интерактивно)
# pw groupadd admin                      # FreeBSD создать группу, используя утилиту pw 
# pw groupmod admin -m newmember         # FreeBSD добавить нового участника в группу
# pw useradd colin -c "Colin Barschel" -g admin -m -s /bin/tcsh # FreeBSD создать пользователя (утилита pw) 
# pw userdel colin; pw groupdel admin    # FreeBSD удалить пользователя и группу (утилита pw)

Пароли, хранятся в файле /etc/shadow, для Linux и в /etc/master.passwd для FreeBSD, в зашифрованном виде. Если файл master.passwd 
был изменен вручную, нужно воспользоваться командой # pwd_mkdb -p master.passwd , что-бы пере собрать базу данных.

Что-бы временно запретить вход в систему, всем кроме root, используйте nologin.
# echo "Sorry no login now" > /etc/nologin           # (Linux)
# echo "Sorry no login now" > /var/run/nologin       # (FreeBSD)

Системные лимиты

Некоторые приложения(Proxy, Web сервера, базы данных) используют большие количества открытых файлов и сокетов, 
и как правило, установок по-умолчанию им недостаточно.

Оболочка/скрипт
За лимиты оболочки отвечает ulimit. Текущее состояние можно проверить ulimit -a. Например, 
что-бы увеличить кол-во открытых файлов с 1024 до 10240 нужно сделать:
# ulimit -n 10240                    # Команда верна только в оболочке
Так-же команда ulimit используется в скрипте, что-бы увеличить лимиты только для скрипта.
пользователь/процесс
Лимиты пользователей и процессов устанавливаются в /etc/security/limits.conf. Например:
# cat /etc/security/limits.conf
*   hard    nproc   250              # Лимит пользовательских процессов
asterisk hard nofile 409600          # Лимит открытых файлов для приложения


Обще системные лимиты устанавливаются командой Sysctl. Большинство этих переменных, действуют до перезагрузки, 
что-бы ограничения остались после ребута, внесите их в файл /etc/sysctl.conf.
# sysctl -a                          # Показать все системные переменные
# sysctl fs.file-max                 # Показать максимально-возможное кол-во открытых файлов
# sysctl fs.file-max=102400          # Изменить максимальное кол-во открытых файлов
# cat /etc/sysctl.conf
fs.file-max=102400                   # Постоянное значение в файле sysctl.conf
# cat /proc/sys/fs/file-nr           # Кол-во используемых файловых дескрипторов

Работа с процессами

top                  - процессы
htop                 - процессы
killall -9 name      - убить процесс name
kill PID№            - убить процесс по PID
kill 3936            - убить процесс
ps -aux              - показать процессы
ps U 1007            - показать процессы пользователя с uid 1007
ps U ivanov          - показать процессы пользователя ivanov
slay ivanov          - убить все процессы пользователя ivanov

Список процессов и PID


Каждая запущенная программа имеет уникальный номер, PID процесса. 
Список всех процессов можно получить утилитой ps.
 
# ps -auxefw                         # Полный список всех запущеных процессов

Однако зачастую целесообразней использовать эту команду с выводом на pgrep:
# ps axww | grep cron
  586  ??  Is     0:01.48 /usr/sbin/cron -s

# ps axjf                            # Все процессы в виде дерева (Linux)
# ps aux | grep 'ss[h]'              # Найти все PID процесса ssh, исключая PID процесса grep
# pgrep -l sshd                      # Найти PID процесса по имени(или по его части)
# echo $$                            # PID процесса текущей оболочки
# fuser -va 22/tcp                   # Список процессов использующих порт 22 (Linux)
# pmap PID                           # Карта памяти процессов (выявление утечек памяти) (Linux)
# fuser -va /home                    # Список процессов, имеющих доступ в раздел /home
# strace df                          # Отслеживать(Trace) системные вызовы и сигналы
# truss df                           # Тоже что и выше, но на FreeBSD/Solaris/Unixware

Изменить приоритет выполнения

Изменить приоритет процесса можно командой renice. 
Отрицательное значение, означает более высокий приоритет.
# renice -5 586                      # Повысить приоритет процесса с PID 586
586: old priority 0, new priority -5

C помощью nice можно запускать процессы с определенным приоритетом. Что-бы узнать, используете вы, /usr/bin/nice или nice встроенный в шелл, используйте # which nice).
# nice -n -5 top                     # Повысить приоритет процесса(/usr/bin/nice)
# nice -n 5 top                      # Понизить приоритет процесса(/usr/bin/nice)
# nice +5 top                        # nice Встроенный в шелл, понизить приоритет процесса

В то время как nice отвечает за распределение процессорного времени, другая полезная команда ionice, распределяет дисковый IO. 
Она весьма полезна в случае приложений, активно использующих дисковый IO(например компилирование). 
Вы можете установить для приложения соответствующий класс ( idle - best effort - real time), 
загляните в man, там все довольно доступно рассказано.
# ionice c3 -p123                    # Установить класс idle для pid 123 (только Linux)
# ionice -c2 -n0 firefox             # Запустить Фаерфокс с высоким приоритетом и классом best effort
# ionice -c3 -p$$                    # Установить для текущей оболочки класс idla

Последняя команда очень полезна при компилировании или отладке больших проектов. 
Любая команда, запущенная из текущей оболочки будет иметь пониженный приоритет. 
Переменная $$, содержит PID текушей оболочки (попробуйте echo $$)
FreeBSD использует idprio/rtprio (0 = максимальный приоритет, 31 = наиболее свободный(most idle)):
# idprio 31 make                     # Компилировать с низким приоритетом
# idprio 31 -1234                    # Установить низкий приоритет для PID 1234
# idprio -t -1234                    # -t удаляет real time/idle приоритеты

Jobs

bg/fg
Процессы запущенные в шелле, можно переключать в фоновый режим(background), приостанавливать, нажав [Ctrl]-[Z], 
и выводить обратно в foreground, так-же можно использовать команды bg and fg. 

Команда jobs, выведет список запущенных в фоновом режиме процессов.
# ping cb.vu > ping.log
^Z                                   # Команда ping приостановлена [Ctrl]-[Z] 

# bg                                 # Отправить в фон и продолжать выполнение

# jobs -l                            # Список фоновых процессов
[1]  - 36232 Running                       ping cb.vu > ping.log
[2]  + 36233 Suspended (tty output)        top

# fg %2                              # Вернуть процесс 2 в обычный режим
Что-бы процесс продолжал свое выполнение после закрытия оболочки, можно воспользоваться командой nohup.

# nohup ping -i 60 > ping.log &

top

Программа top показывает данные работы запущенных процессов. Смотрите так-же htop с htop.sourceforge.net, 
это более расширенная версия программы, работает на LInux и FreeBSD(ports/sysutils/htop/). 
Что-бы получить справку по ключам, во время работы top, нажмите h. Вот некоторые полезные ключи:
u [имя пользователя] Посмотреть процессы принадлежащие конкретному пользователю. 
Используйте + или пробел для возврата в режим полного просмотра.
k [pid] Убить (завершить) процесс с pid.
1 Показать статистику по процессору (только Linux)
R Переключить сортировку

kill

Прерывание процессов или посылка сигнала с помощью команд kill или killall.
# ping -i 60 cb.vu > ping.log &
[1] 4712

# kill -s TERM 4712                  # то-же что и kill -15 4712
# killall -1 httpd                   # отправить сигнал HUP процессу с точным именем
# pkill -9 http                      # отправить сигнал TERM процессу с именем или его частью
# pkill -TERM -u www                 # отправить сигнал TERM процессу выполняющемуся от имени конкретного пользователя
# fuser -k -TERM -m /home            # убить процессы имеющие доступ к /home 

Наиболее важные сигналы:
1       HUP Часто используется для перечитывания конфигурационных файлов
2       INT Прервать(interrupt)
3       QUIT Выйти
9       KILL Безусловно прибить процесс
15     TERM Мягкое прерывание