Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Выполнение задач в фоновом режиме




Предостережение

Скрипты из директория /etc/rcS.d выполняются на уровнях от 1 до 5, так что вы, как правило, не должны их трогать, если не знаете, что они делают. Если вы случайно отключите ключевой сервис, вам, возможно, придется воспользоваться спасательным диском для того, чтобы ликвидировать ошибку.

Вывести информацию о всех выполняющихся процессах можно с помощью команды ps aux:

user@desktop ~ $ ps aux

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.0 0.0 1432 480? S 13:16 0:01 init [3]

root 2 0.0 0.0 0 0? SN 13:16 0:00 [ksoftirqd/0]

root 3 0.0 0.0 0 0? S< 13:16 0:00 [events/0]

..

user 8456 0.3 4.4 34932 22944? S 13:24 2:15 emacs

user 22537 0.0 0.3 3720 1560 pts/3 Ss 22:37 0:00 /bin/bash

user 8839 0.0 0.1 2644 932 pts/3 R+ 23:01 0:00 ps aux

Оставить в выводе предыдущей команды только системные процессы с помощью команды ps aux | grep -v user:

user@desktop ~ $ ps aux | grep -v user

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.0 0.0 1432 480? S 13:16 0:01 init [3]

root 2 0.0 0.0 0 0? SN 13:16 0:00 [ksoftirqd/0]

root 3 0.0 0.0 0 0? S< 13:16 0:00 [events/0]

...

root 6989 0.0 0.1 1672 704? Ss Oct25 0:00 /usr/sbin/syslog

root 7128 0.0 0.1 2020 716? Ss Oct25 0:00 /usr/sbin/fcron

Часть процессов, показанные в квадратных скобках, — это потоки ядра, исполняющие специальные функции.

Можно выделить демонов — в столбце терминала они имеют символ «?». Например, системный журнал (syslog) или планировщик задач (cron).

1 Запустим сбор информации обо всех файлах системы с помощью команды find / > files.txt.

user@desktop ~ $ find / > files.txt

2 Найдем идентификатор запущенного только что процесса с помощью команды ps aux | grep find, запущенной в другом терминале.

user@desktop ~ $ ps aux | grep find

user 8178 9.7 0.1 2844 1020 pts/1 R+ 23:45 0:00 find /

user 8230 0.0 0.1 2708 736 pts/2 R+ 23:45 0:00 grep find

Первая строка содержит необходимый PID.

3 Отправим сигнал завершения этому процессу с помощью команды kill 8178, указав в качестве параметара идентификатор процесса.

user@desktop ~ $ kill 8178

Можно убедиться, что на терминале с запущенной командой появились строка «Terminated» и приглашение.

Если попытаться завершить системный процесс, например командой kill 1, появится сообщение об ошибке доступа:

user@desktop ~ $ kill 1

bash: kill: (1) - Operation not permitted

Отправление сигналов системным процессам может производить только суперпользователь.

Альтернативным способом отправления сигналов процессам — по имени процесса, а не по PID — является команда killall.

4 Выполнив команду killall bash, мы завершим все командные оболочки, а тем самым и сеансы пользователей.

user@desktop ~ $ killall bash

До этого мы отправляли только сигнал завершения процесса. Он может перехватываться и игнорироваться программами. Неперехватываемым является сигнал SIGKILL, который может быть отправлен, например, следующей командой: killall -SIGKILL find

user@desktop ~ $ killall -SIGKILL find

В данном сценарии изучается работа с заданиями командной оболочки, запуск заданий в фоновом режиме.

1 Запустим длительную команду, например find / > files.txt и приостановим её выполнение с помощью нажатия Ctrl - Z. При этом процессу посылается сигнал SIGSTOP.

user@desktop ~ $ find / > files.txt

 

[1]+ Stopped find / > files.txt

user@desktop ~ $

Команда приостановлена и запомнена как задача 1 (номер в квадратных скобках).

2 Текущий список запущенных задач командной оболочки можно посмотреть командой jobs.

user@desktop ~ $ jobs

[1]+ Stopped find / > files.txt

3 Возобновить исполнение задания можно командой fg 1, аргументом которой является номер задания.

user@desktop ~ $ fg 1

find / > files.txt

Если еще раз приостановить процесс, можно запустить задачу в фоновом режиме:

bg 1.

user@desktop ~ $ fg 1

[1]+ find / > files.txt &

user@desktop ~ $

Тогда можно будет продолжать работу в командной строке.

4 Команды можно сразу запускать в фоновом режиме. При этом необходимо добавить символ «&» (амперсанд) в конец строки команды: find / -name "*.xml" > xml-list &

user@desktop ~ $ find / -name "*.xml" > xml-list &

[1] 9413

user@desktop ~ $

При этом командная оболочка выводит номер задания и PID созданного процесса.

Демон – это задача, выполняющаяся в фоновом режиме, и при запуске машины стартует целая маленькая армия таковых. Бывают демоны управления автоматизированными задачами, демоны для управления питанием и параметрами CPU, демоны для печати и демоны для ведения системных журналов. Некоторые выдают свое происхождение, прибавляя к именам букву «d», другие предпочитают названия-ребусы навроде «binfmpt-support» или «brltty».

Говоря о демонах, большинство подразумевает сервисы. Часто они стартуют при загрузке и скромно выполняются в фоновом режиме – но это не обязательно легковесные средства управления системой. Нет причин не считать демонами и полные пакеты приложений. Какие сервисы выполнять, а какие – нет, целиком зависит от вашего дистрибутива и целей его применения. Если вы используете дистрибутив, ориентированный на серверное применение, то весьма вероятно, что в числе демонов будет web-сервер Apache вместе со своей школой приложений-помощников. Это беспардонный побор ваших ресурсов, если web-сервер вам ни к чему, а ведь еще не так давно дистрибутивы типа Mandriva устанавливали и запускали web-сервер по умолчанию. В наши кризисные времена, скорее всего, такого не происходит, но весьма вероятно, что у вас все еще остается что-нибудь ненужное, «крутящееся» в фоновом режиме.




Поделиться с друзьями:


Дата добавления: 2014-10-23; Просмотров: 401; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.016 сек.