Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab_Linux_2(Proc).doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
179 Кб
Скачать
☆

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

Во время выполнения процедуры регистрации в операционной системе Linux, она автоматически производит следующие операции:

  1. начинается процесс стандартно с проверки логина пользователя и пароля;

2. затем определяется вся палитра набора, состоящего из переменных окружения;

3. завершает этот процесс запуск интерпретатора команд. Именно он и именуется оболочкой операционной системы.

ps –help - выдаст вам справку по команде ps, именно она владеет полной информацией и работает с полным списком запущенных Вами процессов. Встроенная система для получения справок man – предоставит дополнительную справку. man ps - выведет на экране полную информацию по команде ps, не забывайте, что результат отдельных программ напрямую зависит от ваших прав в рамках ОС.

init – изменяет текущий уровень запуска ОС командой, отвечающей за запуск и завершение процессов в Linux; для тех же целей разработаны и специальные скрипты. Они хранятся в /etc/inittab. Уровень 0 – обеспечит выключение, а уровень 6 – перезагрузку. Соответственно для выключения init 0, для перезагрузки init 6. init используется и для изменения уровня запуска ОС. Рассмотрим уровни более детально:

1 – однопользовательский режим. Доступ разрешен пользователю root;

  1. –многопользовательский режим без поддержки сетевых функций;

  2. –с поддержкой сети;

  3. –зарезервировано;

  4. –с использованием графической оболочки.

init 3 позволит завершить действие графической оболочки. В итоге она закроется и система перейдет на уровень запуска 3. Для возврата нужно ввести init 5. По умолчанию уровень запуска определяется initdefault из /etc/inittab. Для запуска системы в случае необходимости поддержки графической оболочки применяйте команду: id:5:initdefault. Если 5 заменить на 3, то графическая оболочка при старте системы не запустится. Никогда не устанавливайте уровень запуска системы по умолчанию со значениями от 0 до 6.

В ОС Linux доступен просмотр списка задач с помощью команды ps. Без уточняющих параметров она отобразит список процессов, запущенных во время текущего сеанса работы. ps --help стандартно выдаст полный список опций.

Cписок всех процессов, запущенных в системе:

ps -A - выдаст список процессов с идентификаторами (PID) и их именами или: ps -ax - выдаст тот же список процессов, но с полной строкой запуска

список задач, порожденных пользователем user: ps -U user

список задач, связанных с текущим терминалом: ps T

список задач, связанных с терминалом N: ps t ttyN

Если список задач большой, а нас интересует состояние одной или нескольких задач, можно воспользоваться grep: ps -U root | grep ppp - выдать список задач, содержащих "ppp" в имени. top отображает на экране данные об использовании ресурсов компьютера. 

Верхняя часть окна сообщит Вам итоговые данные о состоянии системы:

• текущее время;

• время с момента загрузки системы;

• число пользователей в системе;

• число процессов в условиях разных состояниях;

• данные об использовании памяти и процессора.

Ниже выводится таблица, характеризующая отдельные процессы. Число строк, отображаемых в этой таблице, определяется размером окна. Содержимое окна обновляется каждые 3 секунды. Нажатие клавиши h выводит справку по командам, которые позволяют изменить формат отображаемых данных и управлять некоторыми параметрами процессов в системе:

s или d - изменить интервалл обновления окна.

z - цветное/черно-белое отображение

n или # - количество отображаемых процессов

Можно отсортировать список процессов по использованию процессора (P), памяти (M), времени выполнения (T) и т.п. Однако, есть и более полезные команды, которые позволяют управлять процессами в интерактивном режиме:

k - снять (kill) задачу. По этой команде будет запрошен идентификатор процесса (PID), после ввода которого, процесс будет завершен.

r - изменить текущий приоритет задачи (renice). Как и при выполнении предыдущей команды, будет запрошен PID, и затем, новое значение приоритета (отображается в колонке NI). Диапазон значений приоритетов - от минус 20 (наивысший) до плюс 19. Отрицательные значения и 0 может устанавливать только пользователь root. Для выхода из top нажмите q 

Принудительное завершение процесса и изменение его приоритета можно выполнить и без команды top. Процессы в Linux позволяют обмениваться "сигналами" с ядром и другими процессами. При получении сигнала процессом, управление запускает подпрограмму для его обработки. Если ее нет, то или ядру. Linux оперирует специальной командой kill. Именно она делает возможной опцию послать заданному процессу любой сигнал. Список сигналов можно получить по команде: kill –l. В результате выполнения этой команды вы увидите список номеров и названий сигналов. Послать определенный сигнал выбранному процессу с помощью ввода в командной строке:

kill <-номерсигнала> номер PID выбранного процесса.

Например, нам нужно завершить работу приложения Midnight Commander (mc). Определим идентификатор процесса mc: ps -A | grep mc. Пусть PID= 11597. Посылаем сигнал SIGQUIT (номер 3): kill -3 11597 После чего процесс mc обработает сигнал GIGQUIT и нормально завершится. Однако, если mc "завис", то, естественно, завершиться он не сможет, поскольку подпрограмма обработки сигнала SIGQUIT не получит управления. В таких случаях используется сигнал под номером 9 (SIGKILL), обрабатываемый ядром операционной системы, и принудительно завершающий указанный процесс: kill -9 11597. Если в команде kill номер сигнала не указан, то тогда используется SIGKILL, предыдущую команду можно было ввести как kill PID: kill 11597. Завершение процесса прерывает и запущенные в нем процессы. Для завершения процесса по имени используется команда killall: • killall mc - завершить процесс, в имени которого есть "mc", killall -u user - завершить процессы, порожденные пользователем user. Команды nice и renice измененяют приоритет процессов. При запуске процесса, его приоритет задается значением родительского процесса, например, терминала xterm или командной оболочки shell. Команда nice позволяет запустить процесс с приоритетом, равным сумме родительского (например 8) и числа, задаваемого в качестве опции команды nice:

nice -<число> команда

nice -4 mc - запустит mc с приоритетом = 8+4=12 Команда renice используется для изменения приоритета уже запущенного процесса:

renice <число> -p PID

renice 4 -p 11597 - установить значение приоритета для процесса mc (PID=11597) равным 4. После выполнения, renice выдаст строку результата: 11597: old priority 12, new priority 4 - старый приоритет 12, новый приоритет 4 Задание нулевого и отрицательного числа приоритета допустимо лишь для пользователя с правами root.

Дополнительно для управления процессами можно использовать:

at - запускает процесс в определенное время;

atq - выводит список заданий, поставленных в очередь командой at;

jobs – список фоновых процессов которые мы запустили;

bg – переводит процесс в фон;

fg – возвращает процесс из фона.

Для запуска программы в фоновом режиме после её имени поставить &.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]