Основные команды системы UNIX
Новосибирский
государственный технический
Контрольная работа
по дисциплине
“ Сетевые информационные технологии ”
Тема: “Основные команды системы UNIX”
Группа: ЗАМ - 934
Семестр: 10
Студент: Балева Н.А.
Преподаватель: Бычков М.И.
Дата проверки работы:
Новосибирск 2014
Оглавление
1. История Unix систем. (Введение) |
3 |
2. Начало работы с командами, процессами |
4 |
2.1 Работа с командами |
4 |
2.2 Работа с процессами |
6 |
3. Важнейшие пользовательские |
9 |
3.1 Важнейшие команды (файлы, каталоги, контроль места на жестком диске) |
9 |
3.2 Файлы: резервное копирование, архивация, компрессия |
14 |
3.3 R-команды |
17 |
4. Основные службы |
19 |
4.1 TELNET |
19 |
4.2 FTP |
21 |
5. “Джентльменский набор” |
23 |
6. Литература |
25 |
- История Unix систем.(Введение)
Операционная система UNIX ведет свое происхождение от разработанной Ф. Корбато из Массачусетского технологического института (MIT) в начале 60-х годов системы CTSS (Comprehensive Time-Sharing System – Система с комплексным распределением времени). Оценив преимущества многопользовательской многозадачной системы, компании General Electric, AT&T, Bell Labs и MIT начали проект, названный Multiplexed Information and Computing Service (Мультиплексированный информационный и вычислительный сервис, MULTICS) для создания подобной системы, способной работать на системах GE635. В феврале 1969 года проект сильно запаздывал по сравнению с графиком, поэтому компания AT&T решила отказаться от участия в проекте, а коллектив сотрудников, вовлеченных в проект, начал работу над другим проектом.
В начале лета 1969 года Руд Кенедей, Дуг МакИлрой, Денис Ричи и Кен Томпсон подробно обсудили, что можно сделать для спасения некоторых идей, связанных с проектом, и начали собственное исследование. В августе того же года, обнаружив в шкафу неиспользованный компьютер DEC PDP-7, Томсон пишет операционную систему, оболочку, редактор и ассемблер, потратив неделю на каждую из составляющих. После обработки набросков замысла в офисе Кенедея, Томпсон воплотил его в PDP-7. Питер Нейман назвал новую систему Uniplexed Information and Computing Service (UNICS). Неизвестно, кто изменил написание названия системы на UNIX, а затем и на более привычное Unix.
Летом 1970 года Д. Ричи , К. Томпсон и Ли МакМахона приобретают PDP-11/20, обещая создать “систему обработки текстов”. Томпсон пишет строчный редактор (названный ed). Ричи пишет roff. Отдел патентов Bell Labs был удовлетворен. Через несколько месяцев он вступил во владение PDP-11/20 и купил модель 11/45 для вычислительных исследований.
Между 1970 и 1972 годами систему улучшали, в неё добавили много новых функций. Но использование системы Unix было ограничено узлами компании AT&T в Нью-Джерси до тех пор, пока Нейл Граундвотер, только что прибывший из Пенсильвании, не установил систему Unix в компании New York Telephone в Манхеттене, использовав при этом систему PDP-11/20, 56Кбайт оперативной памяти и два жестких диска RK11/05 объемом 2,4 Мбайт. В течение следующего года все больше и больше членов вычислительного сообщества узнавали об операционной системе Unix, и многие запрашивали эту систему. Но компания AT&T оказалась в затруднительном положении. Она не могла заниматься бизнесом, не связанным с телефонной или с телеграфной индустрией, поэтому компания решила отдать систему Unix за номинальную стоимость университетским исследовательским центрам на следующих условиях:
- Без рекламы
- Без поддержки
- Оплата авансом
После того как Unix оказалась в руках университетских исследовательских центров, сообщество пользователей ОС Unix образовало единое целое и стало расти.
На данный момент существует два основных типа системы Unix. Один тип происходит от версий 4.2, 4,3 или 4,4BSD, другой тип основан на системах SVR3 или SVR4. Хотя и существует различие между основными типами Unix, практически все пользовательские команды идентичны во всех версиях (AIX, BSD, HP/UX, Linux, Solaris, SunOS и т.д).
- Начало работы с командами, процессами
Названия команд будет проще запомнить, если принять во внимание, что представляют собой сокращение английских слов. Например, если требуется изменить что-то уже существующее, команда, выполняющая подобное действие, начинается с ch (change). Когда что-то нужно сделать впервые, используется команда, которая начинается с mk (make), а когда необходимо что-то полностью отменить или удалить, следует команда, которая начинается с rm (remove).
При работе с Unix системами в первую очередь нужно научиться получать помощь, когда не совсем понятно как использовать ту или иную команду. Для этого есть несколько возможностей. Можно, например, ввести после имени команды опцию -?, -h или –help. Большинство команд в системах Unix в ответ на это выводят краткую подсказку о синтаксисе команды и используемых ею опциях.
Мощным средством для извлечения информации о потенциальных возможностях системы служит команда man. Она принимает в качестве аргумента названия команды, о которой мы хотим получить информацию. Так, если нужна информация о команде ls, в командной строке набираем man ls.
В выводе man будет дан синтаксис команды и подробное описание ее работы. Если в описании синтаксиса аргумент заключен в квадратные скобки, то он не обязателен. Если два синтаксических элемента разделены вертикальной чертой (|), то допустим только один из них. Когда описание команды занимает более одного экрана, перемещаться по тексту можно, нажимая клавишу пробела, Чтобы вернуться в командную строку, нажимается клавиша Q.
- Работа с командами
Процесс входа пользователя в систему называется login. После появления маски входа пользователя в систему с сообщением login: нужно ввести пользователя и нажать клавишу Enter. На вопрос о пароле нужно ответить введением пароля. Если введенные данные верны то стартует Shell и на экране появляется символ $ - приглашение к вводу данных. Таким образом открывается пользовательская сессия.
Ввод команды должен быть закончен нажатием клавиши Enter. Синтаксис команды:
name[ -options…][arguments…]
- name – имя команды и одновременно имя файла, в котором находится программа, выполняющая эту команду;
- options – описание необходимых атрибутов; характеризует диапазон возможностей при работе команды;
- arguments – остальные данные (например: переменные, данные файла ввода и вывода, которые при вызове должны быть переданы команде);
- [] – все что стоит внутри прямоугольных скобок, может не использоваться;
- … - данные стоящие перед точками, могут быть введены несколько раз.
Команда script позволяет протоколировать все данные введенные или выведенные пользователем во время сессии.
script[ -a][ file] – протоколировать сессию пользователя
-а – вывод команды присоединить к концу файла;
-file – имя файла протокола.
Команда who выводит информацию о пользователе;
Пример:
$ who
diamin |
tty2 |
feb |
05 |
12:15 |
|
Имя пользователя |
Имя терминала |
Дата и время Входа в систему | ||
who[ options][ am i] – вывести имена, терминалы и время входа пользователей в систему
-i – вывести длительность текущей сессии;
-m – вывести собственное имя с email-адресом;
-g – вывести только имена и общее число пользователей;
-s – сделать вывод в стандартном формате;
-w – маркировать идентификаторы всех пользователей, которые могут получать сообщения знаком + и знаком -, в том случае, если прием сообщений отключен;
-Н – вывести заголовок с
обозначением отдельных
-am i – вывести идентификатор пользователя.
Команда hostname позволяет либо отобразить текущее имя хоста или домена, либо установить имя хоста системы.
hostname – вывести на печать имя локального компьютера
Команда domainname выводит на печать имя домена.
Каждый домен имеет компьютер администрирования сетью, на этом компьютере находятся данные для администрирования компьютеров домена;
domain[ domain_name] – вывести на печать, изменить, установить имя домена
без аргумента – вывести на печать имя актуального домена;
domain_name – имя домена, которое дает администратор сети при подключении локального компьютера к сети.
Команда rhost служит для перечисления компьютеров локального домена:
rhost – перечислить компьютеры сети
Пример:
$ rhost
89.16.23.5 |
diamin |
wed may 3 09:20 2006 |
|
адрес компьютера |
имя компьютера |
Дата, время последнего rwho-приема пакета с данными пользователя |
Команда finger является информационной. Она используется для вывода имен пользователей, работающих в данный момент, а также их некоторые данные:
finger[ -mlpsR][ user][@hostname] – перечислить пользователей, вывести информацию о пользователях
-m – использовать аргументы, относящиеся только к именам пользователей;
-l – вывести подробные данные;
-р – подавить выдачу файла .plan;
-s – вывести краткие данные;
-R – вывести имена компьютеров;
user, @hostname – без этих данных будут перечислены пользователи работающие на собственном компьютере.
Unix-системы содержат память, в которой находятся имена введенных команд –history. Используя клавиши ВВЕРХ, ВНИЗ можно поместить в командную строку ранее введенные команды
history – вывести содержимое памяти командной строки
Другие возможности команды history:
- !m – повторение последнего начинающегося с m ввода команды;
- !! – повторение последней команды (!-1 – повторение предпоследней, !-n – повторение n-последней)
Время от времени каждый пользователь должен менять свой пароль:
Passwd[ username] – изменить пароль
username – идентификатор пользователя
пример:
$ passwd
old passwd (нужно ввести старый пароль)
new passwd (нужно ввести новый пароль, при этом он не появляется на экране)
retype new passwd (нужно ввести новый пароль еще раз)
$
- Работа с процессами
Команда ps дает список процессов, выполняемых в данный момент.
Пример:
$ ps –a
PID |
TTY |
STAT |
TIME |
COMMAND |
22488 |
pa |
I |
0:00 |
telnet gsusgi2.gsu.edu |
21858 |
pa |
S |
0:00 |
-bash |
Параметры означают:
PID – номер процесса;
TTY – контролирующий терминал;
STAT – состояние процесса;
Первая буква:
R – процесс выполняется;
Т – процесс остановлен;
D – процесс ожидает во время ввода/вывода;
S – процесс «спит» <20c;
I – процесс «спит» >20c;
Вторая буква:
W – процесс перемещен;
Пробел – процесс в памяти;
TIME – общее время выполнения процесса;
COMMAND – имя команды в командной строке.
Для получения дальнейших параметров введите команду ps –al:
Пример:
$ ps –al
F |
UID |
PID |
PPID |
CP |
PRI |
NI |
ADDR |
SZ |
RSS |
WCHAN |
S |
11008001 |
2569 |
22464 |
21858 |
68 |
42 |
0 |
2afa |
584 |
484 |
R |
Здесь параметры означают:
F – флаг процесса, некоторые из них:
000000 – процесс рожден;
000001 – процесс в памяти;
000002 – системный процесс для перемещения;
000010 – процесс трассируется;
000020 – другой флаг трассировки;
008000 – процесс будет перемещен;
UID – пользовательский номер владельца процесса;
PPID – номер процесса предка;
СР – время процесса;
PRI – приоритет, большие значения соответствуют низкому приоритету;
ADDR – адрес памяти (куда перемещен процесс);
WCHAN – номер события, которого ждет процесс. Если колонка пуста, это означает, что процесс выполняется;
NI – значение, характеризующее приоритет;
SZ – виртуальная величина процесса (Кбайт).
Команда nice устанавливает, что некоторая команда будет выполняться с определенным приоритетом.
nice[ -number] command[arg…] – изменить приоритет команды
-number – имеет значение от 1 до 19, при этом большим числам соответствуют низкие значения приоритета. 0 – это стартовый приоритет каждого процесса, если он первый раз ждет процессорное время;
arg – аргумент команды command.
Команда kill по умолчанию передает процессу сигнал о его прекращении:
kill[ -signal][ processnumber]
signal – число 1,2,…9,…
-1 – вывести все возможные имена сигналов.
Приведем пример, сначала запустим некоторую команду, потом посмотрим какие процессы выполняются а потом прекратим выполнение этой команды:
$ vi (vi – это редактор)
.
.
.
$ ps
PID |
TTY |
STAT |
TIME |
COMMAND |
11745 |
p5 |
S |
0:01 |
-bash |
11822 |
p5 |
T |
0:00 |
Vi |
11823 |
p5 |
R |
0:00 |
Ps |
$ kill –9 11822
[1]+killed
$ ps
PID |
TTY |
STAT |
TIME |
COMMAND |
11745 |
p5 |
S |
0:01 |
-bash |
11824 |
p5 |
R |
0:00 |
Ps |
С помощью команды sleep можно временно приостановить процесс:
sleep time – процессы временно приостановить
пример:
$ sleep 20 (терминал блокируется на 20 секунд)
Пользователи могут осуществлять коммуникацию:
write user_name[ terminal] – послать сообщение на экран пользователя
пример:
Послать сообщение пользователю ККК, работающему на той же самой системе:
$ write KKK
Какая прекрасная погода!
EOF (end of file: комбинация клавиш CTRL+D)
На экране пользователя ККК появляется:
Message from Diamin tty10
Какая прекрасная погода!
- Важнейшие пользовательские команды
- Важнейшие команды (файлы, каталоги, контроль места на жестком диске)
Команды для работы с каталогами. Каталог в котором находится пользователь в данный момент времени, называется текущим; используя команду pwd можно вывести имя этого каталога.
pwd – вывести путь к текущему коталогу
В текущий каталог можно попасть, используя команду cd:
cd[ directory] – перейти в другой каталог
directory – имя каталога, в который пользователь хочет перейти;
без аргумента – переход в домашний каталог;
/ - переход в корневой каталог;
… - переход на один уровень вверх.
Содержимое каталога можно вывести, используя команду:
ls[ -Rfabdgilrstu][file…] – вывести информацию о файлах
-file – имя объекта, о котором хотят получить информацию;
-R (rekursiv) – вывести список всего дерева файлов;
-F – добавить символ к имени файла;
* - исполняемые файлы;
/ - каталоги;
@ - маркировка symbolic link;
| - маркировка Named-Pipe;
= - маркировка Socket;
-a – вывести файлы каталога, которые начинаются точкой (например, .profile);
-b – вывести непечатаемые символы в восьмеричном представлении;
-с – сортировать файлы в соответствии с временем последнего изменения статуса;
-d – вывести только запись о каталоге, но не его содержание;
-g – вывести групповую принадлежность файла, а не идентификатор владельца;
-i – вывести I-Node-номер для каждого файла;
-l – вывести данные в длинном формате;
-r – сортировать в обратном порядке;
-s – вывести размер файла (кар число блоков);
-t – сортировать в соответствии с датой последнего изменения;
-u – применить дату последнего доступа вместо даты последнего изменения в качестве критерия сортировки.
Команда mkdir позволяет создать новый каталог
mkdir directory –создать коталог
directory – имя каталога;
Команда rmdir уничтожает каталог
rmdir [ -r] directory – уничтожить пустой каталог
-r – уничтожить каталоги рекурсивно
directory – имя каталога
Файлы в уничтожаемом каталоге должны быть предварительно уничтожены командой rm(смотрите далее), а подкаталоги командой rmdir. Последние должны быть также пусты. Не пустые каталоги должны быть уничтожены командой rm –r:
Пример: уничтожить каталоги dir1 и dir2
$ rmdir dir1 dir2
rmdir: dir1 not empty
Каталог dir1 не был уничтожен, так как содержал файлы. Его можно, однако, уничтожить вместе со всеми находящимися там файлами командой
$ rm –r dir1
Команды для работы с файлами. Для вывода на экран содержимого текстового файла используется cat-команда; она выполняет также и другие функции:
cat[ -u][ -s][ -v][ -t][ -e][file…] – присоединить файлы друг к другу и вывести на экран
-u – при чтении со стандартного ввода проводится вывод без промежуточного запоминания;
-s – подавить сообщение о файлах, не имеющихся в наличии;
-v – вывести непечатаемые символы, кроме знаков TAB и NEWLINE;
-t – будет выведен знак TAB (не применять вместе с –v);
-e – вывести символ $ (применять вместе с –v);
file – имя выводимого файла.
Если пользователь вводит символ -/пробел, то cat читает со стандартного ввода. Используя >file/>>file можно перенаправить вывод в файл, при этом при использовании символа > , содержимое старого файла будет переписано, а при применении символа >>, вывод будет присоединен к старому файлу.
Файл file можно вывести следующим образом:
$ cat file (пишет содержимое файла на стандартный вывод).
Файл fil1 можно присоединить к файлу fil2 и результат записать в файл fil3 следующим образом:
$ cat fil1 file2 > fil3
Команда mv позволяет переименовывать файлы и перемещать файлы в пределах дерева файлов:
mv[ -f] file1[file2…] newfile – файл переименовать/переместить
-f – подавить вопрос, хочет ли пользователь использовать команду;
file[file2] – имя, которое должно быть переименовано или имя файла, который должен быть перемещен;
newfile – если file является файлом, то он будет переименован; если newfile является каталогом то все переименованные файлы будут перемещены в этот каталог.
Пример:
Переименуем text3 в text5 и переместим в каталог /usr/kurs/vvvv
$ mv text3 /usr/kurs/vvvv/text5
Команда ср предназначена для копирования файлов:
cp[ r] file copy – файл копировать
cp[ file…] directory – файл копировать
copy – имя копии. Копия имеет права доступа оригинала и пользовательский и групповой номер пользователя, который вводил команду;
r (recursive) – копировать, включая содержимое подкаталогов;
file – оригинал;
directory – каталог в который будет внесена копия. Оригинал и копия имеют одно и тоже имя.
Пример:
Скопируем text2 под именем text4, оба файла должны находится в каталоге my:
$ cd my
$ cp text2 text4
теперь скопируем все файлы текущего каталога, начинающиеся с “text”, в каталог /usr/kurs/vvvv
$ cp text* /usr/kurs/vvvv
Для уничтожения одного или нескольких файлов используется команда rm
rm[ options] file… - уничтожить файл
file – имя уничтожаемого файла или каталога;
-r – уничтожить рекурсивно (содержимое каталога и каталог сам);
-i – ставится соответствующий вопрос пользователю.
Команда rm уничтожает в каталоге одну или несколько записей о файлах. Однако на самом запоминающем устройстве данные остаются не уничтоженными вплоть до новой записи на то же место физического диска.
Записи о файлах можно уничтожить только в том случае, если имеется право записи для каталога, в котором файл находится. Для самого файла не требуется ни права чтения ни права записи.
Команда tee читает со стандартного ввода, пишет на стандартный вывод и копию в файл
tee[ -i][ -a][ file…] – вывести результат выполнения команды на экран и записать в файл
-i – игнорировать сигналы прерывания;
-а – не переписывать файл данными команды teе, а присоединить к концу файла;
file –имя файла копии.
Если файл уже существует то он будет переписан, в противном случае он будет создан. Схема работы команды показана на рисунке
Пример:
Запишем все имена текущего каталога в файл filetee и просмотрим их на экране:
$ ls –l | tee filetee
Следующая команда echo она позволяет:
- писать сообщения в Shell-процедурах;
- опрашивать значения переменных;
- писать тексты в файлы;
- дополнять константами результаты выполнения команд