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.

Контрольные вопросы

1. Что называется процессом, идентификатором процесса; какой процесс запускается непосредственно ядром Linux, чем он характеризуется?

2. Какие команды для перенаправления ввода и вывода вы знаете?

3. Расскажите об использовании канала (|). В чем состоит удобство его использования?

4. В чем заключается многопользовательность и многозадачность системы Linux?

5. Расскажите, какие бывают режимы выполнения процессов, и поясните на примере, как запустить задачу в том или ином режиме.

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

7. Какая основная команда используется для получения информации о процессах? Какие опции надо указать, чтобы узнать о запущенном процессе sort следующую информацию:

· какой пользователь запустил данный процесс;

· сколько на него тратится оперативной памяти;

· каков статус этого процесса.

8. Расскажите о функциях команды who и её опциях.

9. Формат команды at, для чего она используется.

10. В чем принципиальное различие команд at и batch?

11. Перечислите средства управления многозадачностью. Подробно расскажите о любом из них.

12. Какой наименьший приоритет может иметь запущенная вами задача?

13. Формат команды kill. Какими способами можно завершить процесс? В каких случаях подходит каждый из них?

Практическая часть

1. Войдите в систему Linux под именем, задающимся преподавателем.

2. Войдите в оболочку Midnight Commander (команда: #mc).

3. Создайте свой каталог с именем, совпадающим с номером вашей бригады (клавиша F7) в каталоге, определённым преподавателем.

4. Создайте файлы 1–3.txt с помощью комбинации клавиш Shift+F4:

файл 1.txt: файл 2.txt: файл 3.txt:

2 i New OS – – run now.

X

L

N

U

5. Создайте файл infinity содержащий сценарий бесконечного цикла:

# !/bin/sh

x=$((0));

z=$((0));

while /bin/true

Do

x=$(($x+$z));

Done

Установите права доступа к файлу infinity как к выполняемому, введя команду: #chmod 0100 infinity

6. Связывание процессов. Отсортируйте файл 1.txt (команда sort) и модифицируйте вывод результата на экран заменой букв L и x на M и s соответственно (команда замены: tr Lx Ms). Причём, реализуйте это обязательно одной командой.

7. Добавьте отсортированный текст файла 1.txt в конец 2.txt. Убедитесь в достижении результата.

8. Запустите бесконечный процесс (команда: #sh infinity) в приоритетном режиме, и во время его выполнения уничтожьте его.

9. Запустите бесконечный процесс в фоновом режиме. Проверьте, что процесс выполняется. Затем уничтожьте его любым из изученных вами способов.

10. Переключение режимов. Запустите бесконечный процесс infinity в приоритетном режиме. Во время его выполнения приостановите процесс и запустите снова в фоновом режиме. Попытайтесь сделать то же самое в обратном порядке, а затем уничтожьте работающий процесс.

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

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

13. Узнайте текущую дату и время с помощью команды date.

14. Организуйте при помощи команды at через 15 минут запись в файл 4.txt файлов 2.txt и 3.txt в соответствующем порядке и продолжите выполнение остальных пунктов задания.

15. Убедитесь, что файл 1.txt – не отсортирован. Запустите процесс сортировки файла 1.txt через 5 минут а затем, отмените выполнение задания. Проверьте, остался ли файл 1.txt по-прежнему не отсортированным.

16. Создайте файл с именем start. Его содержимым должны быть команды выполняющие задачу, описанную в пункте 14. Затем запустите этот файл через 5 минут с помощью команды at.

17. Просмотрите очередь запущенных заданий с помощью команды at –l. Воспользовавшись командой ps с необходимыми опциями, попытайтесь определить идентификаторы процессов, запущенных в пунктах 14 и 16. Убедитесь, что в заданное время закончится процесс запуска файла start. Сотрите результаты, полученные в файле 4.txt. Подождите окончания выполнения задания, запущенного в п.14. Ещё раз проверьте результат выполнения в файле 4.txt.

18. Запустите бесконечный процесс с помощью команды nohup. Проверьте, что процесс запущен и выйдите из системы (команда #exit). Затем войдите в систему снова и убедитесь, что команда выполняется (используя команду: #ps -uax | more). Теперь, аналогичные действия произведите с процессом сортировки файла 1.txt. Причём, вывод результата необходимо направить в файл 5.txt. Убедитесь, что команда выполняется.

19. Запустите бесконечный процесс с приоритетом, уменьшенным на 5, в фоновом режиме, а затем понизьте приоритет этой задачи до 9. Теперь, запустите ещё один бесконечный процесс без изменения приоритета в фоновом режиме и посмотрите, как распределяются ресурсы системы между ними.

20. Уничтожьте все запущенные вами в предыдущих пунктах процессы.

Лабораторная работа №7

Наши рекомендации