Версия операционной системы и ядра
1 2 3 4 5 6 7 8 9 10 11 12 |
# 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) |
Железо определенное ядром при загрузке
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# 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 |
Все о системе
1 2 3 4 5 6 7 |
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/ - аналогично предыдущей команде (но немного иного принципа), позволяет узнать дату и время установки системы. |
Загрузка, статистика, сообщения
1 2 3 4 5 6 7 8 9 10 11 12 |
Следующие команды применяются для мониторинга текущего состояния системы # 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 # Системные предупреждения |
Пользователи
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# id # Показать uid(имя), gid(группу), текущего пользователя # last # Статистика последних входов в систему # who # Показать кто в системе в данный момент # groupadd admin # Создать группу "admin" и пользователя colin (Linux/Solaris) # useradd -c "Colin Barschel" -g admin -m colin # usermod -a -G <group> <user> # Добавить существующего пользователя в группу (Debian) # groupmod -A <user> <group> # Добавить существующего пользователя в группу (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) |
Системные лимиты
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Некоторые приложения(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 # Кол-во используемых файловых дескрипторов |
Работа с процессами
1 2 3 4 5 6 7 8 9 |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Каждая запущенная программа имеет уникальный номер, 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 |
Изменить приоритет выполнения
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
Изменить приоритет процесса можно командой 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
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
1 2 3 4 5 6 7 8 |
Программа top показывает данные работы запущенных процессов. Смотрите так-же htop с htop.sourceforge.net, это более расширенная версия программы, работает на LInux и FreeBSD(ports/sysutils/htop/). Что-бы получить справку по ключам, во время работы top, нажмите h. Вот некоторые полезные ключи: u [имя пользователя] Посмотреть процессы принадлежащие конкретному пользователю. Используйте + или пробел для возврата в режим полного просмотра. k [pid] Убить (завершить) процесс с pid. 1 Показать статистику по процессору (только Linux) R Переключить сортировку |
kill
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Прерывание процессов или посылка сигнала с помощью команд 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 Мягкое прерывание |