Тема 5 МОС 2 основные понятия ФС Unix Linux.ppt
- Количество слайдов: 23
Материал к курсу «Многопользовательские операционные системы» .
Основные понятия файловой системы UNIX (часть 2 – команды)
Права доступа Выводятся, например, командой ls с опцией -l. В результате ее выполнения для каждого файла выводится отдельная строка. drwxrw---- 2 root 68 Ноя 5 15: 35 Desktop В ней девять символов, которые занимают позиции со второй по десятую, показывают установленные права доступа к файлу. К примеру, если для какого то файла его владельцу разрешены все три действия, то символы со второго по четвертый будут такими rwx. Первый из символов показывает допустимость операции читать (read), второй – писать (write) и третий – исполнять (execute). В этом примере для директории Desktop пользователю () установлены все права, членам группы () – только читать и писать, а остальным пользователям – все действия с директорией закрыты. В графическом режиме права доступа к файлу можно посмотреть в его «Свойствах» .
Права доступа Для смены прав доступа к файлу используйте команду chmod. Ей указывается: 1. Для каких пользователей меняются права (u – user, для владельца; g – groupe, для членов его группы, o – other, всем остальным пользователям, кроме его самого и членов группы; a – all, всем пользователям вообще). 2. Операцию, которую надо выполнить (+ добавить; - запретить или = установить). К примеру, такая команда chmod o=x Desktop изменит права доступа к Desktop так drwxrw---х 2 root 68 Ноя 5 15: 35 Desktop
Права доступа можно записать в цифровом виде используя три восьмеричных числа. Для файла с таким правами drwxrw---- 2 root 68 Ноя 5 15: 35 Desktop это соответствует такой комбинации - 760 d rwx rw- --111 110 000 7 6 0
Права доступа к вновь создаваемому файлу определяется строкой umask в скрипте ? ? ? . Если в задается , то это число отнимается от 777 (или 666) и вновь созданный файл получит такие права. Пример. Если в umask указано 022, то 777 – 022 = 755 вновь созданный файл получит такие права rwxr-xr-x или 666 – 022 = 644 rw-r-xr-x
Об исполнении файлов Задавая имя файла можно исполнить только такие, которые расположены в одном из каталогов, перечисленных в переменной окружения PATH. Для остальных файлов необходимо указать полный путь к нему или относительный. Приведем пример последней ситуации. Пусть исполнимый файл script 1 расположен в каталоге /home/asplinux. Тогда находясь в этом каталоге его можно выполнить такой командой . /script 1 Команда указывающая полный путь к файлу /home/asplinux/script 1 позволяет выполнить его из любого каталога. Обе последние команды требуют права на исполнение файла для пользователя, открывшего сеанс. Если у исполняемого файла таких прав нет, его можно выполнить, указав перед его именем точку, а далее пробел. . script 1
Создание текстового файла Есть несколько способов. 1. Использовать текстовый редактор (например, стандартный vi). Завершение работы - , (предварительно надо записать файл
Команды просмотра текстового файла • Постраничный просмотр (less, more) more <имя файла> • Вывод части файла (head, tail) head -n 5 <имя файла> - выводятся первые 5 строк файла • Использование команды cat <имя файла>
Команда grep – поиск в содержимом файла. Имя grep образовано от search Globally for lines matching the Regular Expression, and Print them (Википедия) Этой команде задаются в качестве параметров подстроку для поиска и имена файлов. Например, если в файле Text 1 1 One 1 One First. One и будет выполнена такая команда grep One результат ее будет вывод всех строк. Поиск осуществляется в наборе символов расположенном на втором месте. Остальные слова в строке – имена файлов. Для поиска нескольких слов используйте кавычки.
Примеры grep Например, такая команда grep root /etc/passwd проверяет, есть ли в файле /etc/passwd (файл паролей) строка root. А такая ps -ef | grep “[“ выводит имена процессов, начинающихся на “[“. Такая команда grep First Text 1 Text 2 Text 3 проверяет вхождение слова First в трех файлах. Еще примеры команд grep “First One Two” Text 3 grep “First 1 One” * grep “First 1 One” T*
Еще примеры команды grep '^a' 'words. txt' - вывести строки, начинающиеся на а cat /etc/passwd | grep "^[abed]. * - вывести пользователей, начинающихся на 4 буквы (a, b, c, d) Среди множества опций команды отметим -r. Она требует просматривать каталоги рекурсивно. Например, такая строка grep -r umask /etc ищет файлы со словом umask в каталоге /etc и всех подчиненных ему. Хорошую подборку примеров использования команды смотреть по адресу: http: //apicom. org. ua/blog/2009/01/28/komanda-grep-odna-iz-samyhizvestnyh-i-upotrebitelnyh-komand/
Команда diff – сравнение файлов. Этой команде задаются в качестве параметров имена файлов, в ответе выдается протокол несовпадения строк файлов. Если есть файл такого содержания. 1 2 ASP 3 4 А второй – такого 1 2 Red Hat 3 Solaris 4 ASP То такая команда diff file 1 fill 2 Дает вывод трех строк в каждом файле – несовпадающие строки.
Еще примеры команды diff. Такая последовательность ls –l /root > file 1 ls –l /home/asplinux fill 2 diff file 1 file 2 сравнивает два каталога.
Команда find – поиск файлов. Этой команде задаются разнообразные параметры. Прежде всего – область поиска (каталог и всех, подчиненные ему ) и самые разнообразные свойства файлов – имя файла (часто – маска поиска), тип, права доступа, время создания и другие. Примеры find. Эта команда find / -name pwd ищет в файловой системе такие, которые имеют имя pwd, а эта find /root –name “. bash*” в каталоге /root файлы, начинающиеся на. bash. Еще примеры find. Искать файлы заданного типа можно используя опцию -type. Вот пример поиска директорий в каталоге /etc find /etc –type d Опция –perm фиксирует при поиске файла заданные права доступа.
Такая команда find /dev -perm 777 найдет файлы, которым для всех пользователей разрешены все операции (читать, писать и выполнять). Соединяя команду find знаком | с командой wc получим количество найденных файлов. Если ввести find /bin –name “*” -type f | wc –l то узнаем количество обыкновенных файлов в каталоге /bin find. -type f -mtime -4 -print вывести файлы из текущего каталога и его подкаталогов, измененных за последних 4 дня (-print распечатывает «маршрутное имя файла). find /usr/local/man /opt/local/man -name 'my*' Так задаем поиск в двух каталогах, а вот так find. ( -name "my*" -o -name "qu*" ) -print выполнение одного из двух условий.
Такой пример показывает как заказать действия на найденными файлами find / ( -name "*. bu" -o -name "*%" ) -type f -atime +30 -exec rm {} ; такая команда удаляет файлы имеющие в имени. bu или % созданные за последние 30 дней. Напомним, что сочетание означает условие ИЛИ, а фигурные скобки после означает удаление найденных файлов.
Команда sort – поиск файлов. Эта команда выводит отсортированный файл. Ей задаются в качестве параметров прямой, обратный или цифровой способ сортировки, имя выходного файла и многие другие. ls –al /dev | sort –k 1 Среди опций задаваемых рассматриваемой команде можно указать номер поля. В последней команде сортировка осуществляется по первому полю ключей. В данном случае – это 10 символов: тип файла (1 символ) и права доступа (9 символов). Можно результат команды записать в файл. ls –al /dev > ls_file Для построенного файла приведем несколько примеров. ls –al | sort –r –k 2 ls –al | sort –r -n –k 2
Такая команда выводит отсортированные по ls_file sort +4 -rn Среди опций задаваемых последней команде –r определяет вывод от маленьких размером до больших, а – r цифровую сортировку, а не текстовую. Команду сортировки соединяют с другим, что дает интересный результат. Такая команда выводит файлы с пятью наименьшими количеством связей. ls_file sort –rn –k 5| head –n 5
Команды работы с каталогами. К таким командам отнесем: mkdir, rmdir и рассмотренную ранее cd. Первая создает каталоги, а вторая – удаляет. Приведем примеры. mkdir 1 mkdir /home/asplinux/work В первой задается имя каталога, который создается в текущем каталоге файловой системы. Во второй указан абсолютный путь к новому каталогу и результат будет одинаковым, не зависящим от текущего каталога. Если надо создать подкаталог несуществующего каталога используем опцию -p. mkdir /home/fordir/dir 1 Такая команда сначала создаст несуществующий каталог верхнего уровня (dir 2), а затем уже (dir 3) в разных каталогах. Одной командой можно создать несколько каталогов mkdir /home/fordir 1
Удаление копирование и перемещение каталогов и файлов Удалять каталоги в общем виде можно только пустые (где нет файлов, кроме двух специальных – файла самого каталога «. » и ссылка на каталог верхнего уровня. Но есть другая команда - rm. Она обеспечивает удаление непустых каталогов, а ее опция (r) – рекурсивное удаление. Копировать файлы (и каталоги) можно командой ср. Перемещать файлы (и каталоги) можно командой mv. Еще интересные команды cut -d/ -f 9 sprogram 1 > sprogram 2 (Вырезаем из файла 9 -е поле, с символом "/") uniq
Команды работы с файлами ссылочного типа. Есть два типа ссылочных файлов: жесткие и символические ссылки. Оба создаются командой. Первая без параметров ln /home/file_link hlink Символическую связь создадим используя эту же команду с опцией –s. ln –s /home/file_link slink До выполнения этих команд в каталоге должен быть файл с именем должен существовать. Если этот файл является текстовым и его размер – 50 байт, такая команда ls –l приведет к таким результатам. -rwxr-xr- 2 root 50 Ноя 10 17: 51 hlink srwxr-xr- 2 root 17 Ноя 10 17: 51 slink
Команда file для этих двух файлов выдаст file hlink ответ ASCII text а file slink результат symbolic link Возможности создания двух типов файлов не одинаковы. Жесткие ссылки нельзя создавать для каталогов, а символические можно. Жесткие ссылки все равноправны, а символические – нет. Удалив файл, на который создана символическая ссылка, мы потерям доступ ко всем файлам, на которые такая ссылка создана.


