Unix: Работа по расписанию во FreeBSD.

Способность операционной системы выполнять задачи в заданное время (по расписанию) может сделать администрирование существенно проще и эффективнее, а в ряде случаев такая способность просто необходима. В данной статье рассмотрены средства отложенной работы и работы по расписанию, имеющиеся во FreeBSD (на примере FreeBSD 5.1), однако большинство описанных здесь функций будут доступны Вам и в других ОС семейства Unix, включая Linux. Особое внимание уделено механизмам работы, знание которых необходимо для эффективного поиска возможных проблем.

 

Прежде всего, рассмотрим утилиту, которая позволяет однократно выполнить ту или иную команду в заданное время. Это команда at, простейший синтаксис которой выглядит следующим образом:

 

# at time

 

Здесь time - время, когда задача должна быть выполнена. Перечень команд, составляющих задачу, считывается со стандартного ввода (как правило, это ввод с клавиатуры, завершаемый символом Ctrl-D). Например:

 

# at 11:00pm

who

last -s -20

df

^D

 

Этот ввод приведет к тому, что в 23:00 (сегодня, если дело происходит утром, и завтра, если после обеда) последовательно будут выполнены команды who, last и df, и их вывод будет отправлен на электронный адрес пользователя.

 

Команда предоставляет пользователю большую свободу в выборе формата времени:

Формат времени       Примеры        Описание     

HH[:]MM[pm|am]       1405

14:05

2:05pm            Команда будет выполнена в 14:05 текущего или следующего дня       

midnight           midnight           Команда выполнится в полночь   

noon    noon    Команда выполнится в полдень   

teatime             teatime             Команда выполнится в 16:00        

+N Unit           +3 minutes

+3 hours

+3 days

+3 weeks

+3 month

+3 years

            Выполнить через 3 минуты

Через 3 часа

Через 3 дня

Через 3 недели

Через 3 месяца

Через 3 года

           

 

Таким образом, существует возможность задать время как относительно момента подачи команды at, так и абсолютно. В последнем случае оно может быть дополнено указанием конкретной даты, форматы записи которой не менее разнообразны. Так, дата "12 февраля 2005 года" может быть записана одним из следующих способов: 12.02.2005, 12.02.05, 12/02/2005, 12/02/05, Feb 12 2005: Также вместо конкретной даты можно использовать ключевое слово tomorrow, указывающее, что задание должно быть исполнено в указанное время завтра. При необходимости указать, что задание должно быть выполнено именно сегодня, можно использовать дополнение today. Естественно, при попытке задать уже прошедшее время Вы получите соответствующее сообщение об ошибке.

 

Кроме того, время может быть задано в формате POSIX, для чего следует использовать ключ -t:

 

# at -t [[CC]YY]MMDDhhmm[.SS]

# at -t 12011530      // команда выполнится 1 декабря этого года в 15:30

 

По умолчанию команду at может выполнять только суперпользователь root. Чтобы дать такое право другим пользователям, их следует перечислить в файле /var/at/at.allow. Если файл at.allow в этой директории отсутствует, но есть файл at.deny, то команду at смогут запускать все пользователи, кроме перечисленных в at.deny. Обратите внимание, что имена пользователей в этих файлах должны начинаться строго с первой позиции и обязательно завершаться символом перевода строки даже для последней строчки.

 

Из дополнительных опций команды at перечислим следующие:

-f file - задает имя файла, содержимое которого будет воспринято как задание. Если опция не указана, задания считываются со стандартного ввода (до символа Ctrl-D). Например:

 

# at -f myjobs +2 minutes

 

В результате через 2 минуты будет выполнена последовательность команд, перечисленных в файле myjobs. Команды в этом файле задаются по одной на каждой строке (так же, как и при вводе с клавиатуры). Результат также будет направлен по электронной почте.

-m - заставляет отсылать письмо о выполнении задания пользователю (без этой опции письмо отсылается только в том случае, если результат выполнения задания отправляется на стандартный вывод).

-q queue - позволяет поместить задание в указанную очередь, которая может быть задана одной буквой латинского алфавита (a-z, A-Z). По умолчанию задание помещается в очередь "c" для at, и в "E" для batch (см. далее). Помимо удобства работы с большим числом отложенных заданий, различные очереди позволяют управлять приоритетом (nice) их выполнения - чем дальше буква, соответствующая очереди, находится от начала алфавита, тем большее значение nice, то есть меньший приоритет, получат задачи, стоящие в этой очереди. Очереди, обозначенные буквами верхнего регистра, будут отрабатываться только в том случае, если загрузка системы позволяет это сделать (см. далее описание ключа -b (batch)), и после того, как будут запущены задания из очередей, обозначенных строчными буквами.

-l [-q queue] - выводит список заданий, находящихся в очереди. Можно использовать также псевдоним atq, выполняющий те же функции. Если команду atq выполняет суперпользователь, то выводятся все задания, находящиеся в очереди. Иначе - только задания, принадлежащие текущему пользователю.

-r job - удаляет указанное задание из очереди. Эта команда также может быть вызвана с использованием псевдонима: atrm.

-b - выполняет задание, если средняя загрузка системы (посмотреть ее можно с помощью команды w или top, параметр load average) не превышает указанное значение (по умолчанию 1.5; как его изменить - смотрите далее в описании команды atrun). Batch - псевдоним для вызова at с данным ключом:

 

# batch -f myjobs +2 minutes

 

Команда аналогична примеру, приведенному выше для опции -f, но задание будет выполнено, когда средняя загрузка системы (load average) будет ниже 1.5. Так, если это условие будет истинно через 2 минуты, то задание выполнится в указанное время. Иначе оно будет откладываться, пока загрузка не снизится до требуемого значения.

 

С остальными параметрами можно ознакомится на страницах справочного руководства "man at".

 

Для чего может понадобиться отложенное выполнение команд? Например, можно поставить на ночь (когда нагрузка меньше, а трафик дешевле) закачку большого файла:

 

# echo 'fetch ftp://ftp.ru/pub/bigfile.avi' | at 0200

 

Здесь мы просто направляем на стандартный ввод программы at строку 'fetch ftp://ftp.ru/pub/bigfile.avi'; данная команда будет запущена в 2:00.

 

Далее, пусть с 1-го января вступают в силу новые тарифы на услуги, оказываемые Вашей компанией, и Вы хотите, чтобы информация о них на Вашем сайте всегда была актуальна (пусть она находится в файле /usr/local/www/data/tariffs.html). Чтобы не встречать Новый Год наедине с сервером, создайте файл tariffs.html с новой информацией и разместите его, скажем, в /home/myhome/temp. Теперь задача обновления ровно в полночь будет решаться так:

 

# at midnight Jan 01

cp /home/myhome/temp/tariffs.html /usr/local/www/data/

^D

 

Можно запустить сборку системы из исходных текстов, когда нагрузка на систему будет меньше 1.5 (процесс этот ресурсоемкий, но не срочный):

 

# batch

cd /usr/src

make buildworld > buildword.log   // мы же не хотим получить все это по почте?

^D

 

В предыдущем примере стандартный вывод будет перенаправлен в log-файл, а сообщения об ошибках поступят на электронный адрес пользователя, запустившего команду. В общем, полезных примеров можно привести массу.

 

Еще небольшой совет - вступая во владение новым сервером, проверьте, какие команды у него в очереди. А то вдруг предыдущий администратор, уволенный за неумеренное потребление спиртного, оставил Вам "сюрприз" в виде "rm -fR /*", запланированный на запуск через пару месяцев?

 

Теперь несколько подробнее рассмотрим механизм, обеспечивающий работу команды at. Когда с ее помощью формируется отложенное задание, в папке /var/at/jobs создается файл сценария, содержащий переменные окружения (какими они были на момент формирования задания; при выполнении задания эти переменные будут восстановлены) и собственно команды, которые должны быть выполнены. Периодически (по умолчанию - каждые 5 минут) запускается процесс atrun, который выполняет все задания, срок выполнения которых истек. Таким образом, говоря выше, что "задание будет выполнено через 2 минуты", я был не совсем точен. На самом деле задания выполняются с точностью в 5 минут (как это можно изменить - читайте ниже). Процесс atrun может быть выполнен с двумя ключами:

 

# atrun [-l average] [-d]

 

Ключ -l задает максимальное значение средней загрузки системы, при котором могут быть выполнены задания, сформированные командой at -b (batch). Нужно заметить, что если в очереди имеется несколько batch-заданий, то при снижении загрузки до допустимого уровня будет запущено только одно (имеющее более раннее время исполнения). Последующие будут запускаться на выполнение также по одному при каждом следующем вызове atrun, если средняя загрузка системы все еще будет позволять сделать это. По умолчанию значение average равно 1.5. Ключ -d включает режим отладки (все сообщения об ошибках поступают на стандартный вывод, а не в системные файлы протоколов через механизм syslog).

 

После выполнения задания с соответствующего файла сценария снимается признак исполнимости (x), а при следующем вызове процесса atrun он удаляется из /var/at/jobs. Просмотреть выполненные, но еще не удаленные задания с указанием времени, когда они были выполнены, позволяет команда atq -v (для at с ключом -l ключ -v игнорируется).

 

Периодический запуск процесса atrun обеспечивается другим механизмом Unix-систем - cron. О нем и пойдет речь далее.

 

Демон cron запускается автоматически при старте системы (конкретно - сценарием /etc/rc.d/cron), и каждую минуту проверяет файлы расписаний п ользователей и системный файл расписаний /etc/crontab на предмет наличия заданий, которые должны быть выполнены в данную минуту.

 

По умолчанию, каждый пользователь может иметь свой файл расписаний. Изменить это можно с помощью файлов /var/cron/allow и /var/cron/deny (так же как и для команды at: если файл allow существует, то использование cron будет разрешено только пользователям, перечисленным в нем). Файлы расписаний располагаются в /var/cron/tabs с именами, соответствующими имени пользователя. Для управления ими следует использовать утилиту crontab, синтаксис которой представлен ниже:

 

crontab [-u user] (-l | -r | -e)

 

Опция -u позволяет работать с файлом расписаний указанного пользователя user, а не текущего, как это происходит без данной опции. Если Вы работаете через su, лучше всегда использовать этот ключ, чтобы избежать разночтений. Ключ -l позволяет вывести на экран пользовательский файл расписаний, -r - удалить его, -e - редактировать. Для редактирования вызывается редактор, указанный в переменной окружения EDITOR или VISUAL. Формат строки задания в пользовательском файле следующий:

 

MinHourDayMonth     WDayCommand

 

То есть через пробельные символы (пробелы и символы табуляции) указываются минута, час, день, месяц, день недели, когда должна быть выполнена команда, указанная в шестом поле. Допускаются перечисления (через запятую: 1,3,5), интервалы (через дефис: 1-5), шаг (после символа "/": 1-9/2 означает "1,3,5,7,9", то есть каждое второе значение из указанного диапазона). Звездочка "*" означает все допустимые значения. Для месяца и дня недели можно использовать их сокращенные английские названия (первые три буквы), например: Feb, JUN, tue, Fri (регистр значения не имеет). Диапазоны и перечисления для имен недопустимы, то есть по имени можно обозначить только один месяц или день недели. Для числового обозначения дней недели допустимыми являются числа 0-7, где как 0, так и 7 обозначают воскресенье. Несколько примеров:

 

# Запускать программу каждый вторник в 12:00

012**2/usr/home/admin/checkmail

 

# Выполнять задание через день в январе, марте и с сентября по декабрь

00*/21,3,9-12*/usr/local/test/test

 

# Запускать скрипт 1-го и 15-го числа каждого месяца в 2:05,

# а также по воскресеньям (Day и WDay работают в режиме "ИЛИ")

521,15*Sun/home/script

 

Демон cron при каждой активизации проверяет дату изменения файла /etc/crontab и директории /var/cron/tabs. Если они изменились, то он перечитывает все изменения и учитывает их при последующих вызовах. Поскольку утилита crontab после редактирования файла заданий меняет дату изменения для папки /var/cron/tabs, то после того, как в пользовательский файл расписаний будут внесены изменения, нет нужды в перезапуске процесса cron - эти изменения будут учтены при следующей активизации. Именно по этой причине для редактирования пользовательских файлов расписаний следует использовать команду crontab -e, а не редактировать файлы непосредственно. Для файла /etc/crontab дата изменения проверяется отдельно, поэтому его можно изменять обычным редактором (естественно, для этого нужны права root).

 

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

@reboot (выполнять при загрузке операционной системы)

@yearly (выполнять ежегодно в полночь 1-го января)

@monthly (выполнять ежемесячно в полночь 1-го числа)

@weekly (выполнять в полночь каждый понедельник)

@daily (выполнять ежедневно в 0:00)

@hourly (выполнять в начале каждого часа).

 

Например:

 

# Выполнять 1-го числа каждого месяца в 0:00

@monthly/usr/local/billing/close_month.pl

 

Помимо собственно заданий, файл crontab может содержать строки, задающие системные переменные, с которыми задания будут отрабатываться. Так, можно задать оболочку, в которой будут исполняться сценарии (переменная SHELL, по умолчанию это sh), переменную PATH. Если нужно, чтобы выводимая выполняемыми командами информация пересылалась на почтовый ящик не владельца файла расписаний (как это происходит по умолчанию), а на другого пользователя, для этого можно использовать переменную MAILTO. Пустое значение (MAILTO="") приведет к тому, что сообщения будут перенаправляться в /dev/null.

 

Формат системного файла /etc/crontab несколько отличается от пользовательского: на шестой позиции указывается имя пользователя, с правами которого должна запускаться команда (и опционально - группа, отделенная от имени пользователя двоеточием, например "root:wheel"), а сама команда отодвигается на седьмую. Например, вызов atrun задан в этом файле такой строкой:

 

*/5****root/usr/libexec/atrun

 

Из этой записи видно, что процесс atrun, обеспечивающий отработку заданий, сформированных командой at, будет запускаться каждые 5 минут. При необходимости повысить точность отработки заданий по at, следует соответствующим образом изменить приведенную выше строку.

 

С использованием механизма cron выполняется и такая важная задача, как ротация log-файлов (см. строку, отвечающую за запуск newsyslog). По умолчанию процесс newsyslog запускается каждый час и проводит ротацию (архивирование и перезапись) log-файлов в соответствии с настройками в /etc/newsyslog.conf. На загруженных системах с подробным протоколированием ротация может понадобиться чаще, чем раз в час, для чего следует изменить соответствующую строку в /etc/crontab.

 

С механизмом cron связана еще одна полезная вещь - автоматическое обслуживание системы, обеспечиваемое с помощью periodic-сценариев. В системном crontab можно заметить следующие три строки:

 

13***rootperiodic daily

154**6rootperiodic weekly

3051**rootperiodic monthly

 

Утилита periodic исполняет все сценарии, расположенные в папке, соответствующей параметру, переданному ей при вызове. Эта папка ищется в каталоге /etc/periodic. Например, запуск periodic daily приведет к выполнению всех скриптов, расположенных в /etc/periodic/daily. Также существует возможность создавать свои периоды обслуживания, для чего должна быть создана новая директория в /etc/periodic, в которую помещаются необходимые скрипты, и добавлена соответствующая строка запуска в crontab. Настроить обслуживание системы под собственные нужды можно в файле /etc/periodic.conf (по умолчанию отсутствует). Настройки по умолчанию заданы в /etc/defaults/periodic.conf. Как видно, эти сценарии выполняют очистку временных файлов, резервное копирование жизненно важной информации, формируют отчеты о состоянии системы и т.д. Основная работа приходится на ежедневное обслуживание (daily). Можно заметить, что в папке /etc/periodic присутствует поддиректория security, хотя в crontab вызова для нее нет. Если поискать внимательно, то команду вызова "periodic security" можно найти в файле /etc/periodic/daily/450.status.security, то есть сбор сведений о состоянии безопасности выполняется в ходе ежедневного обслуживания, но для удобства вынесен в отдельную поддиректорию, и по этой же причине отчет высылается отдельным письмом.

 

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

 

В директориях daily, weekly и monthly можно заметить сценарии 999.local. Они позволяют запускать так называемые локальные periodic-сценарии, которые перечисляются в файлах /etc/daily.local, /etc/weekly.local и /etc/monthly.local соответственно. Использование локальных сценариев для собственных нужд более предпочтительно, чем добавление скриптов в /etc/periodic, поскольку позволяет четко разделить системные и п ользовательские сценарии и тем самым упростить сопровождение и обновление системы.

 

Как и для остальных команд, выполняемых по cron, весь стандартный вывод будет перенаправлен на электронный адрес пользователя-владельца таблицы crontab или указанного в переменной MAILTO.

 

Придумывать полезные примеры для cron труда не составляет. Приведу два первых, пришедших в голову. Предположим, нам нужно контролировать состояние сети. Для этого достаточно занести в Ваш пользовательский файл расписаний (системный файл лучше использовать исключительно по системному назначению) строку:

 

0 * * * *   /sbin/ping -с10 my.provider.ru | /usr/bin/grep 'avg' >> /var/log/ping.log

 

Как это будет работать? В начале каждого часа будет выполняться команда ping, посылающая десять пакетов на адрес Вашего провайдера. Из возвращаемой информации будет выбрана последняя строка с результатами, которая будет записана в файл ping.log для последующего анализа таких величин, как среднее время передачи пакета, величина девиации и т.д. Причем в файл будут заноситься только результаты успешного пинга, а все ошибки (типа "Host is down") будут отправляться по электронной почте владельцу файла расписаний.

 

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

 

124***/usr/sbin/ntpdate ntp.alaska.edu

 

Естественно, Вы можете использовать для получения информации о точном времени тот сервер, который Вам больше нравится (список серверов можно получить если на любом поисковике подать запрос "Public ntp server").

 

Еще несколько слов о путях к вызываемым программам. Для сервиса at переменная PATH и каталог, в котором задание будет выполняться, соответствуют тем значениям, которые были на момент формирования задания. То есть если я запускаю at, находясь в директории /etc, то и задание будет выполняться так, как будто оно было запущено из этой же директории, и соответственно, все относительные пути, имеющиеся в запускаемом сценарии, будут разрешаться относительно этого каталога. Cron ведет себя несколько иначе - он запускает задания из домашнего каталога пользователя, а в качестве переменной PATH использует то значение, которое задано в файле расписаний (см. crontab -l) в переменной PATH. По умолчанию PATH=/usr/bin:/bin. Проверить это достаточно просто - сформируйте задание с командами pwd и echo $PATH, и Вы получите письмо со значениями этих параметров на момент выполнения задания.

 

На этом знакомство со службами выполнения заданий по расписанию можно завершить. Как обычно, дополнительную информацию можно получить на страницах справочного руководства man: at(1), atrun(8), cron(8), crontab(1), crontab(5), periodic(8), periodic.conf(5). Также мощнейшим средством освоения системы по-прежнему остается "научный тык".

Глава 6. Системное администирирование

Описываемые в этой главе команды UNIX предназначены главным образом для использования системными администраторами, более того, часть из них могут быть выполнены только привилегированным пользователем. Однако некоторые из этих команд, а именно команда at и связанные с ней, будут полезны и большинству обычных пользователей UNIX.

at параметры время [дата] инкремент at параметры [идентификатор]

Команда at позволяет выполнить заданные вами действия в указанное время в указанный день. Например, вы можете распечатать несколько больших документов на лазерном принтере в полночь, чтобы не занимать принтер на несколько часов днем, когда он может понадобиться другим людям. При использовании команды at вам не понадобится находиться на работе в полночь, чтобы отправить документы на печать (но не забудьте в конце рабочего дня проверить, есть ли в принтере бумага!).

Команда at имеет два различных набора параметров. Первый из

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

Для помещения задания в очередь вам нужно после ввода команды at с параметрами ввести команды, которые должны быть исполнены. Завершив ввод всего задания, нажмите Ctrl-D. В указанное время задание будет выполнено. Если задание выведет какую-либо информацию на стандартный вывод, она будет отправлена вам по электронной почте.

ПРИМЕЧАНИЕ Несмотря на то что команда at предназначена, в первую очередь, для использования системным администратором, она также может использоваться и обычными пользователями. Однако пользователям может быть запрещен доступ к этой команде. Если вы увидите сообщение об ошибке (at: you are not authorized to run at. Sorry.), то обратитесь к администратору системы.

Примеры

$ at llam

Is

Ctrl-D

(at считывает задание со стандартного ввода. Вы должны ввести команды с клавиатуры и завершить ввод задания, нажав Ctrl-D.)

$ at llam nov I

$ at llam nov 1, 1998

$ at llam sun

$ at now + 2 weeks

$ at [параметры] [идентификатор]

ПРИМЕЧАНИЕ При помещении задания в очередь его идентификатор выводится системой на экран.

Параметры

-f файл Чтение задания из указанного файла, а не со стандартного ввода. Этот параметр доступен не во всех системах

-т Уведомление пользователя по завершении выполнения задания

время Время, в которое должно быть выполнено задание. Если явно не указано обратное (при помощи суффикса am или рт), то используется 24-часовой формат времени

midnight,

noon, now Эти параметры обозначают определенные моменты времени: midnight ≈ полночь, noon ≈ полдень; если указан параметр now (сейчас), то должен быть указан инкремент

дата Дата; как правило, используется следующий формат: месяц, день, год. Аргумент месяц дол-жен представлять собой стандартное трехбуквенное сокращение английского названия меся^ (например, Jan или Nov); аргумент год можд╕ быть опущен

день День недели, в который должно быть выполнено задание. Параметр день может представлять собой либо полное (Sunday), либо сокращенное (Sun) английское название дня недели

today, tomorrow Эти параметры обозначают определенные дни:

today ≈ сегодня, tomorrow ≈ завтра

-I Вывод списка заданий в очереди

-г Удаление задания из очереди

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

minute (^минута), hour (час), day (день), week (неделя), month (месяц), year (год). В приведенном выше примере параметр now + 2 weeks означает, что задание будет выполнено ровно через две недели после постановки в очередь

Родственные команды

atq Вывод списка задач, поставленных в очередь при помощи команды at

atrm Удаление задачи из очереди

batch Выполнение последовательности команд в фоновом режиме

3tC╕ параметры пользователь

Вывод списка заданий, помещенных в очередь командой at. Возможности этой команды невелики. Вы можете вывести список всех заданий, список заданий, помещенных в очередь определенным пользователем, а также список всех заданий в том порядке, в котором они помещались в очередь.

ПРИМЕЧАНИЕ Несмотря на то, что команда atq предназначена, в первую очередь, для использования системным администратором, она также может использоваться и обычными пользователями. Однако пользователям может быть запрещен доступ к этой команде. Если вы хотите использовать команду atq, обратитесь к администратору системы.

Параметры

-с Вывод списка заданий в том порядке, в котором они ставились в очередь

-п Вывод только общего количества заданий в очереди

Родственные команды

at Постановка задачи в очередь для выполнения в указанное время

atnn Удаление задачи из очереди

atrm параметры пользователь идентификатор

Удаление из очереди заданий, помещенных туда командой at. Привилегированный пользователь имеет право удаления всех заданий или всех заданий поставленных в очередь определен-

ным пользователем. Обычный пользователь имеет право удалять только те задания, которые он сам поместил в очередь.

Параметры

-а Удаление из очереди всех заданий, помещенных туда указанным пользователем

-i Запрос подтверждения перед удалением каждого задания

Родственные команды

at Постановка задачи в очередь для выполнения в указанное время

atq Вывод списка задач, поставленных в очередь при помощи команды at

batch

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

Пример

batch

pr -a kevinstuff lp kevinstuff Ctrl-D

Параметры

Нет.

chgrp параметры группа файл(ы)

Смена группы, к которой принадлежит файл. Может быть указана как существующая, так и вновь создаваемая группа. Группа задается либо именем (которое хранится в файле /etc/groups), либо числовым идентификатором. Обычный пользователь может выполнять операцию смены группы только с теми файлами, владельцем которых он является. Привилегированный пользователь может выполнять операцию смены группы с любыми файлами.

Команда chgrp также может быть использована для смены группы, к которой принадлежит каталог и все файлы в нем.

Примеры

chgrp restricted kevin.report

(После выполнения этой команды файл kevin.report будет принадлежать группе restricted.)

chgrp -R restricted /usr/users/kevin/reports

(После выполнения этой команды все файлы и подкаталоги каталога /usr/users/kevin/reports будут принадлежать группе restricted.)

Параметры

-h Изменение атрибутов символических ссылок, но не файлов, к которым относятся ссылки. Этот параметр доступен не во всех системах

-R Рекурсивное изменение: меняется группа, которой принадлежат все файлы и подкаталоги данного каталога

группа Смена текущей группы на указанную. Аргумент группа может быть как именем группы (хранящимся в файле /etc/groups), так и числовым идентификатором группы

Родственные команды

chown Смена владельца файла

chmod Изменение режима доступа к файлу

newgrp Создание новой рабочей группы

Ср10 -I параметры Ср10 -О параметры Ср10 -р параметры

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

crontab файл

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

пользует этот файл и выполняет содержащиеся в нем команды согласно расписанию.

Синтаксис этого файла жестко определен. Каждая строка состоит из шести полей, разделенных пробелами. Первые пять полей определяют расписание, в соответствии с которым будет выполняться команда, а шестое поле содержит саму команду. Первые пять полей задают время выполнения команды:

Поле Значение

1 Минуты (0-59)

2 Часы (0-23)

3 Число месяца (1-31)

4 Месяц (1-12)

5 День недели (0-6; 0 соответствует воскресенью)

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

Примеры

Чтобы команда command выполнялась каждое утро в 9:30, соответствующая строка в файле расписаний должна выглядеть так:

30 9 * * * command

Чтобы команда выполнялась первого и пятнадцатого числа каждого месяца в 13:00, используйте следующую строку:

О 13 1,15 * * command

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

$ crontab events_file

ПРИМЕЧАНИЕ Хотя команда crontab первоначально предназначалась для использования системными администраторами, она будет полезна любому пользователю. Однако пользователям BSDUNIX, а также версий UNIX, более ранних, чем System V, не повезло. В этих системах использование crontab разрешено только системному администратору. Если же вы работаете с более новой версией UNIX и хотите использовать эту команду, обратитесь к администратору системы.

Параметры

-е Редактирование файла расписаний, если он уже существует, и создание его, если он не существует. Этот параметр доступен не во всех системах

-I Вывод содержимого файла расписаний

-г Удаление файла расписаний

Родственные команды

at Постановка задачи в очередь для выполнения в указанное время

login параметры

Эта команда позволяет вам войти в UNIX-систему.

Если вы не указали имя пользователя при вызове команды login, то вам будет предложено ввести его. Кроме того, в зависимости от конфигурации системы, login может попросить вас ввести ваш пароль.

Параметры

пользователь - . Регистрация в системе в качестве

пользователя с указанным системным идентификатором

переменнэя^зяачеяие Изменение значения переменной окружения

Родственные команды

logname Вывод системного идентификатора пользователя

neWQFp параметры группа

Эта команда позволяет вам сменить группу, к которой вы принадлежите. Вы должны иметь право на присоединение к указанной группе.

Параметр

Смена окружения на окружение указанной группы одновременно с присоединением к указанной группе

Родственные команды

chgrp Смена группы, которой принадлежит файл env Установка переменных окружения

Stty параметры режимы

Вывод конфигурации и параметров терминала. Команда stty без параметров выведет текущую конфигурацию терминала в простейшем формате. Для получения более полной (и трудночитае-мой) информации используйте команду stty -а.

Список аппаратного обеспечения, используемого с UNIX, непрерывно расширяется, и команда stty становится все менее и менее общей. Поэтому, если только вы не увлечены исследованием аппаратуры вашего компьютера и копанием в разнообразных настройках и режимах, мы вам советуем бежать от команды stty как от огня. Правда, есть одно исключение. Если вы подключились к UNIX-системе при помощи модема и обнаружили, что клавиша Backspace не работает, введите следующую команду:

$ stty erase backspace

He вводите слово "backspace", вместо этого нажмите клавишу Backspace на клавиатуре. Это должно решить вашу проблему.

Параметры

-а Вывод всех параметров терминала

-д Вывод всех параметров терминала в форме, используемой командой stty при установке параметров

tpUt параметры имя

Вывод информации о возможностях терминала, содержащейся в базе данных terminfo (которая обычно находится в каталоге /usr/lib/terminfo).

Хотя команду tput можно использовать для управления терминалом (например, tput clear приведет к очистке экрана), но эта возможность используется, как правило, программистами, а уж никак не начинающими пользователями UNIX.

Параметры

-Т тип Вывод информации о возможностях терминала указанного типа. Если этот параметр не указан, то выводится информация об используемом терминале

init Вывод строки инициализации терминала и установок табуляции

longname Вывод полного имени терминала

Родственные команды

stty Настройка режима работы терминала

tty параметры

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

Параметры

-а Вывод всей доступной информации. Этот параметр имеется не во всех системах

-s Вывод только кода возврата: 0 (терминал), 1 (не терминал) или 2 (ошибочный параметр)

Родственные команды

stty Настройка режима работы терминала

Соседние файлы в папке материалы к собеседованию