
- •Особенности системы. Основные понятия
- •Основные компоненты ос unix
- •Начало работы с командной строкой, командами, процессами
- •Вход пользователя
- •Ввод простых команд
- •Печать времени
- •Получение информации о работающих пользователях
- •Уничтожение процесса
- •Выход пользователя
- •Формирование команд
- •Формат команд
- •Стандартные файлы
- •Перенаправление стандартного ввода-вывода
- •Организация конвейеров команд
- •Использование метасимволов
- •Файловая система ос unix
- •Общие сведения
- •Структура
- •Именование файлов
- •Механизм защиты файлов
- •Работа с файлами и каталогами
- •Вывод содержимого каталога
- •Изменение текущего каталога
- •Создание каталога
- •Вывод имени текущего каталога
- •Переименование каталога
- •Удаление пустого каталога
- •Вывод содержимого файла, конкатенация файла и создание файла
- •Переименование и перемещение файлов
- •Копирование файлов
- •Удаление файлов и каталогов
- •Установка и изменение режима доступа к файлу
- •Лабораторная работа №6 Управление процессами в ос Linux
- •Введение
- •О процессах linux
- •Клонирование процессов, процессы init и exec
- •Стандартные ввод и вывод
- •Элементарные операции над процессами
- •Перенаправление ввода и вывода
- •Операторы перенаправления ввода-вывода Linux перечислены в таблице 1.
- •Связывание процессов с помощью каналов (конвейеров)
- •Многозадачность
- •Приоритетный и фоновый режимы
- •Мониторинг многозадачной среды
- •Информация о состоянии процессов. Мониторинг процессов с помощью ps
- •Теперь, посмотрим результат вывода следующей команды:
- •Получение списка пользователей, работающих в системе
- •Запуск команд в заданное время с помощью команд at и batch
- •Запуск команд в определенное время с помощью команды at
- •Первая команда
- •После ввода всей команды вы увидите на дисплее нечто, наподобие:
- •Управление многозадачностью
- •Использование команды nohup
- •Изменение приоритета команд с помощью nice
- •Изменение приоритета работающего процесса с помощью renice
- •Прекращение процесса с помощью kill
- •Лабораторная работа №7 Командный интерпретатор shell
- •Запуск и выход из оболочки
- •Интерпретация командной строки
- •Последовательное выполнение команд (символ ;)
- •Специальные символы
- •Поиск всех символов (метасимвол *)
- •Поиск по одному символу (метасимвол ?)
- •Использование кавычек для отмены значения символа пробел
- •Создание простых программ shell и их выполнение
- •Ограничения при именовании программ shell
- •Переменные
- •Позиционные параметры
- •Специальные параметры
- •Именованные переменные
- •Удаление переменных
- •Присвоение значений переменным
- •Использование команды read
- •Арифметические операции: команда let
- •Конструкции языка программирования Shell
- •Комментарии
- •Оператор for
- •Оператор while
- •Условные операторы. Оператор if ... Then
- •Общий формат конструкции if
- •Безусловная передача управления
- •Отладка программы
- •Лабораторная работа №8 Работа в графической среде X Windows
- •К кнопка
- •Линейка пиктограмм
- •Кнопки виртуальных Рабочих столов
- •Список задач
- •Настройка kde
- •Центр управления kde
- •Настройка Панели
- •Добавление ссылок на приложения в Панель kde
- •Работа с файлами и каталогами в kde
- •Файловая система
- •Файловый менеджер Konqueror
- •Операции с файлами и каталогами с помощью файлового менеджера Konqueror
- •Создание файлов и каталогов
- •Изменение атрибутов файла
- •Редактирование файла
- •Работа со стандартными приложениями kde
- •Уничтожение окон в kde (аварийное закрытие программ)
- •Выход из kde
- •Ваши последние действия
- •Содержание
-
Приоритетный и фоновый режимы
Программу можно запустить как фоновый процесс (указать в строке после запускаемой команды символ &) или перевести задачу переднего плана (foreground) в фоновый режим (с помощью команды bg). При работе программы в качестве фонового процесса вы можете продолжать вводить команды и работать с другими процессами.
Для примера рассмотрим команду yes:
# yes
(команда запушена в «приоритетном режиме»)
Результатом работы этой команды будет длинный столбец символов y в левом краю экрана, бегущий быстрее, чем вы можете следить за этим.
Можно приостановить выполнение команды комбинацией клавиш Ctrl+Z. Процесс приостановил свое выполнение, но не прекратился. При этом на экране появится сообщение:
[1]+ Stopped yes
Давайте разберем его по частям:
[1] - это номер задачи, он используется когда нам надо сослаться конкретно на эту задачу. Если вы запускаете некоторый процесс в фоновом режиме, то shell выводит PID запущенного процесса и номер задачи (при выполнении л/р их желательно запоминать).
«+» - говорит о том, что этот процесс является текущим процессом или процессом по умолчанию. Если запущено несколько процессов, то кроме того, у одного из них будет стоять знак «-». Он обозначает предыдущую задачу которая может стать текущей после завершения нынешней текущей.
Stopped - означает, что процесс приостановлен. Процесс не «умер», но сейчас он не выполняется. Linux хранит его в особом приостановленном состоянии, готовым продолжить работу, если будет дана соответствующая команда.
yes - имя команды, которое было введено в командной строке при запуске программы.
Теперь, пока процесс находится в режиме ожидания, мы можем продолжить его выполнение либо в фоновом режиме, либо в приоритетном режиме, либо вообще уничтожить этот процесс. Рассмотрим каждый конкретный случай:
-
bg [%номер задачи] – чтобы перевести процесс в фоновый режим;
-
fg [%номер задачи] – чтобы перевести процесс в приоритетный режим;
-
kill [%номер задачи] – чтобы убить процесс.
Во всех рассмотренных командах [%номер задачи] – необязательный параметр, и он необходим, когда вы работаете с не текущим процессом. Кроме того, уничтожить процесс можно также, если запустить этот процесс в приоритетном режиме (с помощью команды fg), а затем – нажатием комбинации клавиш Ctrl+C – уничтожить его.
Пример 1
Запустим команду yes:
#yes
Приостановим её выполнение:
Ctrl+Z
На экране появится сообщение:
[1]+ Stopped yes
Это означает, что данный приостановленный процесс является текущим с номером 1.
Продолжим выполнение этого процесса в фоновом режиме:
#bg %1
или, в данном случае:
#bg (так как процесс текущий)
Убедимся в выполнении этого процесса с помощью команды jobs:
[1]+ Running yes
Пример 2
Уничтожим процесс с номером 3:
#kill %3
Возможно, на экране появится сообщение вида:
[3]+ Stopped <название команды>
Это сообщение о том что, опять таки, процесс был приостановлен, может ввести в заблуждение. Чтобы выяснить, «жив» ли еще процесс (т.е. исполняется или находится в приостановленном состоянии), напишите в командной строке:
#jobs
[3]+ Terminated yes
Это означает, что процесс был завершен. В случае повторного ввода команды jobs – процесс с номером 3 больше упоминаться не будет. Возможно, что команда jobs не выдаст никакого сообщения. Это означает, что ни один из процессов не запущен в фоновом режиме.
Обобщим то, что вы должны были узнать в этом разделе:
[ctrl-z] – Такая комбинация клавиш вызывает приостановку задачи работающей в приоритетном режиме, хотя некоторые программы могут игнорировать её. После того, как задача приостановлена, она может исполняться в фоновом режиме.
[fg] [%номер задачи] – Эта встроенная команда shell'а устанавливает задачу в приоритетный режим. Чтобы понять, какая задача будет установлена в приоритетный режим по умолчанию, напишите jobs, и найдите задачу с «+».
[&] – Когда & добавляется в конец командной строки, это заставляет команду исполняться в фоновом режиме.
[bg] [%номер задачи] – Это встроенная команда shell'а, которая устанавливает задачу в фоновый режим. Чтобы понять, какая задача будет установлена по умолчанию, наберите jobs, и найдите задачу с «+».
[kill] [%номер задачи] – Эта команда завершает задачу работающую в фоновом режиме или приостановленную. Вместо параметра [%номер задачи] можно использовать PID процесса (его можно увидеть, например, при запуске процесса в фоновый режим)
[jobs] – Эта команда shell'а просто перечисляет информацию о задачах, которые исполняются или приостановлены. Иногда, она также сообщают о процессах, которые благополучно завершились или были завершены.
[ctrl-c] – Это общий символ прерывания. Обычно, если вы нажимаете эту комбинацию клавиш, когда программа исполняется в приоритетном режиме, то уничтожаете программу (иногда для этого надо несколько попыток). Однако не все программы будут реагировать на этот способ прерывания.