Домашняя работа по системному программному обеспечению
Выполнил: студент группы 2100
Митрофанов Александр

Включить в отчет подробное описание информации, выводимой командой ps, и описание основных сигналов, посылаемых процессам командой kill. Кратко описать назначение команд cron, at, nice, nohup и символа &; привести примеры их использования с необходимыми пояснениями.

Получение информации о процессах

Команда ps выводит различную информацию о запущенных процессах. Запущенная без ключей, эта команда выводит сводку процессов, связанных с терминалом, с которого ее запустили. Ключи позволяют а) выбрать процессы, информацию о которых следует вывести; б) указать, какую информацию о процессах выводить.

Некоторые ключи команды ps:

-e
вывести информацию обо всех запущенных процессах

-u пользователь
вывести информацию о процессах указанного пользователя

-f
"полный" листинг

-l
"длинный" листинг

-j
вывести индентификаторы группы процессов и сеанса


Поля вывода команды ps

S Состояние процесса(l):

O - выполняется (On processor),
R - готов к запуску (Runnable),
S - находится в состоянии сна (Sleeping),
Z - зомби (Zombie),
T - остановлен (Stopped).

UID Идентификатор пользователя, от имени которого запущен процесс (с ключом -f выводится имя пользователя)(f,l)
PID Идентификатор процесса (all)
PPID Идентификатор родительскогопроцесса (f,l)
PGID Идентификатор группы процессов (j)
SID Идентификатор сеанса (j)
PRI Приоритет процесса (чем больше, тем ниже) (l)
NI Относительный приоритет (Nice Number) (l)
SZ Размер процесса в страницах (размер страницы можно узнать командой pagesize) (l)
STIME Время запуска процесса (f)
TTY Управляющий терминал ('?' - для демонов) (all)
TIME Суммарное время, затраченное процессором на исполнение процесса (all)
CMD Имя процесса (с ключом -f выводятся первые 80 символов командной строки) (all)

В скобках указано, какой ключ надо дать команде ps, чтобы соответствующее поле появилось в выводе. Пометка "all" обозначает, что поле выводится всегда, в том числе и при запуске команды без ключей. Ключи -f, -l, -j можно использовать совместно для получения комбинированного вывода.

Ключи -f, -l, -j не определяют, о каких процессах выводить данные , а устанавливают только формат вывода. Для отбора процессов используйте ключи -e, -u.

Команда ps имеет также ключ -o (буква "о"), параметром которого является список полей вывода через запятую. Таким образом можно выбрать только необходимые поля, а также вывести дополнительные данные о процессе, не перечисленные в таблице выше.


Сигнал Значение Действие Описание

SIGHUP 1 A Обнаружен обрыв связи с управляющим терминалом либо завершение управляющего процесса
SIGINT 2 A Прерывание с клавиатуры
SIGQUIT 3 C Выход с клавиатуры
SIGILL 4 C Несуществующая инструкция
SIGABRT 6 C Сигнал прерывания, посланный функцией abort(3)
SIGFPE 8 C Ошибка операций с плавающей запятой
SIGKILL 9 AEF Kill-сигнал
SIGSEGV 11 C Обращение к запретной области памяти
SIGPIPE 13 A Оборванный канал: запись в канал, из которого не читают
SIGALRM 14 A Сигнал таймера от функции alarm(2)
SIGTERM 15 A Сигнал завершения
SIGUSR1 30,10,16 A Первый сигнал, определяемый пользователем
SIGUSR2 31,12,17 A Второй сигнал, определяемый пользователем
SIGCHLD 20,17,18 B Потомок остановлен или прекратил выполнение
SIGCONT 19,18,25 Продолжить выполнение, если остановлен
SIGSTOP 17,19,23 DEF Приостановить выполнение процесса
SIGTSTP 18,20,24 D Останов введен с терминала
SIGTTIN 21,21,26 D ввод с терминала у фонового процесса
SIGTTOU 22,22,27 D вывод на терминал у фонового процесса

Буквы в колонке "Действие" имеют следующее значение:

A Действие по умолчанию -- прекращение выполнения процесса.

B Действие по умолчанию -- игнорировать сигнал.

C Действие по умолчанию -- прекращение выполнения процесса и запись дампа памяти.

D Действие по умолчанию -- приостановка выполнения процесса.

E Сигнал не может быть перехвачен.

F Сигнал не может быть проигнорирован.

kill -СИГНАЛ PID

отправляет процессу с идентификатором PID указанный сигнал. Сигнал указывается либо в символьной форме (за вычетом приставки 'SIG'), либо в виде номера сигнала. Наример, "kill -HUP PID" и "kill -1 PID" (цифра "один") - одно и то же. Список всех сигналов и их номеров можно просмотреть командой kill -l. По умолчанию, если сигнал не указан, посылается сигнал SIGTERM (номер 15).



cron — демон-планировщик задач

Каждый пользователь системы имеет свой файл заданий crontab, в котором описано, в какое время и какие программы запускать от имени этого пользователя. Для редактирования файла crontab используется специальная одноименная программа crontab, позволяющая не прерывать процесс cron на время редактирования.

Таблица crontab состоит из 5 колонок, разделяемых пробелами или табуляторами. Первые пять колонок задают время выполнения (Минута, Час, День, Месяц, День недели), в них может находиться число, список чисел или символ '*'. Все остальные символы в строке интерпретируются как выполняемая команда с ее параметрами. Если команда отправляет какой-нибудь текст в стандартный вывод, этот текст отправляется по e-mail пользователю.



at — утилита, читающая команды со стандартного входного потока и группирующая их в виде задания at для выполнения позже, в заданное время.

* at [-V] [-q очередь] [-f файл] [-mldbv] время
* at -c задание [задание…]

at и batch читают команды из стандартного ввода или заданного файла которые будут выполнены в определённое время, используя /bin/sh.

at
запускает команды в заданное время.
atq
список заданий, заданных пользоватем, если пользователь не суперпользователь; в этом случае, выдаются все задания.
atrm
удаляет задания. batch запускает команды, когда уровни загрузки системы позволяют это делать; в других, когда средняя загрузка системы, читаемая из /proc/loadavg опускается ниже 0.5, или величины, заданной при вызове atrun.

At позволяет некоторые умеренно сложные спецификации времени HHMM (ЧасыМинуты) или HH:MM (Часы:Минуты) для запуска задания в опредленное время дня. (Если это время уже прошло, то устанавливается следующий день.) Вы можете также задать midnight(полночь), noon(полдень), or teatime(4 часа после полудня) (4pm), а также задать суффикс времени для AM (до полудня) or PM (после полудня) для запуска утром или вечером. Вы также можете сказать, что день, в который будет запущено задание, задаётся датой в форме имя-месяца день и необязательно год, или задать дату в форме MMDDYY или MM/DD/YY или DD.MM.YY. Заданная вами дата должна содержать параметр времени дня. Вы также можете задать время как now + count time-units (текущее время + счечик временных единиц), где временные единицы могут быть минутами, часами, днями, или неделями и вы можете сказать at запустить задание сегодня, используя суффикс времени как today, а для запуска задания завтра суффикс tomorrow.

Суперпользователь может использовать эти команды в любом случае. Для других пользователей, право на использование at определяется файлами /etc/at.allow и /etc/at.deny.

Если файл /etc/at.allow существует, то только пользователи, чьи имена указаны в этом файле могут использовать at.

Если /etc/at.allow не существует, то проверяется /etc/at.deny, каждый пользователь, чьё имя не указано в этом файле может использовать at.

Если не существует ни одного из вышеперечисленных файлов, то только суперпользователю позволяется использовать at

В случае пустого /etc/at.deny считается, что каждому пользователю позволяется использовать эти команды, это установлено по умолчанию.

-V
выводит номер версии в стандартный поток stderr.
-q очередь
использовать заданную очередь. Структура очереди содержит одну букву; правильные структуры очереди ранжируются от a до z. и от A до Z. Очередь c это очередь по умолчанию для at и очередь E это очередь по умолчанию для batch. Очереди со старшими буквами запускаются вперёд очередей с младшими буквами. Если задание ставится в очередь, начитающуюся с заглавной буквы, то задание трактуется так, как если бы оно было установлено для batch в это время. Если для atq задаётся определённая очередь, то atq будет показывать только задания в этой очереди.
-m
Посылает почту для пользователя, когда задание завершается, даже если оно ничего не выводило.
-f файл
Читает задание из файла отличного от стандартного ввода.
-l
Это псевдоним для команды atq.
-d
Это псевдоним для команды atrm.
-b
Это псевдоним для команды batch.
-v
Говорит atq, показывать завершённые задания, но пока не удалять задания в очереди; в других случаях показывать время запуска задания.
-c
выводит задания, перечисленные в командной строке на стандартный вывод.



nice — UNIX‐утилита, запускающая программу с измененным приоритетом (для планировщика задач). Если не указано ни одного аргумента, команда nice выводит текущий унаследованный приоритет для планировщика задач. В противном случае nice запускает указанную команду с измененным приоритетом. Если смещение не указано, то приоритет команды увеличивается на 10. Привилегированный пользователь (root) может указать отрицательное смещение. Команда nice может смещать приоритет в диапазоне от -20 (наивысший приоритет) до 19 (низший приоритет) от текущего.

Синтаксис

nice [-n смещение] [--adjustment=смещение] [команда [аргумент…]]

Параметры

-n смещение, --adjustment=смещение
Увеличить приоритет команды на смещение (вместо 10 по умолчанию).


nohup — UNIX-утилита, запускающая указанную команду с игнорированием сигналов потери связи (hangup) и увеличением приоритета (для планировщика задач) на 5; таким образом, команда будет продолжать выполняться в фоновом режиме и после того, как пользователь выйдет из системы. Если стандартным выводом (stdout) команды является терминал, то он и стандартный поток диагностики (stderr) перенаправляются с добавлением в файл «nohup.out» в текущей директории; если это невозможно сделать, то перенаправление происходит в файл «$HOME/nohup.out». Если и это невозможно сделать, то команда не запускается совсем.

При создании файлов «nohup.out» или «$HOME/nohup.out» команда nohup устанавливает им атрибуты доступа только для владельца этих файлов (группа и остальные пользователи не имеют прав доступа к этим файлам). Если же эти файлы уже существуют, то их права доступа не изменяются.

nohup не переводит автоматически команду в фоновый режим; пользователь должен сделать это явным образом, завершив командную строку символом «&».

[править] Использование

* nohup команда [аргумент…]


Вставьте знак амперсанд (&) после каждой команды sleep, тогда эти команды будут работать в фоновом режиме (параллельно с оболочкой).


[alexander@localhost tests]$ cat cmdlist
echo "XXXXX"
echo "ZZZZZ"
echo "YYYYY"
[alexander@localhost tests]$
[alexander@localhost tests]$
[alexander@localhost tests]$ at -f cm
cmdlist cmdlist~
[alexander@localhost tests]$ at -f cmdlist 21:59
warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh
job 1 at 2008-11-04 21:59



[alexander@localhost tests]$ ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 R 500 2601 25054 0 80 0 - 595 - pts/1 00:00:00 ps
0 S 500 25054 25051 0 80 0 - 1182 wait pts/1 00:00:00 bash
[alexander@localhost tests]$ nice sleep 30 &
[1] 2653
[alexander@localhost tests]$ ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 500 2653 25054 0 90 10 - 723 hrtime pts/1 00:00:00 sleep
0 R 500 2664 25054 0 80 0 - 596 - pts/1 00:00:00 ps
0 S 500 25054 25051 0 80 0 - 1182 wait pts/1 00:00:00 bash
[alexander@localhost tests]$ kill %1
[1]+ Завершено nice sleep 30
[alexander@localhost tests]$ ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 R 500 2740 25054 0 80 0 - 595 - pts/1 00:00:00 ps
0 R 500 25054 25051 0 80 0 - 1182 - pts/1 00:00:00 bash
[alexander@localhost tests]$ nice
0
[alexander@localhost tests]$ sleep 30 &
[1] 2796
[alexander@localhost tests]$ ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 500 2796 25054 0 80 0 - 723 hrtime pts/1 00:00:00 sleep
0 R 500 2805 25054 0 80 0 - 596 - pts/1 00:00:00 ps
0 S 500 25054 25051 0 80 0 - 1182 wait pts/1 00:00:00 bash




Соседние файлы в папке отчеты за семестр