36753

Сведения о некоторых командах ОС UNIX

Реферат

Информатика, кибернетика и программирование

Команды поступающие от пользователей называют заданиями чтобы отличить их от системных процессов. Перевод процесса в фоновый режим Если вы запускаете какойто процесс путем запуска программы из командной строки то обычно процесс запускается как говорят на переднем плане . Это значит что процесс привязывается к терминалу с которого он запущен воспринимая ввод с этого терминала и осуществляя на него вывод.

Русский

2013-09-23

121.5 KB

1 чел.

Сведения о некоторых командах ОС UNIX 

для выполнения лабораторной работы № 3

В OC Unix пользователь может управлять ходом исполнения команды (процесса) и имеет возможность:

  •  запускать команды (процессы) в фоновом режиме, одновременно выполняя другие команды;
  •  перерывать команды (процессы);
  •  возобновлять работу команды (процесса) с той точки, где они были прерваны.

Примечание. Команды, поступающие от пользователей, называют заданиями, чтобы отличить их от системных процессов.

Перевод процесса в фоновый режим

Если вы запускаете какой-то процесс путем запуска программы из командной строки, то обычно процесс запускается, как говорят, "на переднем плане". Это значит, что процесс "привязывается" к терминалу, с которого он запущен, воспринимая ввод с этого терминала и осуществляя на него вывод. Но можно запустить процесс в фоновом режиме, когда он не связан с терминалом. Для запуска процесса в фоновом режиме в конце командной строки запуска программы добавляют символ & (амперсанд). В этом случае управление вновь без ожидания завершения возвращается родительскому процессу.

В оболочке bash имеются две встроенные команды, которые служат для перевода процессов на передний план или возврата их в фоновый режим. Но прежде, чем рассказывать об этих командах, надо рассказать о команде jobs. Она всегда вызывается без аргументов и показывает задания, запущенные из текущего экземпляра shell. В начале каждой строки вывода этой команды указывается порядковый номер задания в виде числа в квадратных скобках. После номера указывается состояние процесса: stopped (остановлен), running (выполняется) или suspended (приостановлен). В конце строки указывается команда, которая исполняется данным процессом. Один из номеров выполняющихся заданий помечен знаком +, а еще один — знаком -. Процесс, помеченный знаком +, будет по умолчанию считаться аргументом команд fg или bg, если они вызываются без параметров. Процесс, помеченный знаком -, получит знак +, если только завершится по какой-либо причине процесс, который был помечен знаком +.

А теперь можно рассказать и о командах fg и bg, которые служат для перевода процессов на передний план или возврата их в фоновый режим. В качестве аргумента обеим этим командам передаются номера тех заданий, которые присутствуют в выводе команды jobs. Если аргументы отсутствуют, то подразумевается задание, помеченное знаком +. Команда fg переводит указанный в аргументе процесс на передний план, а команда bg — переводит процесс в фоновый режим. Одной командой bg можно перевести в фоновый режим сразу несколько процессов, а вот возвращать их на передний план необходимо по одному.

fg %n , где nпорядковый номер выполняющегося задания (который выводится командой jobs), – переводит задание из фонового в приоритетный режим.

bg %n , где nпорядковый номер выполняющегося задания, – переводит задачу в фоновом режиме из соcтояния Stopped в состояние Running.

Нажатие клавиш <Ctrl>+<Z> – перерывает задачу и переводит ее в фоновый режим в состояние Stopped.

Команда ps – определяет, какие процессы в системе запущены.

ps [флаги]

Команда ps выдает для каждого процесса отдельную строку, но содержимое этой строки может быть разным. В зависимости от заданных опций могут присутствовать следующие поля:

  •  USER — имя владельца процесса;
  •  PID — идентификатор процесса в системе;
  •  PPID — идентификатор родительского процесса;
  •  %CPU — доля времени центрального процессора (в процентах), выделенного данному процессу;
  •  %MEM — доля реальной памяти (в процентах), используемая данным процессом;
  •  VSZ — виртуальный размер процесса (в килобайтах);
  •  RSS — размер резидентного набора (количество 1K-страниц в памяти);
  •  STIME — время старта процесса;
  •  TTY — указание на терминал, с которого запущен процесс;
  •  S или STAT — статус процесса;
  •  PRI — приоритет планирования;
  •  NI — относительный приоритет – значение nice (учитывается при создании очереди на выполнение планировщиком);
  •  TIME — сколько времени центрального процессора занял данный процесс;
  •  CMD или COMMAND — командная строка запуска программы, выполняемой данным процессом;

а также и другие поля, полный список которых приведен на man-странице, посвященной команде ps.

В поле "Статус процесса", как уже говорилось выше, могут стоять следующие значения:

  •  R — выполнимый процесс, ожидающий только момента, когда планировщик задач выделит ему очередной квант времени;
  •  S — процесс "спит";
  •  D — процесс находится в состоянии подкачки на диске;
  •  T — остановленный процесс;
  •  Z — процесс-зомби.

Рядом с указателем статуса могут стоять дополнительные символы из следующего набора:

  •  W — процесс не имеет резидентных страниц;
  •  < — высоко-приоритетеный процесс;
  •  N — низко-приоритетный процесс;
  •  L — процесс имеет страницы, заблокированные в памяти.

Чтобы получить список всех процессов, надо использовать команду ps с флагами ax (без дефиса!) или –A. Вывод в этих двух случаях отличается только в поле CMD: в первом случае выдается полная командная строка запуска программы, а во втором — только имя запущенной программы.

Некоторые флаги команды ps:

Выбирает все процессы

-N

Отрицание выбора

Выбирает все процессы, связанные с конкретным терминалом, кроме главных системных процессов сеанса

-d

Выбирает все процессы, кроме главных системных процессов сеанса

Выбирает все процессы

а

Выбирает все процессы, связанные с данным терминалом, в том числе и других пользователей

r

Выводит информацию лишь о работающих процессах

х

Выбирает все процессы, отсоединенные от терминала

Вывод в формате, заданном пользователем

-f

Для вывода использует графическое представление дерева процессов

-u

Выбирает процессы по действующему идентификатору пользователя

Выбирает процессы по имени команды

-G

Выбирает процессы по GID

-U

Выбирает процессы по UID

-p

Выбирает процессы по идентификаторам процессов

-t

Выбирает все процессы на конкретном терминале

--no-headers

Не включать в вывод заголовки столбцов

Приведем несколько примеров применения команды ps, которые покажут, как пользоваться этой командой в типичных ситуациях.

Для того чтобы увидеть все процессы в системе, используя стандартную форму вывода (PID, TTY, TIME, CMD):

pse

Можно к той же команде добавить флаг -o (выбор полей для вывода), после которой указать через запятую, какие именно поля вы хотите видеть в выводе команды (поля указываются строчными буквами!):

ps –eo pid,user,cmd

Если ее запустить команду ps без всяких параметров, то она выдает список процессов, запущенных в текущей сессии. Для того чтобы увидеть все процессы в системе:

ps ax

Для того чтобы увидеть все процессы в системе, с применением графического отображения отношения "предок-потомок":

psef

Впрочем, для того, чтобы увидеть "лес" деревьев "предок-потомок", лучше воспользоваться очень интересным аналогом команды ps –ef — командой pstree.

Для того чтобы увидеть, сколько % ЦПУ и памяти занимают запущенные вами процессы:

psu

Команда top позволяет сделать как бы "моментальный снимок" процессов, запущенных в системе. В отличие от ps команда top отображает состояние процессов и их активность "в реальном режиме времени". На рисунке изображено окно терминала, в котором запущена программа top.

Как видите, в верхней части окна отображается астрономическое время, время, прошедшее с момента запуска системы, число пользователей в системе, число запущенных процессов и число процессов, находящихся в разных состояниях, данные об использовании ЦПУ, памяти и свопа. А далее идет таблица, характеризующая отдельные процессы. Число строк, отображаемых в этой таблице, определяется размером окна: сколько строк помещается, столько и выводится. Графы таблицы обозначены так же, как поля вывода команды ps, так что дополнительных пояснений здесь не требуется.

Содержимое окна обновляется каждые 5 секунд. Список процессов может быть отсортирован по используемому времени ЦПУ (по умолчанию), по использованию памяти, по PID, по времени исполнения. Переключать режимы отображения можно с помощью команд, которые программа top воспринимает. Это следующие команды (просто нажимайте соответствующие клавиши, только с учетом регистра, то есть вместе с клавишей Shift):

  •  <Shift>+<N> — сортировка по PID;
  •  <Shift>+<A> — сортировать процессы по возрасту;
  •  <Shift>+<P> — сортировать процессы по использованию ЦПУ;
  •  <Shift>+<M> — сортировать процессы по использованию памяти;
  •  <Shift>+<T> — сортировка по времени выполнения.

Кроме команд, определяющих режим сортировки, команда top воспринимает еще ряд команд, которые позволяют управлять процессами в интерактивном режиме. С помощью команды <K> можно завершить некоторый процесс (его PID будет запрошен), а с помощью команды <R> можно переопределить значение nice для некоторого процесса. Таким образом, эти две команды аналогичны командам kill и renice.

Команда kill

Сигналы — это средство, с помощью которого процессам можно передать сообщения о некоторых событиях в системе. Всего в Linux существует 63 разных сигнала, их перечень можно посмотреть по команде

kill –l

Если после флага –l указать номер сигнала, то будет выдано его символическое имя, а если указать имя, то получим соответствующий номер.

В таблице приведены некоторые из часто встречающихся сигналов.

Имя

Описание

Комбинация клавиш

1

HUP

Hangup. Отбой

2

INT

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

<Ctrl>+<C>

или <Del>

3

QUIT

Как правило, сильнее сигнала Interrupt

<Ctrl>+<\>

4

ILL

Illegal Instruction. Центральный процессор столкнулся с незнакомой командой (в большинстве случаев это означает, что допущена программная ошибка). Сигнал отправляется программе, в которой возникла проблема

8

FPE

Floating Point Exception. Вычислительная ошибка, например, деление на ноль

9

KILL

Всегда прекращает выполнение процесса

11

SEGV

Segmentation Violation. Доступ к недозволенной области памяти

13

PIPE

Была предпринята попытка передачи данных с помощью конвейера или очереди FIFO, однако не существует процесса, способного принять эти данные

15

TERM

Software Termination. Требование закончить процесс (программное завершение)

17

CHLD

Изменение статуса порожденного процесса

18

CONT

Продолжение выполнения приостановленного процесса

19

STOP

Приостановка выполнения процесса

20

TSTR

Сигнал останова, генерируемый клавиатурой. Переводит процесс в фоновый режим

<Ctrl>+<Z>

Как видите, некоторые сигналы можно сгенерировать с помощью определенных комбинаций клавиш. Но такие комбинации существуют не для всех сигналов. Зато имеется команда kill, которая позволяет послать заданному процессу любой сигнал.

Для посылки сигнала процессу (или группе процессов) можно воспользоваться командой kill в следующем формате:

kill [-сигн] PID [PID..]

где сигн — это номер сигнала, причем если указание сигнала опущено, то посылается сигнал 15 (TERM — программное завершение процесса). Вместо PID процесса может быть использован порядковый номер выполняющегося задания, который выводится командой jobs, то есть команда kill [-сигн] %n, где nпорядковый номер выполняющегося задания, отменяет задание, выполняемое в фоновом режиме.

Запуск команд в определенное время

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

at  время [дата] [+задержка]

at  -r идентификатор_задания ...

at  -l [идентификатор_задания ...]

Команда at в первом из приведенных вариантов читает со стандартного ввода задание, выполнение которого планируется на указанное время. Смысл опций двух других вариантов команды at таков:

-r

Удалить задания, запланированные ранее с помощью at или batch, по идентификаторам_заданий. Идентификаторы сообщаются командами at и batch. Их можно узнать также по команде at -l. Только суперпользователь может удалять чужие задания.

-l

Вывести информацию о запланированных заданиях по идентификаторам_заданий. Если идентификаторы не указаны, выдается список всех заданий, запланированных пользователем и еще не выполненных.

Пользователю разрешается выполнять команду at только при условии, что его имя встречается в файле /usr/lib/ cron/at.allow. Если этого файла не существует, то проверяется файл /usr/lib/cron/at.deny, для того чтобы узнать, не запрещен ли пользователю доступ к at. Если оба файла отсутствуют, то только суперпользователю разрешено планировать выполнение задания. Если файл at.deny пуст, а at.allow отсутствует, то эти действия могут выполнять все. Файлы at.allow и at.deny содержат по одному имени в строке. Модифицировать эти файлы может только суперпользователь.

Время может быть указано 1, 2 или 4 цифрами. Если время состоит из одной или двух цифр, то оно обозначает часы; четырехзначное число обозначает часы и минуты. Время также может быть задано как два числа, разделенные двоеточием, что понимается как часы:минуты. Могут быть добавлены суффиксы am (до полудня) или pm (после полудня), в противном случае часы указываются от 0 до 23. Если необходимо указать время по Гринвичу, то можно добавить суффикс zulu. Распознаются специальные имена noon (полдень), midnight (полночь), now (сейчас), и next (следующий).

Дата может быть указана двумя способами: во-первых, в виде названия месяца, за которым следует число [и, может быть, год (через запятую)], а во-вторых, как день недели (полностью или сокращенный до 3 букв). Распознается два специальных "дня" today (сегодня) и tomorrow (завтра). Если дата не задана, то предполагается сегодняшняя дата, если указанное время больше, чем текущее, и завтрашняя, если меньше. Если заданный месяц меньше, чем текущий и год явно не задан, то предполагается, что имеется в виду следующий год.

Дополнительная задержка представляет собой просто число, за которым следует одно из следующих слов: minutes (минуты), hours (часы), days (дни), weeks (недели), months (месяцы), или years (годы). Можно указывать единицу измерения и без числа, например at now +minutes.

Далее приведены примеры корректных заданий даты/времени в команде at:

0815am Jan 16

8:15am Jan 16

now +1 day

5 pm Friday

noon tomorrow  

next Saturday

 Пример планирования задания:

at  8:15am Jan 16

Далее нажимаем <Enter> и пишем в следующей строке

echo Hello world > file.txt

 

А теперь нажимаем <Ctrl>+<D> для завершения ввода команды.

Другой вариант – когда список команд, которые необходимо запланировать для выполнения, находится в файле (например, с именем commands). Тогда в команде at нужно использовать опцию -f для указания имени файла:

at 15:15 Friday –f commands

или так:

at 15:15 Monday < commands


 

А также другие работы, которые могут Вас заинтересовать

60802. Моделювання виховної роботи з учнями, що мають різний соціометричний статус 61.5 KB
  Проведемо наше методичне об’єднання в нетрадиційній формі деякі засоби роботи вправи ви зможете використати в роботі з класом. Отже сьогодні чого ми очікуємо від процесу виховання Якими ми бачимо труднощі або результати...
60804. Особливості формування ключових компетентностей учнів через міжтематичні зв’язки системи теоретичних понять інформатики та реалізацію гуманітарних аспектів 373 KB
  Особливість предмету інформатики та визначення його ролі і міста серед предметів на формування загальної освіти особистості зміст його предметних та загальноосвітніх компетентностей вже створює проблеми в викладанні змісту...
60807. Урок по моделированию многоэтажного здания в 3ds Max 6.4 MB
  В данном уроке мы рассмотрим способ моделирования высокополигонального современного многоэтажного здания в 3ds Max. Чтобы ясно себе представлять будущую модель, следует пользоваться...
60809. Модификатор EDIT MESH (редактирование сетки) 173.5 KB
  Создание яблока Рассмотрим пример создания модели яблока при помощи модификатора Edit Mesh Редактирование поверхности. 2 сформировав углубление в месте крепления корешка яблока. Не меняя настройки плавного выделения переместите выделенные...
60810. Назначение и настройка модификаторов в 3ds max 733.5 KB
  Кнопка Закрепить стек позволяет зафиксировать меню стека на экране таким образом что оно не исчезнет если снять выделение с объекта или даже выделить другой объект. Кнопка Показывать конечный результат показывает конечный...