- •Особенности системы. Основные понятия
- •Основные компоненты ос 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
- •Ваши последние действия
- •Содержание
-
Изменение приоритета команд с помощью nice
Команда nice позволяет запустить другую команду с предопределенным приоритетом выполнения, предоставляя вам, таким образом, возможность задавать приоритет при выполнении своих задач. При обычном запуске, все задачи имеют один и тот же приоритет и ОС равномерно распределяет между ними процессорное время. Однако, с помощью nice вы можете понизить приоритет какой-либо «неспешной» задачи, предоставив тем самым другим задачам больше процессорного времени. Повысить же приоритет той или иной задачи имеет право только администратор.
Синтаксис использования nice следующий:
nice -смещение command
Уровень приоритета определяется параметром смещение, при этом большее его значение означает меньший приоритет команды. Значение по умолчанию – 10, и смещение представляет собой число, на которое он должен быть уменьшен. Например, если вы запускаете процесс сортировки:
#sort worknew.dat > worknew.srt &
и хотите дать ему преимущество над другим процессом, например, печати, запустите этот второй процесс с уменьшенным приоритетом:
#nice -5 lp mail_list &
Либо, если вы имеете права администратора (в л/р вы их не имеете), то вы можете просто повысить приоритет процесса сортировки, задав ему отрицательное смещение:
#nice -5 sort worknew.dat > worknew.srt &
Самый низкий приоритет будет иметь задача, у которой смещение равно 19, а самый высокий – -20.
-
Изменение приоритета работающего процесса с помощью renice
Команда renice позволяет изменить приоритет работающего процесса. Формат этой команды следующий:
renice number PID
Параметр number представляет собой новое смещение процесса не относительно предыдущего. Для изменения приоритета работающего процесса необходимо знать его идентификатор, получить который можно с помощью рассмотренной ранее команды ps, а при выполнении л/р – лучше, просто, запомнить его при запуске команды в фоновый режим.
Пример
Запустим процесс печати на принтере файла sales.dat с пониженным на 2 приоритетом, а затем понизим его ещё на 3:
#nice -2 lp sales.dat &
[1] 5920
Посмотрим, что выдаст нам команда jobs:
#jobs
[1] + Running nice -2 lp sales.dat &
#renice 5 5920
5920: old priority 2, new priority 5
#jobs
[1] + Running nice -2 lp sales.dat &
При этом видно, что сообщение команды jobs не изменилось, т.к. надпись справа – это всего лишь команда, которая была набрана при запуске процесса, а не информация о текущем приоритете его работы.
В заключении, отметим следующие правила использования команд nice и renice:
-
вы можете использовать renice только со своими процессами;
-
суперпользователь может применить renice к любому процессу, пользователю или целой группе;
-
только суперпользователь может повысить приоритет процесса.
-
Прекращение процесса с помощью kill
Иногда, необходимо прекратить выполнение процесса, не дожидаясь его нормального завершения. Это может произойти в следующих случаях:
-
процесс работает слишком долго, не давая желаемых результатов;
-
из-за ошибки оператора или программы используются не те файлы или параметры командной строки;
-
дальнейшее выполнение процесса бесполезно;
-
и другое….
Если процесс работает не в фоновом режиме, нажатие <Ctrl+C> должно прервать его выполнение, но если процесс фоновый, то это не поможет. В этом случае, прервать его выполнение можно с помощью kill.
Для завершения процесса с идентификатором 941 просто введите kill 941. Для того чтобы завершить процессы 941, 149, 491, надо ввести kill 941 149 491 либо, как это уже описывалось ранее – ввести: [kill] [%номер задачи], но не всегда есть возможность получить параметр номер задачи. Так, например, в случае с командой nohup – после повторного входа в систему. В этом случае следует воспользоваться командой ps, причём в виде ps –uax | more.
При успешном завершении процесса, никакое сообщение не выводится – процессы умирают молча. Сообщение появится при попытке завершения процесса без наличия у вас соответствующих прав доступа или при попытке завершить несуществующий процесс.
Завершение родительского процесса обычно приводит к завершению дочерних, однако, для полной уверенности в завершении всех процессов, связанных с данным, указывайте их в команде kill.
Контрольные вопросы
-
Что называется процессом, идентификатором процесса; какой процесс запускается непосредственно ядром Linux, чем он характеризуется?
-
Какие команды для перенаправления ввода и вывода вы знаете?
-
Расскажите об использовании канала (|). В чем состоит удобство его использования?
-
В чем заключается многопользовательность и многозадачность системы Linux?
-
Расскажите, какие бывают режимы выполнения процессов, и поясните на примере, как запустить задачу в том или ином режиме.
-
Как перейти из одного режима выполнения задачи в другой и наоборот? Какие при этом существуют способы просмотра состояния процессов, и в чем их отличие?
-
Какая основная команда используется для получения информации о процессах? Какие опции надо указать, чтобы узнать о запущенном процессе sort следующую информацию:
-
какой пользователь запустил данный процесс;
-
сколько на него тратится оперативной памяти;
-
каков статус этого процесса.
-
Расскажите о функциях команды who и её опциях.
-
Формат команды at, для чего она используется.
-
В чем принципиальное различие команд at и batch?
-
Перечислите средства управления многозадачностью. Подробно расскажите о любом из них.
-
Какой наименьший приоритет может иметь запущенная вами задача?
-
Формат команды kill. Какими способами можно завершить процесс? В каких случаях подходит каждый из них?
Практическая часть
-
Войдите в систему Linux под именем, задающимся преподавателем.
-
Войдите в оболочку Midnight Commander (команда: #mc).
-
Создайте свой каталог с именем, совпадающим с номером вашей бригады (клавиша F7) в каталоге, определённым преподавателем.
-
Создайте файлы 1 – 3.txt с помощью комбинации клавиш Shift+F4:
файл 1.txt: файл 2.txt: файл 3.txt:
2 i New OS – – run now.
5 x
1 L
3 n
4 u
-
Создайте файл infinity содержащий сценарий бесконечного цикла:
# !/bin/sh
x=$((0));
z=$((0));
while /bin/true
do
x=$(($x+$z));
done
Установите права доступа к файлу infinity как к выполняемому, введя команду: #chmod 0100 infinity
-
Связывание процессов. Отсортируйте файл 1.txt (команда sort) и модифицируйте вывод результата на экран заменой букв L и x на M и s соответственно (команда замены: tr Lx Ms). Причём, реализуйте это обязательно одной командой.
-
Добавьте отсортированный текст файла 1.txt в конец 2.txt. Убедитесь в достижении результата.
-
Запустите бесконечный процесс (команда: #sh infinity) в приоритетном режиме, и во время его выполнения уничтожьте его.
-
Запустите бесконечный процесс в фоновом режиме. Проверьте, что процесс выполняется. Затем уничтожьте его любым из изученных вами способов.
-
Переключение режимов. Запустите бесконечный процесс infinity в приоритетном режиме. Во время его выполнения приостановите процесс и запустите снова в фоновом режиме. Попытайтесь сделать то же самое в обратном порядке, а затем уничтожьте работающий процесс.
-
Получите информацию о состоянии процессов с разной степенью полноты с помощью известной вам команды.
-
Получите подробную информацию о пользователях, работающих и просто зарегистрированных в системе.
-
Узнайте текущую дату и время с помощью команды date.
-
Организуйте при помощи команды at через 15 минут запись в файл 4.txt файлов 2.txt и 3.txt в соответствующем порядке и продолжите выполнение остальных пунктов задания.
-
Убедитесь, что файл 1.txt – не отсортирован. Запустите процесс сортировки файла 1.txt через 5 минут а затем, отмените выполнение задания. Проверьте, остался ли файл 1.txt по-прежнему не отсортированным.
-
Создайте файл с именем start. Его содержимым должны быть команды выполняющие задачу, описанную в пункте 14. Затем запустите этот файл через 5 минут с помощью команды at.
-
Просмотрите очередь запущенных заданий с помощью команды at –l. Воспользовавшись командой ps с необходимыми опциями, попытайтесь определить идентификаторы процессов, запущенных в пунктах 14 и 16. Убедитесь, что в заданное время закончится процесс запуска файла start. Сотрите результаты, полученные в файле 4.txt. Подождите окончания выполнения задания, запущенного в п.14. Ещё раз проверьте результат выполнения в файле 4.txt.
-
Запустите бесконечный процесс с помощью команды nohup. Проверьте, что процесс запущен и выйдите из системы (команда #exit). Затем войдите в систему снова и убедитесь, что команда выполняется (используя команду: #ps -uax | more). Теперь, аналогичные действия произведите с процессом сортировки файла 1.txt. Причём, вывод результата необходимо направить в файл 5.txt. Убедитесь, что команда выполняется.
-
Запустите бесконечный процесс с приоритетом, уменьшенным на 5, в фоновом режиме, а затем понизьте приоритет этой задачи до 9. Теперь, запустите ещё один бесконечный процесс без изменения приоритета в фоновом режиме и посмотрите, как распределяются ресурсы системы между ними.
-
Уничтожьте все запущенные вами в предыдущих пунктах процессы.