- •1.4 Структура операционных систем
- •1.4.1 Монолитная система
- •1.4.2 Многоуровневая структура ос
- •1.4.3 Модель экзоядра
- •1.4.4 Микроядерная архитектура (модель клиент-сервер)
- •1.4.5 Обобщение сравнения моделей
- •Интерфейс пользователя
- •Команды
- •Командная строка
- •Договоренности о формате командной строки
- •C.5.4. Переназначение потоков.
- •C.5.5. Переназначение стандартного потока ошибок (в unix).
- •C.5.6. Перенаправление потока ввода.
- •C.5.7. Конвейерная обработка.
- •Управление потоком выполнения
- • Стандартный ввод/вывод
- •Диагностика и другие виды вывода
- •Командные строки и конвейеры
- •Специальные символы
- •8.2.1. Запуск команды в фоновом режиме (символ &)
- •8.2.2. Последовательное выполнение команд (символ ;)
- •8.2.4. Отмена специального значения (метасимвол кавычки)
- •8.2.4.1. Использование кавычек для отмены значения символа пробел
- •Использование кавычек
- •Окружение
- •Переменная окружения
- •Взаимодействие процессов посредством окружения
- •Переменные Shell
- •Позиционные параметры
- •Файловая система
- •Структура файловой системы
- •Монтируемые файловые системы
- •Интерфейс с файловой системой
- •Разновидности файлов
- •Обычные файлы
- •Файлы-каталоги
- •Специальные файлы
- •Связывание файлов с разными именами
- •Именованные программные каналы
- •Файлы, отображаемые в виртуальную память
- •Синхронизация при параллельном доступе к файлам
- •Процессы
- •Процессы
- •Атрибуты процесса
- •Идентификатор процесса (pid)
- •Идентификатор родительского процесса (ppid)
- •Поправка приоритета (ni)
- •Терминальная линия (tty)
- •Реальный (uid) и эффективный (euid) идентификаторы пользователя
- •Реальный (gid) и эффективный (egid) идентификаторы группы
- •Атрибуты файлов
- •Порождение процессов в Linux
- •Управление процессами
- •Типы процессов
- •Права доступа к файлам и каталогам
- •Жизненный цикл процесса в unix и основные системные вызовы
- •Контекст процесса
- •Приоритеты процессов
- •Создание процесса
- •Сон и пробуждение
- •Завершение выполнения процесса
- •Получение информации о процессах
- •Управление приоритетом процессов
- •Сигналы: посылка и обработка
- •Доставка и обработка сигнала
- •Основные сигналы
- •Посылка сигналов
- •Сигналы, посылка сигналов, команда kill
- •Приоритет выполнения процесса, команда nice
- •Текущий контроль процессов, команды ps и top
- •Защита фоновых процессов, команда nohup
- •Пользователь
- •. Привилегированный пользователь
- •Управление пользователями и правами доступа База данных пользователей системы
- •Изменение базы данных пользователей
- •Изменение прав доступа
- •Ограничения сеанса пользователя
- •Команды архивирования файлов
- •4.7.1. Программа tar
- •4.7.2. Программа gzip
- •4.7.3. Программа bzip2
- •Команды поиска grep и find
- •5.5. Перенаправление ввода/вывода, каналы и фильтры
- •5.5.2 Оператор |
- •5.5.3 Фильтры
- •Сигналы
- •Приложение. Список реентерабельных функций
- •Регистрация системных сообщений, система syslog
- •Конфигурационный файл демона syslogd
- •Info Информационные сообщения
- •Учет продолжительности соединений
- •Пользователи и группы
- •Файл /etc/passwd
- •Файл /etc/group
- •Файл /etc/shadow
- •Системные регистрационные имена
- •Изменение действующего идентификатора пользователя
- •Изменение действующего идентификатора группы
- •Изменение пароля и характеристик учетной записи, связанных с регистрацией
- •Правила построения паролей
- •Действие команды passwd
- •Устаревание паролей
- •Показ атрибутов пароля
- •Стандартные значения атрибутов
- •Просмотр базы данных учетных записей
- •Получение списка зарегистрировавшихся пользователей
- •Средства создания, изменения и удаления учетных записей пользователей
- •Средства создания, изменения и удаления групп
Посылка сигналов
Для посылки сигналов из командного интерпретатора используется команда kill. Она имеет следующий синтаксис:
kill [ -сигнал ] pid ...
Эта команда посылает указанный сигнал (по умолчанию - SIGTERM) всем процессам с указанными идентификаторами. Посылать сигнал можно и не существующему процессу - выдается предупреждение, но другим процессам сигнал посылается. Посылаемый сигнал задается по имени без префикса SIG или по номеру, например:
[kravchuk@arturo 16:56:55 /]$ echo $$
3697
[kravchuk@arturo 16:56:58 /]$ kill -STOP 3697
В результате текущий сеанс зависает.
19.Команды управления процессами
Сигналы, посылка сигналов, команда kill
Для управления процессами в системе предусмотрена команда kill.
Формат этой команды kill <-сигнал> pid, где <-сигнал> - номер или символьное имя посылаемого процессу сигнала. Команду kill чаще всего используют для прекращения выполнения процесса. Наиболее часто используемые сигналы:
9 (KILL) - гарантированное уничтожение процесса
15 (TERM) - программное завершение процесса
1 (HUP) - сигнал отбоя. Многие системные процессы при получении этого сигнала перечитывают свои конфигурационные файлы. Вообще рекомендуется давать сигнал HUP перед посылкой сигнала KILL.
Иногда, правда редко, процессы впадают в такие состояния, что их нельзя "убить" даже выдав команду kill -9 pid.
В этом случае самый эффективный способ "убить" процесс - команда reboot.
Приоритет выполнения процесса, команда nice
От приоритета процесса зависит, какую часть времени центрального процессора он получит. Выбирая процесс для выполнения, ядро находит процесс с самым высоким "внутренним приоритетом". Непосредственно изменить значение внутреннего приоритета невозможно, но можно повлиять на него, изменяя так называемое nice-значение.
Для этой цели используется команда nice. Формат этой команды:
nice <относительный приоритет от процесса-родителя> <команда>. Относительный приоритет в системе FreeBSD находится в пределах от -20 до +20.
Важно запомнить: Чем ниже значение nice - тем выше приоритет процесса.
Пример:
# nice -10 /usr/local/mygame
Если пользователь не предпримет особых мер, то новый процесс унаследует приоритет своего родителя. Пользователь может увеличить значение nice (т.е. понизить приоритет), но не сможет уменьшить его, даже для возврата процесса к приоритету, полученному при "рождении".
Привилегированный пользователь может менять приоритеты процессов как угодно, вплоть до того, что все процессы не смогут работать из-за одного единственного.
В системе FreeBSD существует команда renice, с помощью которой можно изменить приоритет уже запущенному процессу. Ее формат:
renice <приоритет> [-p pid] [-g <группа>] [-u <пользователь>]
Пример:
# renice +1 -p 989 -u daemon root -p 32
В примере понижается на 1 приоритет процессов с номерами PID 989 и 32, а так же у всег процессов, владельцами которых являются daemon и root.
Текущий контроль процессов, команды ps и top
Для текущего контроля состояния процессов в системе используется команда ps.
Если она введена без опций, то покажет только собственные процессы пользователя и процессы обмена с терминалом. Команда имеет опции:
-a - выдает информацию о всех пользовательских процессах
-е - показывает значения переменных окружения
-h - при выводе на PAGER (more или less) выводит заголовок листинга
-m - сортирует вывод по используемой памяти
-r - сортирует вывод по использованию времени центрального процессора
-x - вывод команды не ассоциирован с терминалами (т.е. показываются также например и процессы-демоны)
Наберите команду
# ps -ax
Посмотрим на листинг (здесь показана для краткости только одна строчка помимо заголовка и только часть полей):
USER PID STAT START TIME COMMAND
bob 1167 R+ 5:57PM 0:00.04 ps -ax
USER - имя владельца процесса
PID - идентификатор процесса
STAT - текущий статус процесса
R = выполнимый, T = остановленный
I = ожидающий, S = ожидающий (> 20 сек)
Z = зомби
Дополнительные флаги:
W = процесс свопирован
+ = процесс в приоритетном режиме своего терминала
START - время запуска процесса
TIME - время центрального процессора, потребленное процессом
COMMAND - имя и аргументы команды
Для самостоятельного изучения вам дается команда top.
Вывод этой команды аналогичен выводу команды ps.
Замечу только использование команды top - довольно дорогое удовольствие, т.к. она сама "пожирает" довольно много ресурсов системы. Не стоит ею злоупотреблять.