Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_раб ОС_5-8.doc
Скачиваний:
15
Добавлен:
04.11.2018
Размер:
559.62 Кб
Скачать
    1. Запуск команд в заданное время с помощью команд at и batch

ОС Linux предоставляет различные возможности контроля выполнения команд. Например, можно составить список команд и определить, когда они должны быть запущены. Команда at, например, получает список команд (введенный с клавиатуры или находящийся в файле) и запускает их в определенное в команде время. Команда batch подобна команде at, но запускается не в определенное пользователем время, а когда система сама решит, что загрузка позволяет ей запустить дополнительные процессы.

      1. Запуск команд в определенное время с помощью команды at

Для запуска одной или более команд в заранее определенное время используется команда at. В ней вы можете определить время и дату запуска той или иной команды. Как минимум, следует указать два параметра – время запуска и какая команда должна быть запущена.

Общий формат команды:

at <время>

Первая команда

последняя команда

<Ctrl+D>

Аргумент <время> состоит из времени дня и даты, если дата не сегодняшняя (в случае, когда дата не будет указана, – она подразумевается сегодняшней). В нашем примере в заданный день и заданное время будут распечатаны все файлы каталога /usr/sal/reports и пользователю boss будет направлено уведомление об этом. При использовании команды at нельзя забывать, что по окончании ввода всей команды необходимо нажать сочетание клавиш <Ctrl+D>.

#at 1:23 Jan 24

at>lp /usr/sal/reports/*

at>echo “Files printed, Boss!” | mail –s “Job done” boss

at><EOT>

После ввода всей команды вы увидите на дисплее нечто, наподобие:

warning: commands will be executed using /bin/sh

job 14 at 2002-01-24 1:23

Это означает, что указанные выше команды будут запущены, как и было заказано, в 1:23 24-го января. Здесь приведен также идентификатор задания (14), который понадобиться, например, если вы решите отменить задание. Для этого к вашим услугам at с опцией –d:

#at –d 14

Если список команд находится в файле (например, getdone) и вы хотите запустить все перечисленные в нем команды в 10:00, то необходимо ввести:

#at 10:00 < getdone

Задания, определяемые вами, помещаются в очередь, которую операционная система периодически просматривает. Для того, чтобы просмотреть очередь заданий – введите at –L , и все запланированные задания появятся на экране.

И, наконец, несколько примечаний о работе с командой at:

  • команда at работает в фоновом режиме;

  • вы можете увидеть на экране только свои задания команде at.

  1. Управление многозадачностью

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

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

  • запуск процесса с приоритетом, отличающимся от приоритетов других процессов (команда nice);

  • изменение приоритета уже работающего процесса (команда renice);

  • завершение работы процесса (команда kill).

    1. Использование команды nohup

Обычно дочерний процесс прекращается после родительского. Таким образом, если вы запустили фоновый процесс, то он будет прекращен при вашем выходе из системы. Для того чтобы процесс продолжал выполняться даже после вашего выхода из системы, применяется команда nohup. Ее просто следует поместить в начало командной строки. Например:

#nohup sort worknew.dat

Эта простая команда заставляет операционную систему игнорировать ваш выход из нее и продолжать выполнение до тех пор, пока процесс не закончится сам по себе. Таким образом, вы запустите процесс, который может выполняться неделями, не требуя вашего контроля т.е. он окажется без контролирующего терминала (в столбце TTY команды psuax этого процесса будет стоять знак ?). Поэтому, для того чтобы в дальнейшем «засечь» этот процесс, вам будет необходимо использовать опцию x к команде ps. Кроме того, при работе с этой командой следует учитывать, что она не переводит запускаемый процесс автоматически в фоновый режим, а при указании в конце строки знака & – вы можете не получить приветствие после нажатия клавиши <Enter>. В этом случае надо просто пару раз нажать на клавишу <> (которая, как вы знаете из Unix’а, – возвращает в командную строку вводимые ранее вами команды) и приветствие вновь появится, либо – можно просто смело вводить новые команды и они будут работать.

Обычно, вывод запущенной с помощью nohup команды перенаправляется в файл nohup.out, о чем система честно предупреждает вас при запуске команды:

#nohup sort worknew.dat

nohup: appending output to ‘nohup.out’

Итак, отсортированный файл и все возможные в процессе работы сообщения об ошибках после окончания работы окажутся в файле nohup.out. Однако, в следующем примере все сообщения об ошибках будут направлены в файл nohup.out, но отсортированный файл окажется помещенным в worknew.srt.

#nohup sort worknew.dat > worknew.srt &

nohup: appending output to ‘nohup.out’

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]