ать команду at для отсрочки печати на ночь, когда в офисе никого нет. Чтобы сделать это, во-первых, создайте с помощью редактора vi файл, содержащий команду печати. Назовите этот файл printfile. Этот файл должен содержать следующую строку: lp filename Аргумент filename - иям того большого файла, который вы хо- тите напечатать. Создав printfile, введите следующую команду: at 11pm wed < printfile Нет необходимости делать эту команду фоновой. Вы введете ее и нажмите RETURN. Снова появится приглашение UNIX. Ваша команда начнет выполняться в 11 вечера в среду. Заметим, что команда at будет работать после вашего выхода из системы. Можно просмотреть список тех процессов, чье выполне- ние отложено с помощью команды at. Для этого используйте команду at -l. Она выдаст следующую информацию: . ID-номер файла. . Команда, требующая файл (at или batch). . Дата и время начала выполнения файла. Для отмены действия команды at вам необходимо просмотреть список отложенных файлов и запомнить ID-номер нужного файла. Ис- пользуйте команду at -r для удаления файла из этого списка фай- лов. Команда at -r имеет следующий синтаксис: at -r ID-номер Например, следующая команда удалит файл с номером 504510300.а, удаляя все команды, включенные в этот файл: at -r 504510300.a Заметим, что пользователь может так распоряжаться только своими файлами. . 5-15 Файлы /usr/lib/cron/at.allow и /usr/lib/cron/at.deny конт- ролируют допуск пользователей, имеющих право пользования окман- дой at. Во многих системах это разрешается только привилегиро- ванному пользователю. Если вам необходимо использование команды at, но вы не имеете к ней доступа, обратитесь к системному адми- нистратору. 5.5.3 Какие процессы сейчас выполняются? Команда ps устанавливает "статус процесса" и выводит инфор- мацию о тех процессах, выполняющихся в данное время. Эта инфор- мация необходима в том случае, если вы хотите прервать фоновый процесс. Чтобы вывести на экран информацию о текущих процессах, вве- дите: ps Вы увидите сообщение, подобное следующему: __________________________________________________________ | | PID TTY TIME COMMAND | 49 2a 0:28 sh | 11267 2a 0:00 ps | В колонке PID содержатся уникальные идентифицирующие номера процессов, которые могут быть использованы в случае прерывания процесса. Колонка TTY содержит названия терминалов, на которых идет процесс. В колонке TIME показано совокупное время выполне- ния процесса. И последняя колонка, COMMAND, содержит текущую вы- полняющуюся команду. Введите следующую команду для отображения информации обо всех текущих процессах системы: ps -e Вы можете также узнать информацию о процессах, идущих на других терминалах. Для этого вам нужно использовать опцию -t и специфицировать имя терминала. Например, с помощью следующей ко- манды вы узнаете о процессах, ассоциированных с терминалом 2с: ps -t2c . 5-16 5.5.4 Прерывание процессов. Для прерывания приоритетного процесса нажмите клавишу INTERRUPT. Ее часто замещает клавиша Del. Таким образом вы може- те прервать текущий приоритетный процесс. Для прерывания всех фоновых процессов вам нужно использовать следующую команду: kill 0 Для прерывания только специфицированного фонового процесса введите: kill signal_number process_ID_number signal_number - опция. Иногда она необходима для прерывания "упрямых" процессов. Такие процессы иногда могут быть прерваны с помощью signal_number 9. Узнайте process_ID_number с помощью ко- манды ps. В качестве примера попробуйте прервать процесс вашей работы в shell. Заметим, что при входе в систему вы попадаете в shell. Прекращая shell-процесс, вы выходите из системы. Введите ps для того, чтобы узнать, какой ID-номер у одного из процессов, поме- ченных sh или csh в колонке COMMAND. Предположим, что это номер 4831. Для прерывания вашего shell-процесса введите: kill -9 4831 После ввода этой команды вы снова увидите приглашение к ре- гистрации. Попробуйте сделать это! _______________________________________________________________ Замечание. Прерывание процесса, ассоциированного с редактором vi, мо- жет привести к непредсказуемому поведению терминала. Так, вре- менные файлы, которые обычно создаются одновременно с началом выполнения команды и удаляются после ее завершения, могут исчез- нуть в неизвестном направлении после применения команды kill. Обычно временные файлы хранятся в каталоге /tmp. Советуем вам периодически проверять содержимое этого каталога и своевременно удалять старые файлы. ________________________________________________________________ . 5-17 5.6 Программирование на языке Shell. И Bourne shell, и C shell обладают существенными отличи- тельными особенностями. Если вы имеете опыт работы с MS-DOS, вы найдете, что в программировании в UNIX есть сходные вещи. Мы все же опишем некоторые приемы программирования на языке shell. Подробнее об этом вы сможете прочесть в главах "The Shell" и "The C-Shell" в UNIX User's Guide. В 5.5.1 при обсуждении выполнения команд в фоновом режиме мы привели следующую команду для ввода: cat /etc/tempcar /etc/tempcar /etc/tempcar > lagefile; \ wc -c lagefile > characters & Но ведь можно поместить эту длинную команду в файл и затем выполнить файл. Попробуйте создать с помощью редактора vi файл, называемый command.file. Пусть в этом файле будут следующие строки: cat /etc/tempcap > largefile cat /etc/tempcap >> largefile cat /etc/tempcap >> largefile wc -c largefile > characters После помещения этих четырех строк в файл command.file, на- печатайте :x для сохранения его и выхода из vi. Теперь вам нужно ввести следующую команду для того, чтобы этот файл выполнимым: chvod +x command.file Наконец, запустите файл command.file на выполнение в фоно- вом режиме: command.file & Немного обождав, с помощью следующей команды убедитесь в правильном выполнении файла command.file: cat characters . 5-18 На самом дел, некоторые особенности shell-программирования позволят вам управлять ходом текущих процессов. Вы могли бы за- писать содержание файла command.file так: for name in /etc/tempcap do cat $name $name $name > largefile done wc -c largefile > characters Помещая команды UNIX в файл, не забывайте сделать его вы- полнимым с помощью команды chmod. (Об этой команде читайте в Части 4 данного руководства.) . Ч А С Т Ь 6  Утилиты непосредственного взаимодействия UNIX ___________________________________________________________ 6.1 Введение 6-1 6.2 Использование системных часов и календаря 6-1 6.2.1 Как узнать дату и время 6-1 6.2.2 Календарь на экране 6-2 6.3 Почтовые услуги 6-2 6.3.1 Посылка почтовых сообщений 6-2 6.3.2 Прием почты 6-4 6.3.3 Вывод на терминал 6-6 6.4 Автоматические напоминания системы 6-7 6.5 Использование системного калькулятора 6-8 . 6-1 Система UNIX содержит немало программ, помогающих вам в работе в среде UNIX и позволяющих вам обмениваться сообщениями с другими пользователями. В этой части вы сможете прочесть о та- ких утилитах, и узнаете, как . Вывести на экран дату, время и календарь, . Связаться с другими пользователями, . Использовать автоматическте системные напоминания, . Использовать "калькулятор на экране". Эта часть построена как самоучитель. Лучший способ изучения данной части - читать ее непосредственно за дисплеем, выполняя все приведенные в тексте примеры. Команды описываются без подробностей. Для выяснения тонкос- тей обращайтесь к UNIX User' Reference. 6.2 Использование системных часов и каландаря. UNIX содержит команды, печатающие дату и время, а также календарь на любой месяц или год. Далее вы и прочтете об этом. 6.2.1 Как узнать дату и время. Команда date печатает дату и время. Введите: date То, что будет напечатано на экране, будет иметь примерно следующий вид: __________________________________________________________ | | Mon Jan 25 08:26:14 PST 1988 . | 6-2 6.2.2 Календарь на экране. Команда cal выводит на экран календарь того месяца или го- да, который вы укажете. Например, выведете на экран календарь на март 1952 года: cal mar 1952 Вот что вы должны увидеть: __________________________________________________________ | | March 1952 | | S M Tu W Th F S | 1 | 2 3 4 5 6 7 8 | 9 10 11 12 13 14 15 | 16 17 18 19 20 21 22 | 23 24 25 26 27 28 29 | 30 31 | Большинство аббревиатур названий месяцев очевидны. Также месяц можно обозначить в этой команде цифрами. Календарь на весь год будет напечатан, если вы не будете указывать аргумент "ме- сяц" в этой команде. Год всегда нужно указывать полностью. Ко- манда cal 88 напечатает календарь на 88 год от Рождества Христо- ва, а не на 1988. 6.3 Почтовые услуги. Несколько программ предоставляют вам возможность связываться с другими пользователями. Две наиболее полезных из них - это mail и write. Команда mail позволяет отправлять сооб- щения в "почтовый ящик" пользователей системы. Команда write по- сылает сообщение непосредственно на терминал пользователя, если он зарегистрировался в системе. Обе эти команды описаны ниже. 6.3.1 Посылка почтовых сообщений. Одной из особенностей системного расширения является программа mail, позволяющая вам обмениваться сообщениями с дру- гими пользователями. Попробуйте эту программу в работе, посылая сообщение себе. Для этого введите: mail login Замените здесь login на ваше регистрационное имя. . 6-3 В зависимости от того, как ваш системный администратор построил конфигурацию подсистемы почты, может появиться следующая подсказка: Subject: Если такая аодсказка появилась, введите краткую суть этого сообщения. В данном случае введите test. Теперь вы можете вводить сам текст сообщения. Закончив, нажмите Ctrl-d для сигнала о завершении сообщения и для его отп- равки. Однако, это можно сделать и по-другому. Можно ввести ~v (тильда, предшествующая v), и при этом попасть в редактор vi. Находясь в этом редакторе, можно спокойно ввести текст сообще- ния, не опасаясь опечаток. Воспользуйтесь всеми возможностями данного редактора, а допущенные ошибки исправьте до посылки со- общения. Если вы пользуетесь только командой mail, то ошибки ис- править нелегко, а они могут исказить весь смысл сообщения. Составляя текст сообщения в редакторе vi, введите по окон- чании этого процесса :x, а затем Ctrl-d. Опять-таки, в зависимости от конфигурации, система может в этом месте выдать следующее: Cc: Увидев это, введите имена тех пользователей, которые должны получить "копию под копирку" текста этого сообщения. Часто по умолчанию здесь подставляется значение yourself, т.е. имя самого отправителя. Так как в данном случае вы посылаете сообщение сами себе, сразу нажмите RETURN. Вы снова попадете в среду UNIX. Часто посылаются текстовые файлы другим пользователям сис- темы. Для этого можно использовать переадресацию. Пусть файл, который вы хотите послать, называется schedule, он находится в текущем каталоге, а имена пользователей, которым вы хотите его отправить, - Naomi и Bea. Чтобы сделать это, введите следующую команду: mail naomi bea < schedule Этим путем можно посылать файлы достаточно быстро. У команды mail существует много опций. Среди них есть те , что позволяют отправлять уже готовые сообщения, посылать ответы, посылать сообщения, подписываясь псевдонимом, и т.д. Обо всем этом можно прочесть в UNIX User's Guide. . 6-4 6.3.2 Прием почты. Входя в систему, вы можете увидеть следующее сообщение: ___________________________________________________________ | | you have mail | Это значит, что в ваше отсутствие на ваше имя пришла "поч- та". Чтобы прочесть ее, введите: mail Будет высвечен список заголовков сообщений под номерами. Вы увидите примерно такую картину: __________________________________________________________ | | 1 john Wed Sep 21 09:21 26/782 "Notice" | 2 sam Tue Sep 20 22:55 6/83 "Meeting" | 3 tom Mon Sep 19 01:23 6/84 "Invite" | Читая слева направо, вы узнаете из данного сообщения, кто послал его, дату и время отправления, число строк и символов в нем, а также суть сообщения. Чтобы прочесть это сообщение, просто введите его номер и нажмите RETURN. Например, чтобы прочесть сообщение от sam, вве- дите 2 и нажмите RETURN. Прчтите сообщение, которое вы послали себе сами (см. предыдущую строницу данного руководства). После того, как вы прочтете пришедшее к вам сообщение, с ним можно сделать следующее: удалить его, сохранить его и/или ответить на него. Для удаления сообщения нажмите d, номер сообщения и RETURN. Чтобы сохранить сообщение в "почтовом ящике", введите ho, номер сообщения и нажмите RETURN. Для сохранения сообщения в файле те- кущего каталога, введите s, затем номер сообщения и имя файла, нажмите RETURN. Если файл с таким именем не существует, он будет создан. . 6-5 Ответить на почтовые сообщения позволяют две команды. Это команды r и R. Нажав r, затем номер сообщения, RETUTN, потом введя ваш ответ, вы отпроавите его автору сообщения. Если же вы повторите все эти действия с командой R, то ваш ответ получит не только автор сообщения, но и все пользователи, находящиеся в списке авторов сообщений к вам. После прочтения сообщений, вы можете снова просмотреть спи- сок заголовков сообщений. Для этого введите h и RETURN. Если список заголовков занимает более чем одну страницу экрана, вве- дите h+ и RETURN. По этой команде высветятся следующие 18 строк этого списка. Для выдачи предыдущих 18 строк введите h-. Вы можете послать почту с помощью команды mail. Для отправ- ления постового сообщения пользователю по имени joe, просто вве- дите следующую команду: mail joe Следующие ваши шаги в этом случае описаны в 6.3.1 (Посылка почтовых сообщений.) Чтобы выйти из режима почты, введите q и RETURN. Ответьте на сообщение, посланное вами самому себе. Для это- го: 1. Введите mail. 2. Введите rnumber, где number - номер сообщения, которое вы послали себе. 3. Нажмите RETURN. 4. Составьте ваш ответ. Помните, что вы можете набрать ~v для подготовки текста ответа с помощью редактора vi. 5. По окончанию составления ответа нажмите Ctrl-d. Если вы подготовили текст с помощью редактора vi, наберите :x для выхода из редактора и нажмите Ctrl-d. 6. Нажмите RETURN для посылки сообщения. 7. Напечатайте restart. Эта команда заставит mail напеча- тать все сообщения, пришедшие к вам в то время, что вы работали с этой командой. 8. Вы увидите тот ответ, который вы сами себе послали на ваше же себе сообщение. Нажмите номер сообщения для его вывода на экран для чтения. . 6-6 9. Закончив прсмотр сообщения, введите q для выхода из mail. 6.3.3 Вывод на терминал. UNIX включает команду, позволяющую посылать сообщения не- посредственно на экран другого пользователя, если только он в данный момент зарегистрирован в системе. Это команда write. Нап- ример, пошлите сообщение на терминал joe: write joe После того, как вы выполните эту команду нажатием RETURN, у себя на экране joe увидит следующее: ___________________________________________________________ | | Message from login tty012... | Здесь login - ваше регистрационное имя. Для отзыва joe дол- жен ввести: write login login - опять-таки ваше регистрационное имя. Далее каждая введенная вами строка будет отображена и на ва- шем экране, и на экране joe. Каждая строка, введенная joe, также будет видна на двух ваших экранах. Для завершения ввода сообще- ния для joe нажмите Ctrl-d в конце строки. То же самое может сделать joe для завершения переговоров с вами. Типичным действием для координации обмена сообщениями таким образом служит помечивание каждой введенной строки для распозна- вания, последняя она или нет. Так, если строка не последняя, вводите в ее конце o (over), а в конце всего сообщения - oo (over and out). Потренируйтесь с командой write, посылая сообщение себе. Для этого введите следующую команду: write login . 6-7 Замените login на ваше регистрационное имя. Вы увидите та- кое сообщение: Message from login ttynn... Теперь просто введите текст сообщения. Так как вы пишете сами себе, каждая введенная строка будет повторена не экране дважды. Например, это может выглядеть следующим образом: __________________________________________________________ | | Hello Mark o | Hello Mark o | Remember, we have meeting at 12:00. o | Remember, we have meeting at 12:00. o | Right, see you there. oo | Right, see you there. oo | Нажмите Ctrl-d для завершения работы по обмену сообщениями. 6.4 Автоматические напоминания системы. Для всех пользователей UNIX предоставляет возможность ав- томатического сервиса в виде подсказок и напоминаний. Так, каж- дый при регистрации UNIX просматривает файл типа "календарь", находящийся в начальном каталоге данного пользователя, содержа- ние которого может быть примерно такое: __________________________________________________________ | | 1/23 David's wedding | 2/9 Mira's birthday | 3/30 Paul's birthday | 4/27 Meeting at 2:00 | 9/1 Karen's birthday | 10/3 License renewal | Каждая строка такого файла просматривается. Строки, содер- жащие сегодняшнюю и завтрашнюю даты, выбираются и посылаются вам как почтовае сообщения. Для их просмотра нужно действовать так- же, как и при просмотре других постовых сообщений. . 6-8 Файл calendar не создается для вас автоматически. Это вы должны сделать для себя сами, если имеете такое желание. Он дол- жен находиться в вашем начальном каталоге. Для создания и исправления файла calendar пользуйтесь ре- дактором vi. Помещайте сообщение о дате/событии на отдельной (одной) строке. Даты могут быть указаны по разному. Вот, напри- мер, различные записи одного и того же: 9/7 Sep.7 september 7 6.5 Использование системного калькулятора. С помощью команды bc можно включить системный калькулятор, использование которого напоминает использование обычного ручного калькулятора. Ниже приводятся команды, с помощью которых вы мо- жете, находясь в UNIX, выполнять свои расчеты. Заметим, что ра- бота в режиме калькулятора начинается с ввода команды bc, и за- канчивается вводом команды quit. Комментарии по содержанию операций приводятся на тех же сторках, что и сами команды. . 6-9 Ъ_Операция Комментарий bc Вход в bc 123.456789+987.654321 Сложение и результат 1111.111110 9.0000000-9.0000001 Вычитание и результат -.0000001 64/8 Деление и результат 8 1.12345678934*2.3 Запись с сохранением точности 2.58395061549 19%4 Нахождение остатка 3 3^4 Возведение в степень 81 2/1*2 Вычислить по правилам 4 2/(1*2) Вычислить по правилам 1 x=46.5 Присвоить значение переменной x y=52.5 Присвоить значение переменной x x+y+1.0000 Сложение и результат 100.0000 obase=16 Перевод в шестнадцатиричную систему счисления 15 Перевести в шестнадцатиричную F систему счисления 16 Перевести в шестнадцатиричную 10 систему счисления 64 Перевести в шестнадцатиричную 40 систему счисления 255 Перевести в шестнадцатиричную FF систему счисления 256 Перевести в шестнадцатиричную 100 систему счисления 512 Перевести в шестнадцатиричную 200 систему счисления quit Кроме этого, возможно производить масштабирование, опреде- ление функций, и программирование других действий с помощью язы- ка C. Другие возможности - именование регистров и вызов подпрог- рамм. Для более подробного ознакомления читайте "bc:ACalculator" в UNIX User's Guide.