ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Выполнение процессаСостояние зомби – на этом этапе выполнение процесса закончилось, его код выгружается из памяти, окружение уничтожается, но запись в таблице процессов еще остается. Умирание процесса – после всех завершающих стадий удаляется запись из таблицы процессов – процесс завершил свою работу. Во время работы процесса, ядро контролирует его состояние, и в случае возникновения непредвиденной ситуации управляет процессом с помощью посылки ему сигнала. Сигнал – это простейший способ межпроцессорного (то есть между процессами) взаимодействия. Существует несколько типов сигналов. Для каждого из типов предусмотрено действие по умолчанию. Процесс может воспользоваться действием по умолчанию, или, если у него есть обработчик сигнала, то он может перехватить и обработать или игнорировать сигнал. Сигналы SIGKILL и SIGSTOP невозможно ни перехватить, ни игнорировать. По умолчанию возможны несколько действий: игнорировать – продолжать работу, несмотря на то, что получен сигнал. завершить – завершить работу процесса. завершить + core – завершить работу процесса и создать файл в текущем каталоге с именем core, содержащий образ памяти процесса (код и данные). остановить – приостановить выполнение процесса, но не завершать его работу и не выгружать код из памяти. Вот список всех сигналов, существующих в системе на сегодняшний день:
Немаловажную роль в жизни процессов играет также планировщик – это часть ядра, ответственная за многозадачность системы. Ведь в единицу времени на одном процессоре может выполняться только одна задача. Именно планировщик определяет, какой из запущенных процессов первым будет выполняться, какой вторым. Для этого у каждого процесса существует еще один параметр, называемый приоритетом. Для того, чтобы посмотреть приоритет процессов, нам необходимо использовать уже знакомую команду ps с параметром -l (long – расширенный вывод): [gserg@WebMedia gserg]$ ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 500 1554 1553 0 75 0 – 1135 wait4 pts/1 00:00:00 bash 0 R 500 1648 1554 0 81 0 – 794 – pts/1 00:00:00 ps [gserg@WebMedia gserg]$ Во время своей работы, планировщик в первую очередь ставит на выполнение задачи с меньшим приоритетом. Так, приоритетом 0, обладают только критические системный задачи, а отрицательным приоритетом – процессы ядра. Задачам с большим приоритетом достается меньше процессорного времени и потому, работают они как правило, медленнее, и потребляют намного меньше системных ресурсов. Остается только решить вопрос, а может ли пользователь управлять процессами и системными параметрами? Конечно может! Для этого в Linux есть набор инструментов, позволяющих изменять приоритет процесса, посылать процессам сигналы. О них мы с вами сейчас и поговорим. Первый инструмент – команда nice: nice -n command – позволяет изменять приоритет, с которым будет выполняться процесс после запуска. Без указания команды command выдает текущий приоритет работы. n по умолчанию равен 10. Диапазон приоритетов расположен от -20 (наивысший приоритет) до 19 (наименьший). Пример использования команды nice: [gserg@WebMedia gserg]$ less.bashrc & [1] 3070 [gserg@WebMedia gserg]$ ps -efl | grep less 0 T gserg 3070 3018 0 80 0 – 1004 finish 17:56 pts/3 00:00:00 less.bashrc [gserg@WebMedia gserg]$ nice -n 20 less.bashrc & [1] 3081 [gserg@WebMedia gserg]$ ps -efl | grep less 0 T gserg 3081 3018 0 99 19 – 1003 finish 18:01 pts/3 00:00:00 less.bashrc Сравнивая цифры приоритета, заметим, что команда less в первом случае выполнялась с приоритетом 80, а во втором – 99. Таким образом, команда nice сделала свое дело – понизила приоритет задачи. Нужно учесть только несколько особенностей выполнения команды nice. Во-первых, команда понизит приоритет насколько это возможно (в примере на 19 вместо 20). Во-вторых – повышать приоритет задачи в системе может только суперпользователь. Еще одна команда: nohup command – позволяет процессу продолжить выполнение даже при потере управляющего терминала (SIGHUP). Эту команду выгодно использовать когда необходимо выполнить команду продолжительного действия. Вы запускаете команду и закрываете терминальный сеанс, а она при этом продолжает выполняться. Вывод команды nohup сохранит в файл nohup.out в текущем каталоге. Самой часто используемой командой управления процессами можно по праву считать команду kill: kill -SIGNAL pid – посылает сигнал процессу с идентификатором pid. Если сигнал не указан, команда посылает процессу сигнал SIGTERM. Вот пример ее использования: [gserg@WebMedia gserg]$ less & [1] 1352 [gserg@WebMedia gserg]$ ps PID TTY TIME CMD 1322 pts/2 00:00:00 bash 1352 pts/2 00:00:00 less 1353 pts/2 00:00:00 ps [gserg@WebMedia gserg]$ kill -SIGKILL 1352 [gserg@WebMedia gserg]$ ps PID TTY TIME CMD 1322 pts/2 00:00:00 bash 1355 pts/2 00:00:00 ps [1]+ Killed less Не менее популярной чем kill командой является killall: killall -s SIGNAL процесс – посылает сигнал всем процессам с именем процесс. Если сигнал не указан, посылает SIGTERM. Сигнал для этой команды необходимо указывать без приставки SIG. Для получения соответствия цифрового вида и имени сигнала используется опция -l команды killall. Вот пример ее использования: [gserg@WebMedia gserg]$ less./.bashrc& [1] 1374 [gserg@WebMedia gserg]$ less./.bashrc& [2] 1375 [1]+ Stopped less./.bashrc [gserg@WebMedia gserg]$ less./.bashrc& [3] 1376 [2]+ Stopped less./.bashrc [gserg@WebMedia gserg]$ ps PID TTY TIME CMD 1322 pts/2 00:00:00 bash 1374 pts/2 00:00:00 less 1375 pts/2 00:00:00 less 1376 pts/2 00:00:00 less 1377 pts/2 00:00:00 ps [3]+ Stopped less./.bashrc [gserg@WebMedia gserg]$ killall -s KILL less [1] Killed less./.bashrc [2]- Killed less./.bashrc [3]+ Killed less./.bashrc [gserg@WebMedia gserg]$
Не нашли, что искали? Воспользуйтесь поиском:
|