Колонка Weekend Mechanic

  Автор: © Thomas Adam
Перевод: © Александр Михайлов.


 

Содержание


Так что такое Weekend Mechanic?

Добро пожаловать в новый раздел этого месяца ....The Weekend Mechanic. На самом деле, те из вас, кто является постоянными читателями LG с её первого выпуска, поймут что эта колонка была написана John M Fisk в 1996-1998 годах, и на самом деле не так уж и нова. В тоже время, я думаю, что будет неплохо представить её еще раз, как постоянный раздел.

"The Weekend Mechanic" обрисует весь мой опыт с Линукс и проблемы, которые мне приходилось решать как дома, так и в школе каждый месяц. Итак, The Weekend Mechanic, сконцентрируется на следующем:

  • Новости о Линукс
  • Программирование на shell.
  • Персонализация(настройка) shell.
  • Sed, Awk, советы.
  • Обзоры программ.
  • И все что угодно еще ....

Итак, давайте начнем этот месяц с урока по ремонту и починке :)


Персонализация shell окружения

Я заметил, что все больше и больше людей, при использовании Линукс пытаются полностью положиться на ГИП (Графический Интерфейс Пользователя), надеясь, что им не придется вводить каких либо команд, в страхе уничтожить их работу, сделать непоправимую ошибку, и т.д. Хотя такое может случиться лишь в том случае, если вы вошли в систему как "root", я обнаружил, что люди все равно беспокоятся !! Хотя в любом случае придет время, когда придется вводить команды, и важно, чтобы ваш shell был настроен, так чтобы вы могли легко справиться с необходимой задачей. Эта статья покажет вам как настроить login shell, так чтобы возможности вроде псевдонимов(alias), редакторов и командных интерпретаторов работали так, как вы этого хотите.

Для начала, вам нужно убедиться, что у вас установлен соответвующий редактор. Существует множество редакторов работающий в консольном режиме, так что у вас есть выбор: emacs, joe, jed, pico, vi. Найдя редактор, который придется вам по вкусу (я использую Pico и Jed) вы можете указать его shell. Некоторые программы, такие как Cron (как мы увидим далее), полагаются на то, что для shell настроен редактор, так чтобы вы могли редактировать crontab.

Есть два файла, которым мы должны уделить особое внимание. Они расположены в вашей домашней директории: .bashrc и .bash_profile. Мой файл .bashrc начинается со следующего

# User specific aliases and functions (Псевдонимы и функции пользователя)

alias ls='ls -o --color=auto'
alias cad='cat /var/squidGuard/db/blacklist/adverts'
alias cc='cd /mnt/cdrom/Mandrake/RPMS'
alias mail='mail -v'
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias d='ls'
alias s='cd ..'
alias p='cd -'

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

 cd /var/spool/users/home/mail/root/sun
, то вы можете избежать её набора, указав "псевдоним", слово, которое будет автоматически делать это. Круто, да? :).

Итак, чтобы указать shell, что вы хотите использовать слово "checkmail" чтобы выполнять команду

cd /var/spool/users/home/mail/root/sun
вы должны добавить в список:

alias checkmail='cd /var/spool/users/home/mail/root/sun'
Затем вы можете ввести псевдоним checkmail и ... это работает !!

Конечно многие люди создают псевдонимы, чтобы приспособить среду к их ошибкам набора, т.е.

alias eamcs='emacs'
alias emcas='emacs'
Лично я думаю что это плохая идея, и вам стоит научиться печатать более аккуратно!

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

PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin
ENV=$HOME/.bashrc
USERNAME="root"
export USERNAME ENV PATH

Это та секция, в которой мы должны сконцентрироваться на установке переменных. Обычно неустановленные переменные - это "EDITOR" и "MAIL". Эти переменные специфичны для каждого пользователя. Переменная

EDITOR
указывает редактор, который будет использоваться при редактировании файлов. Эта переменная обычно вызывается из программ вроде Pine и Cron, но она может быть очень полезна при написании shell скриптов.

Чтобы установить переменную вы должны добавить её в список "export", например так:

export USERNAME ENV PATH EDITOR

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

Добавив переменную в список export, сохраните файл и выйдите из вашего редактора. Итак, теперь, когда мы определили новую переменную, нужно сказать Bash о ней. Чтобы сделать это, вы должны выполнить файл при помощи команды source. Это встроенная команда bash, которая считывает файл и выполняет его. Вы можете сделать это одним из 2х способов. Ввести

source имя_файла
или же указать ".":
. имя_файл

Это активирует вновь добавленную переменную. Ну воть и все, что я хотел рассказать вы этой секции .....


Установка и использование Crontab

Вы никогда не обнаруживали себя выполняющим похожие задания в течении дня, и не хотели, чтобы существовала программа, позволяющая автоматизировать это? Отлично, вы можете больше не искать, Mr. Cron уже здесь :-)

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

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

ps ax | grep crond

Если вы получите ответ похожий на:

root       311  0.0  0.7  1284  112 ?        S    Dec24   0:00 crond
root       8606  4.0  2.6  1148  388 tty2     S    12:47   0:00 grep crond

Cron запущен, и вы готовы использовать его. Если вы не получили сообщение о "crond", тогда вы должны запустить демона, введя

crond

Cron особенно полезен, когда вам нужно запускать программы резервного сохранения и ухода за системой. Чтобы сказать cron, когда запускать программу, вы должны заполнить несколько полей. Каждая отдельная программа которая отмечена в расписании cron, помещается в файл crontab. Поля определены следующим образом:

Min	Hour	DOM	Month	DOW	User	Cmd

Описание их значений, просуммированно в следующей таблице:
ПОЛЕ ОПИСАНИЕ
Min Указывает число минут в течении или после часа. Значения от 0 до 59.
Hour Указывает час (Военный стиль) в который должен запускаться скрипт. Значения от 0 до 23 где "0" это полночь
DOM Это день месяца, в который вы хотите исполнять команду, т.е. чтобы запускать команду 23 числа каждого месяца, DOM должен быть равен 23м
Month Указывает месяц, в который необходимо запускать скрипт. Значения лежат в пределах от 1 до 12, где "1" это Январь и "12" Декабрь. Или же можно указать первые три буквы месяца, т.е. Май
DOW Указывает день недели, или как цифровое значение от 0 до 7 (0 и 7 означают Воскресенье) или как и название месяца, используя первые три буквы, т.е. Mon
User Указывает, кто исполняет программу
Cmd Путь и имя исполняемого(ой) скрипта/программы

Вы можете использовать "*" (без кавычек) в любом поле обозначающем время, обозначая таким образом "каждую минуту", "каждый час", и т.д.

Итак, держа в уме приведенные выше описания, вот несколько правильных примеров:

01 * * * * root /usr/bin/script 	"Эта команда запускается в по прошествии 1й минуты каждого часа"
17 8 * * * root /bin/mail 		"Эта команда запускается каждый день в 8:17 утра"
17 20 * * * root /usr/bin/fetch 	"Эта команда запускается каждый день в 8:17 вечера"
00 4 * * 0 root /bin/qweb	 	"Эта команда запускается в 4 утра каждое Воскресенье"
* 4 * * Sun root /usr/bin/file2rpm 	"Эта команда запускается в 4 утра каждое Воскресенье"
42 4 1 * * root /usr/bin/squidlog 	"Эта команда запускается в 4:42 утра, каждое первое число"
01 * 19 07 * root /usr/bin/xman 	"Эта команда запускается каждый час 19го июля"

Видите как это просто? :-). Cron также принимает более изощренные методы указания времени: запустите "man 5 crontab", если хотите узнать о них.

Конечно, это все хорошо, но я не сказал вам куда помещать эти указания. Так что .... держись крепче читатель.

Наиболее часто устанавливаемая на Линукс-системы версия cron - это "vixie-cron", и поэтому в директории "/etc/" должен быть файл "crontab". Если вы указали переменную окружения EDITOR (см. предыдущую секцию), то вы просто можете ввести:

crontab -e

Это загрузит файл в ваш текстовый редактор.

Если вы не открыли его, используя приведенную выше команду, тогда откройте его, используя выбранный вами текстовый редактор, и вы должны найти что-то вроде этого

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root@grangedairy.linux
HOME=/

# run-parts
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

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

PATH указывает путь к большинству используемых программ

Опция MAILTO кому будет отослан вывод cron о результатах выполнения (т.е. было исполнено или нет и вывод программы). Если вас это раздражает, то вы можете удалить эту переменную.

Секция после "#runparts" предназначена для того чтобы все скрипты, например в директории "/etc/cron.daily", исполнялись каждый день. Хотя, по какой-то странной причине, это не когда не срабатывало у меня, и я решил что легче указывать мой собственный список cron.

Итак, чтобы добавить приведенные выше примеры в ваш crontab, вам нужно всего лишь скопировать и вставить их:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root@grangedairy.linux
HOME=/

# run-parts
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

#Custom Crontabs -- Put in by Thomas Adam
01 * * * * root /usr/bin/script 	
17 8 * * * root /bin/mail
17 20 * * * root /usr/bin/fetch 	
00 4 * * 0 root /bin/qweb	 	
* 4 * * Sun root /usr/bin/file2rpm 	
42 4 1 * * root /usr/bin/squidlog 	
01 * 19 07 * root /usr/bin/xman 	

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

crontab -u root /etc/crontab

Вот и все...просто сидите и ждите..... Вы должны обнаружить, что теперь объем выполняемой вами работы уменьшился на 25% или около того!!!

Cron также имеет способность разрешать и запрещать конкретным пользователем свое использование. Чтобы добиться этого, нужно создать два файла с именами cron.allow и cron.deny в директории "/etc".

Эти файлы работают так. Если вы например хотите, чтобы никто не имел доступа к cron, то вы должны добавить строчку "ALL" в файл cron.deny. Если вы хотите, чтобы только определенные люди использовали cron, то вы должны добавить их имена в cron.allow.

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

cat username >>/etc/cron.allow

Ну вот и все....Идите и пробуйте......!?!


Заключение

Ну вот народ, это все в этом месяце. Я надеялся сделать больше, но к сожалению школьная работа опять ворвалась в мои планы!! Я действительно оценю любые ответные сообщения, комментарии, советы по поводу статей. Вооруженный этой информацией, я смогу "сделать Линукс немного более удобным" :-).

А теперь я пойду изучать пианино, делать проверку Географии (да) и потом, возможно, продолжу работать над одним из моих "bash скрипт проектов". После этого, возможно мне удасться даже немного поспать, кто знает ???

Тем временем, я желаю всем ...... "счастливой Линуксации"


Посылайте мне комментарии....

Любые комментарии, предложения, идеи, и т.д. можно послать мне, нажав на ссылку на e-mail, расположенную ниже:

Thomas Adam

 


Copyright © 2001, Thomas Adam.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 66 of Linux Gazette, May 2001

Вернуться на главную страницу