Если какой-либо параметр не имеет значения, то вместо него необходимо поставить звездочку.
Теперь рассмотрим несколько примеров.
00 5 * * * /home/flenov/backup1_script
Здесь заполнены только часы и минуты. Так как остальные параметры не указаны, то команда будет выполняться ежедневно в 5, вне зависимости от дня недели, числа или месяца.
00 20 * * 1 /home/flenov/backup2_script
Эта команда выполняет тот же файл сценария каждый понедельник (день недели равен 1) в 20:00.
00 * * * * /home/flenov/backup3_script
Такая команда будет выполняться каждый час ровно в 00 минут.
Внимание!
Если вы запустили программу crontab и, не введя команд, нажмете клавиши <Ctrl>+<D>, то все предыдущие задания сотрутся. Будьте внимательны, для выхода из программы без сохранения используйте только клавиши <Ctrl>+<C>.
Помимо этого, у сервиса cron есть несколько дополнительных директорий, упрощающих создание расписаний. Вот распределение выполняемых сценариев по каталогам:
□ /etc/cron.hourly - ежечасно;
□ /etc/cron.daily - ежедневно;
□ /etc/cron.weekly - еженедельно;
□ /etc/cron.monthly - ежемесячно.
Вроде все просто, но если сценарий выполняется еженедельно, то в какое время и в какой день недели? Все станет ясно, если посмотреть на конфигурационный для сервиса cron файл /etc/crontab. В нем есть следующие строки:
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
В начале строки указывается время выполнения. Вы можете изменить его так, что сценарии из директории /etc/cron.monthly начнут выполняться ежечасно. Так что, названия чисто символические и только по умолчанию. Они легко меняются.
Обратите также внимание, что в этих директориях уже есть сценарии, и все ненужные можно убрать, чтобы излишне не нагружать систему, или запланировать их выполнение на другое время.
Чтобы просмотреть список существующих заданий, выполните команду crontab с параметром -1. Для редактирования уже созданных записей выполните команду crontab с параметром -е. В ответ на это запустится текстовый редактор, в котором можно корректировать записи. Кстати, если вы не работали с этим редактором, то могут возникнуть проблемы, потому что он достаточно специфичный. Тогда нажмите клавишу <F1> и воспользуйтесь справкой. Команды тоже вводятся необычно. По выходу из этого редактора изменения вступают в силу мгновенно, а чтобы закончить работу без сохранения изменений, наберите ":q!" и нажмите клавишу <Enter>.
В принципе, все задания cron хранятся в текстовом виде. Для каждого пользователя формируется свой crontab-файл в директории /var/spool/cron/файл. Имя созданного файла совпадает с именем пользователя.
Вот пример содержимого crontab-файла:
#DO NOT EDIT THIS FILE - edit the master and reinstall.
#(- installed on Thu Jan 27 13:55:49 2005)
#(Cron version--$Id:crontab.c,v2.13 1994/01/17 03:20:37 vixie Exp $)
10 * * * * ls
Вы можете редактировать его напрямую, без использования команды crontab -е.
3.5.3. Безопасность работ
Напоследок хочется добавить во все преимущества команды at ложку дегтя. Злоумышленники очень любят использовать эту инструкцию в своих целях. Например, хакер может завести учетную запись с максимальными правами. Затем настроить команду at так, чтобы после выхода она удаляла запись и чистила следы его пребывания в системе.
В каталоге /etc есть два файла, которые вы должны настроить:
□ at.allow - по умолчанию этого файла может и не быть. Если он существует, то только те пользователи, которые в нем прописаны, могут выполнять команду at;
□ at.deny - в этом файле перечисляются пользователи, которым явно запрещен доступ к команде at.
Подобные файлы есть и для сервиса cron:
□ cron.allow - здесь описываются пользователи, которые могут работать с заданиями в cron;
□ cron.deny - в этом файле указываются пользователи, которым недоступен сервис cron.
Я не раз говорил и буду повторять, что все настройки должны идти от запрещения. Сначала необходимо все закрыть, а потом позволить только то и лишь тем пользователям, которым посчитаете нужным. Именно поэтому не стоит пытаться внести всех пользователей в список at.deny. Намного корректнее создать файл at.allow и для начала прописать там только свою учетную запись (будет лучше, если это не root-пользователь). Если вслед за этим вы услышите жалобы пользователей о нехватке команды at, то сначала убедитесь, что им действительно она нужна, и только после этого прописывайте их учетные записи в файл at.allow.
Ни один лишний пользователь не должен работать с командой at. Иногда лучше забыть выполнить команду, чем потерять контроль над системой.
Если вы не запускаете планировщики at и cron, то я рекомендую убрать сервис crond из автозапуска, а лучше даже удалить. Вы не сможете контролировать то, чем не пользуетесь.
В директории /etc есть файл crontab, в котором находятся все настройки сервиса cron. Я рекомендую внести в начало этого файла следующую директиву:
CRONLOG=YES
Это позволит записывать в журнал команды, которые выполнялись в cron. Журнал сервиса находится в файле /var/cron/log.
3.6. Настройка сети
После установки ОС Linux легко определяет сетевые карты. В этом у меня еще не было проблем. Но для работы в сети этого недостаточно. Во время инсталляции вы уже могли указать основные параметры подключения, но иногда появляется необходимость изменить настройки, и не будете же вы переустанавливать систему, когда нужно выполнить всего пару команд.
Для передачи данных по сети необходимо установить и настроить протокол - правила, по которым два удаленных устройства будут обмениваться информацией. Правила описывают, нужно ли устанавливать соединение, как происходит проверка целостности переданных данных, требуется ли подтверждение доставки и т.д. Все это реализовано в протоколе, а ваша задача его правильно настроить.
3.6.1. Адресация в Linux
Основным для Linux является ставший стандартом для Интернета протокол TCP/IP (Transmission Control Protocol/Internet Protocol, протокол управления передачей/протокол Интернета), который уже установлен, и достаточно его только настроить. Если вы еще не встречались с этим протоколом, то советую прочитать соответствующую книгу по этой теме. Мы не сможем здесь затронуть все нюансы TCP/IP, а остановимся только на базовых понятиях.
Для того чтобы сеть работала, нам необходимо, как минимум, настроить следующие параметры:
1. Указать адрес. Каждое устройство в сети должно иметь свой адрес. Без этого связь невозможна. Представьте себе, если бы дома не имели своего адреса, как бы тогда почтальоны доставляли письма? Имена компьютеров для этого не годятся, и об этом мы поговорим в гл. 11.
Вся адресация в сети происходит по IP-адресу, который состоит из четырех октетов десятичных чисел (для самой распространенной сейчас 4 версии IP-протокола), разделенных точками. Каждое число не может быть более 255. Если вы подключены к Интернету, то для такого интерфейса может быть установлен адрес, который выдал вам провайдер.
Для подключения по локальной сети адреса задаются самостоятельно. Я рекомендую для примера ограничиться адресами вида 192.168.1.x, где x - это число от 1 до 254 (значения 0 и 255 имеют специальное назначение). Каждому компьютеру должен быть присвоен свой адрес, отличающийся последней цифрой. Третий октет может быть любым, но обязательно одинаковым для всех компьютеров вашей сети. Я у себя использую число 77, т.е. адреса машин имеют вид 192.168.77.x.
2. Установить маску подсети. В сочетании с IP-адресом используется номер, называемый маской подсети, позволяющий разбить сеть на более мелкие сегменты (узлы). Из чего состоит ваш домашний адрес? Это город, улица и дом. Сеть имеет только две характеристики - номер сети и номер компьютера внутри нее. Маска определяет, какая часть в IP-адресе относится к сети, а что характеризует компьютер.
Чтобы понять назначение маски, необходимо каждое число перевести в двоичную систему. Для примера рассмотрим маску 255.255.255.0, она в бинарном виде выглядит так:
11111111.11111111.11111111.00000000
Теперь переведем в двоичную систему IP-адрес 192.168.001.001:
11000000.10101000.00000001.00000001
Нужно сопоставить IP-адрес и маску. Там, где стоят единицы - это адрес сети, а нули выделяют адрес компьютера в сети. В маске единицы обязательно должны идти слева, а нули - справа. Нельзя чередовать единицы с нулями. Следующая маска является корректной:
11111111.11111111.00000000.00000000
А вот такая будет ошибочной:
11111111.11111111.00000000.11111111
Справа от нулей не может быть единиц.
Получается, что первые три октета в IP-адресе при маске 255.255.255.0 - это адрес сети, а последний - номер компьютера в этой сети, а т.к. под него в данном случае отведено одно число, максимальное значение которого 255, то нетрудно догадаться, какое количество компьютеров может быть в вашей сети.
Рассмотрим еще пример:
192.168.001.001 - IP-адрес
255.255.000.000 - маска подсети
В данном случае первые два октета - это номер сети, а оставшиеся два - номер компьютера в сети. Число, которое можно задать двумя группами, гораздо больше, чем 255, а значит, и сеть будет масштабнее.
Теперь можно сделать одно заключение. Компьютеры, имеющие один адрес сети (совпадают три первые числа), могут общаться между собой. Машины в разных сетях не видят друг друга. Чтобы они смогли взаимодействовать, необходимо специальное устройство (маршрутизатор), которое объединяет разнородные сети и может передавать пакеты между ними.
3.6.2. Информация о сетевых подключениях
Для получения информации о текущей настройке сетевых карт и протокола TCP/IP необходимо выполнить команду ifconfig. Пример ответа можно увидеть в листинге 3.4.
Листинг 3.4. Информация о конфигурации и состоянии сети
eth0 Link encap:Ethernet HWaddr 00:03:FF:06:A4:6C
inet addr:192.168.77.1 Bcast:192.168.77.255
Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:108 errors:0 dropped:0 overruns:0 frame:0
TX packets:104 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:7687 (7.5 Kb) TX bytes:14932 (14.5 Kb)
Interrupt:11 Base address:0x2000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:122 errors:0 dropped:0 overruns:0 frame:0
TX packets:122 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:9268 (9.0 Kb) TX bytes:9268 (9.0 Kb)
Как видите, в листинге 3.4 показано два интерфейса: eth0 и lo. Первый из них - это реальная сетевая карта, имя которой в общем виде имеет вид ethX, где X - число, означающее номер устройства связи в системе. Нумерация начинается с нуля. Если у вас в компьютере две сетевые карты, то их имена будут eth0 и eth1.
Второй интерфейс всегда имеет имя lo (loopback), IP-адрес 127.0.0.1 и маску 255.0.0.0. Этот интерфейс существует в любой системе с сетевой картой и имеет именно этот IP. В принципе, этот адрес ни на что не указывает и не входит ни в какую сеть. Его используют для тестирования и отладки сетевых приложений. Данный интерфейс часто называют петлей, потому что он замыкает на себя. Все пакеты, которые отправляются на этот адрес, посылаются вашему компьютеру.
Помимо сведений о конфигурации сетевых интерфейсов, команда выдает еще много полезной информации, например, количество отправленных и полученных пакетов (параметры RX и TX).
Есть еще один интересный адрес, который можно увидеть у сетевой карты eth0, - параметр Hwaddr (Hardware Address, аппаратный адрес). Его еще часто называют MAC-адресом (Media Access Control, управление доступом к среде). Это 48-разрядный серийный номер сетевого адаптера, присваиваемый производителем. Он уникален, потому что у каждого изготовителя свой диапазон адресов. Так как интерфейс lo создан программно (реально не существует), у него не может быть аппаратного адреса.
3.6.3. Изменение параметров сетевого подключения
С помощью ifconfig можно не только просматривать параметры сетевых подключений, но и изменять их. Для этого нужно указать два параметра:
□ сетевой интерфейс, параметры которого нужно изменить;
□ параметры.
Общий вид команды выглядит так:
ifconfig ethX параметры
Рассмотрим значения, которые вы можете использовать:
□ down - остановить интерфейс. Например, для завершения работы сетевой карты eth0 выполните команду: ifconfig eth0 down. Если после этого исполнить директиву ifconfig без параметров, то в результирующем списке сетевого интерфейса eth0 не будет видно;
□ up - включить интерфейс, если он был остановлен. Например, если вы хотите восстановить работу сетевой карты eth0, выполните команду: ifconfig eth0 up;
□ IP-адрес - если вы хотите изменить IP-адрес, то укажите его повое значение в качестве параметра. Например, если нужно поменять текущий адрес на 192.168.77.3, то выполните команду ifconfig eth0 192.168.77.3. Одной командой можно изменить и маску сети. Для этого выполняем директиву ifconfig eth0 192.168.77.3 netmask 255.255.0.0. Здесь, после ключевого слова netmask, показана новая маска сети.
Если в момент изменения адреса сетевой интерфейс отключен, то его можно сразу же запустить командой ifconfig eth0 192.168.77.3 netmask 255.255.0.0 up.
Это основные возможности директивы ifconfig, с которыми вам придется сталкиваться в реальной жизни. Более подробную информацию можно получить, если выполнить команду man ifconfig.
3.6.4. Базовые настройки сети
С помощью команды hostname можно просмотреть имя компьютера (хоста). Выполните эту команду и перед вами появиться имя, которое вы задали во время установки. Чтобы изменить его, нужно указать новое имя в качестве параметра. Например, следующая команда устанавливает хост "server":
hostname server
Основные настройки сети находятся в файле /etc/sysconfig/network. Давайте посмотрим на его содержимое:
cat /etc/sysconfig/network
В результате на экране появится примерно следующая информация:
NETWORKING=yes
FORWARD_IPv4=true
HOSTNAME=FlenovM
Нет смысла изменять какие-либо из этих параметров вручную, когда есть специализированные утилиты. Этот файл я показал вам только для примера.
3.7. Подключение к сети Интернет
К первоначальным настройкам системы я отношу и подключение к Интернету. Если лет 10 назад это было диковинкой и дорогим удовольствием, то сейчас Интернет стал неотъемлемой частью любого компьютера. Трудно себе представить жизнь без общения и обмена информацией.
Всемирная сеть является громадным хранилищем всевозможных данных. Здесь вы сможете найти различное программное обеспечение или документацию. Впоследствии я дам ссылки в Интернете на программы, которые смогут облегчить жизнь, и их необходимо будет скачать (см. приложение 2). Без доступа в сеть это невозможно.
Я не стану описывать все возможные настройки соединений, потому что конкретные нюансы вы сможете узнать у вашего провайдера. Нас будет интересовать соединение через простой модем.
Если вы установили графическую оболочку, то в ней соединение с Интернетом создать легко. Да и работать с Web-страницами в графическом режиме (в браузерах типа Mozilla) намного проще, удобнее и приятнее. Именно для этого вы обязательно должны настроить графическую оболочку, но пользоваться ею необходимо в крайнем случае и только на рабочей станции, но не на действующем сервере.
На данный момент самой простой и удобной программой для создания интернет-соединения является Kppp. Для ее запуска вызовите главное меню Linux и выберите пункт Интернет/Kppp. Должно открыться окно, как показано на рис. 3.5.
Рис. 3.5. Главное окно программы Kppp
Для начала щелкните кнопку Настройка для указания параметров нового соединения. На это действие перед нами открывается диалоговое окно с вариантами настройки: использование мастера или ручной режим. В мастере есть список крупных провайдеров разных стран, и достаточно только выбрать нужную стоку и указать пару дополнительных значений. Если ваш провайдер услуг Интернета отсутствует, то придется делать настройку самостоятельно.
В ручном режиме появляется окно, в котором чаще всего достаточно указать только номер телефона для дозвонки. Остальные параметры в большинстве случаев используют значения по умолчанию.
Настроив соединение, достаточно только ввести имя пользователя и пароль, которые вам дал поставщик услуг, и нажать кнопку Подключиться. Если все указано верно, то через несколько секунд (минут) вы окажетесь во всемирной сети.