Обновлено: 01.02.2022
Опубликовано: 25.07.2016
Утилита find представляет универсальный и функциональный способ для поиска в Linux. Данная статья является шпаргалкой с описанием и примерами ее использования.
Синтаксис
Примеры
Поиск по имени
По дате
По типу файла
По правам
По содержимому
С сортировкой по дате изменения
Лимиты
Действия над найденными объектами
Запуск по расписанию в CRON
Общий синтаксис
find <где искать> <опции>
<где искать> — путь к корневому каталогу, откуда начинать поиск. Например, find /home/user — искать в соответствующем каталоге. Для текущего каталога нужно использовать точку «.».
<опции> — набор правил, по которым выполнять поиск.
* по умолчанию, поиск рекурсивный. Для поиска в конкретном каталоге можно использовать опцию maxdepth.
Описание опций
Опция | Описание |
---|---|
-name | Поиск по имени. |
-iname | Регистронезависимый поиск по имени. |
-type |
Тип объекта поиска. Возможные варианты:
|
-size | Размер объекта. Задается в блоках по 512 байт или просто в байтах (с символом «c»). |
-mtime | Время изменения файла. Указывается в днях. |
-mmin | Время изменения в минутах. |
-atime | Время последнего обращения к объекту в днях. |
-amin | Время последнего обращения в минутах. |
-ctime | Последнее изменение владельца или прав на объект в днях. |
-cmin | Последнее изменение владельца или прав в минутах. |
-user | Поиск по владельцу. |
-group | По группе. |
-perm | С определенными правами доступа. |
-depth | Поиск должен начаться не с корня, а с самого глубоко вложенного каталога. |
-maxdepth | Максимальная глубина поиска по каталогам. -maxdepth 0 — поиск только в текущем каталоге. По умолчанию, поиск рекурсивный. |
-prune | Исключение перечисленных каталогов. |
-mount | Не переходить в другие файловые системы. |
-regex | По имени с регулярным выражением. |
-regextype <тип> | Тип регулярного выражения. |
-L или -follow | Показывает содержимое символьных ссылок (симлинк). |
-empty | Искать пустые каталоги. |
-delete | Удалить найденное. |
-ls | Вывод как ls -dgils |
Показать найденное. | |
-print0 | Путь к найденным объектам. |
-exec <команда> {} ; | Выполнить команду над найденным. |
-ok | Выдать запрос перед выполнением -exec. |
Также доступны логические операторы:
Оператор | Описание |
---|---|
-a | Логическое И. Объединяем несколько критериев поиска. |
-o | Логическое ИЛИ. Позволяем команде find выполнить поиск на основе одного из критериев поиска. |
-not или ! | Логическое НЕ. Инвертирует критерий поиска. |
Полный набор актуальных опций можно получить командой man find.
Примеры использования find
Поиск файла по имени
1. Простой поиск по имени:
find / -name “file.txt”
* в данном примере будет выполнен поиск файла с именем file.txt по всей файловой системе, начинающейся с корня /.
2. Поиск файла по части имени:
find / -name “*.tmp”
* данной командой будет выполнен поиск всех папок или файлов в корневой директории /, заканчивающихся на .tmp
3. Несколько условий.
а) Логическое И. Например, файлы, которые начинаются на sess_ и заканчиваются на cd:
find . -name “sess_*” -a -name “*cd”
б) Логическое ИЛИ. Например, файлы, которые начинаются на sess_ или заканчиваются на cd:
find . -name “sess_*” -o -name “*cd”
в) Более компактный вид имеют регулярные выражения, например:
find . -regex ‘.*/(sess_.*cd)’
find . -regex ‘.*/(sess_.*|.*cd)’
* где в первом поиске применяется выражение, аналогичное примеру а), а во втором — б).
4. Найти все файлы, кроме .log:
find . ! -name “*.log”
* в данном примере мы воспользовались логическим оператором !.
Поиск по дате
1. Поиск файлов, которые менялись определенное количество дней назад:
find . -type f -mtime +60
* данная команда найдет файлы, которые менялись более 60 дней назад.
Или в промужутке:
find . -mmin -20 -mmin +10 -type f
* найти все файлы, которые менялись более 10 минут, но не более 20-и.
2. Поиск файлов с помощью newer. Данная опция доступна с версии 4.3.3 (посмотреть можно командой find –version).
а) дате изменения:
find . -type f -newermt “2019-11-02 00:00”
* покажет все файлы, которые менялись, начиная с 02.11.2019 00:00.
find . -type f -newermt 2019-10-31 ! -newermt 2019-11-02
* найдет все файлы, которые менялись в промежутке между 31.10.2019 и 01.11.2019 (включительно).
б) дате обращения:
find . -type f -newerat 2019-10-08
* все файлы, к которым обращались с 08.10.2019.
find . -type f -newerat 2019-10-01 ! -newerat 2019-11-01
* все файлы, к которым обращались в октябре.
в) дате создания:
find . -type f -newerct 2019-09-07
* все файлы, созданные с 07 сентября 2019 года.
find . -type f -newerct 2019-09-07 ! -newerct “2019-09-09 07:50:00”
* файлы, созданные с 07.09.2019 00:00:00 по 09.09.2019 07:50
По типу
Искать в текущей директории и всех ее подпапках только файлы:
find . -type f
* f — искать только файлы.
Поиск по правам доступа
1. Ищем все справами на чтение и запись:
find / -perm 0666
2. Находим файлы, доступ к которым имеет только владелец:
find / -perm 0600
Поиск файла по содержимому
find / -type f -exec grep -i -H “content” {} ;
* в данном примере выполнен рекурсивный поиск всех файлов в директории / и выведен список тех, в которых содержится строка content.
С сортировкой по дате модификации
find /data -type f -printf ‘%TY-%Tm-%Td %TT %pn’ | sort -r
* команда найдет все файлы в каталоге /data, добавит к имени дату модификации и отсортирует данные по имени. В итоге получаем, что файлы будут идти в порядке их изменения.
Лимит на количество выводимых результатов
Самый распространенный пример — вывести один файл, который последний раз был модифицирован. Берем пример с сортировкой и добавляем следующее:
find /data -type f -printf ‘%TY-%Tm-%Td %TT %pn’ | sort -r | head -n 1
Поиск с действием (exec)
1. Найти только файлы, которые начинаются на sess_ и удалить их:
find . -name “sess_*” -type f -print -exec rm {} ;
* -print использовать не обязательно, но он покажет все, что будет удаляться, поэтому данную опцию удобно использовать, когда команда выполняется вручную.
2. Переименовать найденные файлы:
find . -name “sess_*” -type f -exec mv {} new_name ;
или:
find . -name “sess_*” -type f | xargs -I ‘{}’ mv {} new_name
3. Переместить найденные файлы:
find . -name “sess_*” -type f -exec mv {} /new/path/ ;
* в данном примере мы переместим все найденные файлы в каталог /new/path/.
4. Вывести на экран количество найденных файлов и папок, которые заканчиваются на .tmp:
find . -name “*.tmp” | wc -l
5. Изменить права:
find /home/user/* -type d -exec chmod 2700 {} ;
* в данном примере мы ищем все каталоги (type d) в директории /home/user и ставим для них права 2700.
6. Передать найденные файлы конвееру (pipe):
find /etc -name ‘*.conf’ -follow -type f -exec cat {} ; | grep ‘test’
* в данном примере мы использовали find для поиска строки test в файлах, которые находятся в каталоге /etc, и название которых заканчивается на .conf. Для этого мы передали список найденных файлов команде grep, которая уже и выполнила поиск по содержимому данных файлов.
7. Произвести замену в файлах с помощью команды sed:
find /opt/project -type f -exec sed -i -e “s/test/production/g” {} ;
* находим все файлы в каталоге /opt/project и меняем их содержимое с test на production.
Чистка по расписанию
Команду find удобно использовать для автоматического удаления устаревших файлов.
Открываем на редактирование задания cron:
crontab -e
И добавляем:
0 0 * * * /bin/find /tmp -mtime +14 -exec rm {} ;
* в данном примере мы удаляем все файлы и папки из каталога /tmp, которые старше 14 дней. Задание запускается каждый день в 00:00.
* полный путь к исполняемому файлу find смотрим командой which find — в разных UNIX системах он может располагаться в разных местах.
Очень важно уметь вовремя найти нужную информацию в системе. Конечно, все современные файловые менеджеры предлагают отличные функции поиска, но им не сравнится с поиском в терминале Linux. Он намного эффективнее и гибче обычного поиска, вы можете искать файлы не только по имени, но и по дате добавления, содержимому, а также использовать для поиска регулярные выражения.
Кроме того, с найденными файлами можно сразу же выполнять необходимые действия. В этой статье мы поговорим о поиске с помощью очень мощной команды find Linux, подробно разберем её синтаксис, опции и рассмотрим несколько примеров.
Команда find – это одна из наиболее важных и часто используемых утилит системы Linux. Это команда для поиска файлов и каталогов на основе специальных условий. Ее можно использовать в различных обстоятельствах, например, для поиска файлов по разрешениям, владельцам, группам, типу, размеру и другим подобным критериям.
Утилита find предустановлена по умолчанию во всех Linux дистрибутивах, поэтому вам не нужно будет устанавливать никаких дополнительных пакетов. Это очень важная находка для тех, кто хочет использовать командную строку наиболее эффективно.
Команда find имеет такой синтаксис:
find [папка] [параметры] критерий шаблон [действие]
Папка – каталог в котором будем искать
Параметры – дополнительные параметры, например, глубина поиска, и т д
Критерий – по какому критерию будем искать: имя, дата создания, права, владелец и т д.
Шаблон – непосредственно значение по которому будем отбирать файлы.
Основные параметры команды find
Я не буду перечислять здесь все параметры, рассмотрим только самые полезные.
- -P – никогда не открывать символические ссылки.
- -L – получает информацию о файлах по символическим ссылкам. Важно для дальнейшей обработки, чтобы обрабатывалась не ссылка, а сам файл.
- -maxdepth – максимальная глубина поиска по подкаталогам, для поиска только в текущем каталоге установите 1.
- -depth – искать сначала в текущем каталоге, а потом в подкаталогах.
- -mount искать файлы только в этой файловой системе.
- -version – показать версию утилиты find.
- -print – выводить полные имена файлов.
- -type f – искать только файлы.
- -type d – поиск папки в Linux.
Критерии
Критериев у команды find в Linux очень много, и мы опять же рассмотрим только основные.
- -name – поиск файлов по имени.
- -perm – поиск файлов в Linux по режиму доступа.
- -user – поиск файлов по владельцу.
- -group – поиск по группе.
- -mtime – поиск по времени модификации файла.
- -atime – поиск файлов по дате последнего чтения.
- -nogroup – поиск файлов, не принадлежащих ни одной группе.
- -nouser – поиск файлов без владельцев.
- -newer – найти файлы новее чем указанный.
- -size – поиск файлов в Linux по их размеру.
Примеры использования
А теперь давайте рассмотрим примеры find, чтобы вы лучше поняли, как использовать эту утилиту.
1. Поиск всех файлов
Показать все файлы в текущей директории:
find
find .
find . -print
Все три команды покажут одинаковый результат. Точка здесь означает текущую папку. В место неё можно указать любую другую.
2. Поиск файлов в определенной папке
Показать все файлы в указанной директории:
find ./Изображения
Искать файлы по имени в текущей папке:
find . -name "*.png
Поиск по имени в текущей папке:
find . -name "testfile*"
Не учитывать регистр при поиске по имени:
find . -iname "TeStFile*"
3. Ограничение глубины поиска
Поиска файлов по имени в Linux только в этой папке:
find . -maxdepth 1 -name "*.php"
4. Инвертирование шаблона
Найти файлы, которые не соответствуют шаблону:
find . -not -name "test*"
5. Несколько критериев
Поиск командой find в Linux по нескольким критериям, с оператором исключения:
find . -name "test" -not -name "*.php"
Найдет все файлы, начинающиеся на test, но без расширения php. А теперь рассмотрим оператор ИЛИ:
find -name "*.html" -o -name "*.php"
Эта команда найдёт как php, так и html файлы.
6. Тип файла
По умолчанию find ищет как каталоги, так и файлы. Если вам необходимо найти только каталоги используйте критерий type с параметром d. Например:
find . -type d -name "Загрузки"
Для поиска только файлов необходимо использовать параметр f:
find . -type f -name "Загрузки"
6. Несколько каталогов
Искать в двух каталогах одновременно:
find ./test ./test2 -type f -name "*.c"
7. Поиск скрытых файлов
Найти скрытые файлы только в текущей папке. Имена скрытых файлов в Linux начинаются с точки:
find . -maxdepth 1 -type f -name ".*"
8. Поиск по разрешениям
Найти файлы с определенной маской прав, например, 0664:
find . -type f -perm 0664
Права также можно задавать буквами для u (user) g (group) и o (other). Например, для того чтобы найти все файлы с установленным флагом Suid в каталоге /usr выполните:
sudo find /usr -type f -perm /u=s
Поиск файлов доступных владельцу только для чтения только в каталоге /etc:
find /etc -maxdepth 1 -perm /u=r
Найти только исполняемые файлы:
find /bin -maxdepth 2 -perm /a=x
9. Поиск файлов в группах и пользователях
Найти все файлы, принадлежащие пользователю:
find . -user sergiy
Поиск файлов в Linux принадлежащих группе:
find /var/www -group www-data
10. Поиск по дате модификации
Поиск файлов по дате в Linux осуществляется с помощью параметра mtime. Найти все файлы модифицированные 50 дней назад:
find / -mtime 50
Поиск файлов в Linux открытых N дней назад:
find / -atime 50
Найти все файлы, модифицированные между 50 и 100 дней назад:
find / -mtime +50 -mtime -100
Найти файлы измененные в течении часа:
find . -cmin 60
11. Поиск файлов по размеру
Найти все файлы размером 50 мегабайт:
find / -size 50M
От пятидесяти до ста мегабайт:
find / -size +50M -size -100M
Найти самые маленькие файлы:
find . -type f -exec ls -s {} ; | sort -n -r | head -5
Самые большие:
find . -type f -exec ls -s {} ; | sort -n | head -5
12. Поиск пустых файлов и папок
find /tmp -type f -empty
find ~/ -type d -empty
13. Действия с найденными файлами
Для выполнения произвольных команд для найденных файлов используется опция -exec. Например, для того чтобы найти все пустые папки и файлы, а затем выполнить ls для получения подробной информации о каждом файле используйте:
find . -empty -exec ls -ld {} ;
Удалить все текстовые файлы в tmp
find /tmp -type f -name "*.txt" -exec rm -f {} ;
Удалить все файлы больше 100 мегабайт:
find /home/bob/dir -type f -name *.log -size +100M -exec rm -f {} ;
Выводы
Вот и подошла к концу эта небольшая статья, в которой была рассмотрена команда find. Как видите, это одна из наиболее важных команд терминала Linux, позволяющая очень легко получить список нужных файлов. Ее желательно знать всем системным администраторам. Если вам нужно искать именно по содержимому файлов, то лучше использовать команду grep.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Время на прочтение
5 мин
Количество просмотров 123K
Иногда критически важно быстро найти нужный файл или информацию в системе. Порой можно ограничиться стандартами функциями поиска, которыми сейчас обладает любой файловый менеджер, но с возможностями терминала им не сравниться.
Команда find – это невероятно мощный инструмент, позволяющий искать файлы не только по названию, но и по:
- Дате добавления.
- Содержимому.
- Регулярным выражениям.
Данная команда будет очень полезна системным администраторам для:
- Управления дисковым пространством.
- Бэкапа.
- Различных операций с файлами.
Команда find в Linux производит поиск файлов и папок на основе заданных вами критериев и позволяет выполнять действия с результатами поиска.
Синтаксис команды find:
$ find directory-to-search criteria action
Где:
- directory-to-search (каталог поиска) – это отправной каталог, с которой find начинает поиск файлов по всем подкаталогам, которые находятся внутри. Если не указать путь, тогда поиск начнется в текущем каталоге;
- criteria (критерий) – критерий, по которым нужно искать файлы;
- action (действие) – что делать с каждым найденным файлом, соответствующим критериям.
Поиск по имени
Следующая команда ищет файл s.txt в текущем каталоге:
$ find . -name "s.txt"
./s.txt
Где:
- . (точка) – файл относится к нынешнему каталогу
- -name – критерии по которым осуществляется поиск. В данном случае поиск по названию файла.
В данном случае критерий -name учитывает только символы нижнего регистра и файл S.txt не появиться в результатах поиска. Чтобы убрать чувствительность к регистру необходимо использовать –iname.
$ find . -iname "s.txt"
./s.txt
./S.txt
Для поиска всех изображений c расширением .png нужно использовать шаблон подстановки *.png:
$ find . -name "*.png"
./babutafb.png
./babutafacebook.png
./Moodle2.png
./moodle.png
./moodle/moodle1.png
./genxfacebook.png
Можно использовать название каталога для поиска. Например, чтобы с помощью команды find найти все png изображения в каталоге home:
$ find /home -name "*.png"
find: `/home/babuta/.ssh': Permission denied
/home/vagrant/Moodle2.png
/home/vagrant/moodle.png
/home/tisha/hello.png
find: `/home/tisha/testfiles': Permission denied
find: `/home/tisha/data': Permission denied
/home/tisha/water.png
find: `/home/tisha/.cache': Permission denied
Если выдает слишком много ошибок в отказе разрешения, тогда можно добавить в конец команды – 2> /dev/null. Таким образом сообщения об ошибках будут перенаправляться по пути dev/null, что обеспечит более чистую выдачу.
find /home -name "*.jpg" 2>/dev/null
/home/vagrant/Moodle2.jpg
/home/vagrant/moodle.jpg
/home/tisha/hello.jpg
/home/tisha/water.jpg
Поиск по типу файла
Критерий -type позволяет искать файлы по типу, которые бывают следующих видов:
- f – простые файлы;
- d – каталоги;
- l – символические ссылки;
- b – блочные устройства (dev);
- c – символьные устройства (dev);
- p – именованные каналы;
- s – сокеты;
Например, указав критерий -type d будут перечислены только каталоги:
$ find . -type d
.
./.ssh
./.cache
./moodle
Поиск по размеру файла
Допустим, что вам необходимо найти все большие файлы. Для таких ситуаций подойдет критерий -size.
- “+” — Поиск файлов больше заданного размера
- “-” — Поиск файлов меньше заданного размера
- Отсутствие знака означает, что размер файлов в поиске должен полностью совпадать.
В данном случае поиск выведет все файлы более 1 Гб (+1G).
$ find . -size +1G
./Microsoft_Office_16.29.19090802_Installer.pkg
./android-studio-ide-183.5692245-mac.dmg
Единицы измерения файлов:
- c — Байт
- k — Кбайт
- M — Мбайт
- G — Гбайт
Поиск пустых файлов и каталогов
Критерий -empty позволяет найти пустые файлы и каталоги.
$ find . -empty
./.cloud-locale-test.skip
./datafiles
./b.txt
...
./.cache/motd.legal-displayed
Поиск времени изменения
Критерий -cmin позволяет искать файлы и каталоги по времени изменения. Для поиска всех файлов, измененных за последний час (менее 60 мин), нужно использовать -60:
$ find . -cmin -60
.
./a.txt
./datafiles
Таким образом можно найти все файлы в текущем каталоге, которые были созданы или изменены в течение часа (менее 60 минут).
Для поиска файлов, которые наоборот были изменены в любое время кроме последнего часа необходимо использовать +60.
$ find . -cmin +60
Поиск по времени доступа
Критерий -atime позволяет искать файлы по времени последнего доступа.
$ find . -atime +180
Таким образом можно найти файлы, к которым не обращались последние полгода (180 дней).
Поиск по имени пользователя
Опция –user username дает возможность поиска всех файлов и каталогов, принадлежащих конкретному пользователю:
$ find /home -user tisha 2>/dev/null
Таким образом можно найти все файлы пользователя tisha в каталоге home, а 2>/dev/null сделает выдачу чистой без ошибок в отказе доступа.
Поиск по набору разрешений
Критерий -perm – ищет файлы по определенному набору разрешений.
$ find /home -perm 777
Поиск файлов с разрешениями 777.
Операторы
Для объединения нескольких критериев в одну команду поиска можно применять операторы:
- -and
- -or
- -not
Например, чтобы найти файлы размером более 1 Гбайта пользователя tisha необходимо ввести следующую команду:
$ find /home -user tisha -and -size +1G 2>/dev/null
Если файлы могут принадлежать не только пользователю tisha, но и пользователю pokeristo, а также быть размером более 1 Гбайта.
$ find /home ( -user pokeristo -or -user tisha ) -and -size +1G 2>/dev/null
Перед скобками нужно поставить обратный слеш “”.
Действия
К команде find можно добавить действия, которые будут произведены с результатами поиска.
- -delete — Удаляет соответствующие результатам поиска файлы
- -ls — Вывод более подробных результатов поиска с:
- Размерами файлов.
- Количеством inode.
- -print Стоит по умолчанию, если не указать другое действие. Показывает полный путь к найденным файлам.
- -exec Выполняет указанную команду в каждой строке результатов поиска.
-delete
Полезен, когда необходимо найти и удалить все пустые файлы, например:
$ find . -empty -delete
Перед удалением лучше лишний раз себя подстраховать. Для этого можно запустить команду с действием по умолчанию -print.
-exec:
Данное действие является особенным и позволяет выполнить команду по вашему усмотрению в результатах поиска.
-exec command {} ;
Где:
- command – это команда, которую вы желаете выполнить для результатов поиска. Например:
- rm
- mv
- cp
- {} – является результатами поиска.
- ; — Команда заканчивается точкой с запятой после обратного слеша.
С помощью –exec можно написать альтернативу команде –delete и применить ее к результатам поиска:
$ find . -empty -exec rm {} ;
Другой пример использования действия -exec:
$ find . -name "*.jpg" -exec cp {} /backups/fotos ;
Таким образом можно скопировать все .jpg изображения в каталог backups/fotos
Заключение
Команду find можно использовать для поиска:
- Файлов по имени.
- Дате последнего доступа.
- Дате последнего изменения.
- Имени пользователя (владельца файла).
- Имени группы.
- Размеру.
- Разрешению.
- Другим критериям.
С полученными результатами можно сразу выполнять различные действия, такие как:
- Удаление.
- Копирование.
- Перемещение в другой каталог.
Команда find может сильно облегчить жизнь системному администратору, а лучший способ овладеть ей – больше практиковаться.
Структура каталогов
Основные каталоги и структура файловой системы Linux регламентируются FHS — Filesystem Hierarchy Standard. FHS поддерживается Free Standards Group — некоммерческой организацией, в составе которой находятся крупные разработчики программного и аппаратного обеспечения, такие как HP, Red Hat, IBM и Dell.
Структура каталогов Linux
/ — корень
----/bin — (binaries) бинарные файлы пользователей
----/boot — файлы загрузчика
----/dev — (devices) файлы устройств
----/etc — (etcetera) конфигурационные файлы
----/home — домашние директории пользователей
----/lib (library) — системные библиотеки
----/media — съёмные носители
----/mnt (mount) — точки монтирования
----/opt (optional applications) — дополнительные приложения
----/proc — (process) информация о процессах
----/root - домашний каталог суперпользователя (root)
----/run — процессы
----/sbin — (system binaries) системные исполняемые файлы
----/srv (server) — сервер
----/sys (system) — информация о системе
----/tmp (temp) — временные файлы
----/usr — (user applications) программы пользователя
--------/usr/bin — исполняемые файлы
--------/usr/sbin — системные исполняемые файлы
--------/usr/lib— библиотеки
--------/usr/local — пользовательские программы, библиотеки и настройки
----/var (variable) — переменные файлы
--------/var/log — файлы логов
--------/var/lib — базы данных
--------/var/lock — файлы блокировок
--------/var/run — PID процессов
/ — корень
Главный каталог, по сути — файловая система Linux. Только root может менять и читать файлы в этом каталоге.
/bin (binaries) — бинарные файлы пользователей
Содержит исполняемые файлы, которые можно использовать когда не подключен каталог /usr. В основном — общие команды, например cat / ls / ps и др.
/boot — файлы загрузчика
Cодержит ядро и другие файлы, используемые при загрузке системы.
/dev (devices) — файлы устройств
В Linux все устройства являются файлами в каталоге /dev. Инициализируется при запуске системы — сканируются подключенные устройства и для них создаются специальные файлы.
/dev/null — псевдоустройство, в которое можно записать все что угодно и оно исчезнет навсегда.
Используя его, можно, например подавить вывод на stdout:
$ cat $filename >/dev/null
/dev/shm — раздел файловой системы, размещенный в оперативной памяти
Может быть использован для увеличения производительности приложений. При перезагрузке информация в разделе стирается.
/etc (etcetera) — конфигурационные файлы
Здесь хранятся конфигурационные файлы всех установленных в системе программ, скрипты запуска и завершения системных демонов, монтирования файловых систем и авторазгрузки программ.
/home — домашние директории пользователей
В этой папке хранятся домашние каталоги всех пользователей. В них они могут хранить свои личные файлы, настройки программ и т д.
/lib (library) — системные библиотеки
Содержит файлы системных библиотек, которые используются исполняемыми файлами в каталогах /bin и /sbin.
Библиотеки имеют имена файлов с расширением *.so и начинаются с префикса lib*. Например, libncurses.so.5.7. Папка /lib64 в 64 битных системах содержит 64 битные версии библиотек из /lib.
/media — съёмные носители
В этот каталог система монтирует все подключаемые внешние накопители — флешки, оптические диски и другие носители информации.
/mnt (mount) — точки монтирования
В этот каталог могут быть смонтированы внешние или дополнительные файловые системы.
/opt (optional applications) — дополнительные приложения
В эту папку устанавливаются проприетарные программы, игры или драйверы.
/proc (process) — информация о процессах
Содержит информацию о запущенных процессах, обновляемую в реальном времени. Также там есть информация об использовании системных ресурсов (/proc/cpuinfo, /proc/meminfo, /proc/uptime).
/run — процессы
Еще один каталог, содержащий PID файлы процессов, похожий на /var/run, но в отличие от него, он размещен в TMPFS, а поэтому после перезагрузки все файлы теряются.
/sbin (system binaries) — системные исполняемые файлы
Также как /bin содержит исполняемые файлы, доступные на ранних этапах загрузки, но здесь — программы, выполняемые только с правами суперпользователя — системные утилиты.
/srv (server) — сервер
В этом каталоге содержатся файлы серверов и сервисов. Например, могут содержаться файлы веб-сервера apache.
/sys (system) — информация о системе
Назначение каталогов Linux из этой папки — получение информации о системе непосредственно от ядра. Это еще одна файловая система, организуемая ядром и позволяющая просматривать и изменить многие параметры работы системы, например, работу swap, контролировать кулеры и многое другое.
/tmp (temp) — временные файлы
В этом каталоге содержатся временные файлы, созданные системой, любыми программами или пользователями. Все пользователи имеют право записи в эту директорию.Файлы удаляются при каждой перезагрузке.
/usr — (user applications) программы пользователя
/usr/bin — исполняемые файлы
Содержит исполняемые файлы различных программ, которые не нужны на первых этапах загрузки системы, например, музыкальные плееры, графические редакторы, браузеры и так далее.
/usr/lib— библиотеки
Содержит библиотеки для программ из /usr/bin или /usr/sbin.
/usr/local — пользовательские программы, библиотеки и настройки
Содержит файлы программ, библиотек, и настроек созданные пользователем. Например, здесь могут храниться программы собранные и установленные из исходников и скрипты, написанные вручную.
/usr/sbin — системные исполняемые файлы
Содержит двоичные файлы программ для системного администрирования, которые нужно выполнять с правами суперпользователя. Например, таких как Gparted, sshd, useradd, userdel и т д.
/var (variable) — изменяемые файлы
Содержит постоянно изменяемые файлы, генерируемые процессами во время работы. Здесь есть системные журналы, кеши, базы данных и т.п.
/var/log — файлы логов
Содержит большинство логов всех установленных в операционной системе программ.
/var/lib — базы данных
Содержит файлы баз данных, пакеты и т.п.
/var/lock — блокировки
Файлы, расположенные здесь, означают, что ресурс, файл или устройство занято и не может быть использовано другим процессом.
/var/run — PID процессов
Содержит идентификаторы процессов, которые могут использоваться для взаимодейстия между программами. В отличие от /run данные сохраняются после перезагрузки.
Пользователи и группы
ОС UNIX предлагает базовые средства защиты и совместного использования файлов на основе отслеживания пользователя и группы, владеющих файлом, трех уровней доступа (для пользователя-владельца, для пользователей группы-владельца, и для всех остальных пользователей) и трех базовых прав доступа к файлам (на чтение, на запись и на выполнение). Базовые средства защиты процессов основаны на отслеживании принадлежности процессов пользователям.
Для отслеживания владельцев процессов и файлов используются числовые идентификаторы. Идентификатор пользователя и группы — целое число (обычно) в диапазоне от 0 до 65535. Присвоение уникального идентификатора пользователя выполняется при заведении системным администратором нового регистрационного имени. Среди пользователей системы выделяется один пользователь — системный администратор или суперпользователь, обладающий всей полнотой прав на использование и конфигурирование системы. Это пользователь с идентификатором 0 и регистрационным именем root.
Учетные записи пользователей, как и большинство другой информации о конфигурации системы UNIX, по традиции, представлена в виде текстовых файлов: /etc/passwd, /etc/group и /etc/shadow (в системах с теневым хранением паролей).
Основные команды для работы с пользователями и группами (часть команд указанных ниже будет требовать sudo для выполнения):
$ useradd username - добавить пользователя username
$ useradd -D - показать доступные при добавлении пользователя настройки
$ passwd - изменить пароль пользователю (далее следовать подсказкам системы)
$ userdel - утилита удаления пользователя
$ groupadd group1 - добавить группу group1
$ usermod -aG group1 user1 - добавить пользователя user1 в группу group1
$ groupmod -n group2 group1 - изменить имя группы group1 на group2
$ groupdel - утилита удаления группы
$ su user1 - сменить текущего пользователя на user1 (если не указать пользователя именем по умолчанию будет root)
$ sudo somecommand - выполнить команду somecommand от лица пользователя root
В современных дистрибутивах Linux вместо root аккаунта для администрирования как правило используется утилита sudo (substitute user and do), позволяющая выполнить команду от лица пользователя root.
Все настройки sudo находятся в файле /etc/sudoers. Здесь можно настроить очень много параметров, начиная от кому будет позволено выполнять команды от имени суперпользователя и заканчивая ограничением набора доступных команд. Неправильный синтаксис, добавленный в этот файл, может полностью нарушить распределение прав между пользователями. Потому для работы с этим файлом используется утилита visudo, которая открывает файл в обычном текстовом редакторе, но во время сохранения файла проверяет его синтаксис. Это позволяет избежать ошибок в конфигурации.
Работа с файловой системой: навигация, создание-перемещение-удаление файлов, ссылки
Основные команды, используемые для навигации по файловой системе из окна терминала, создание, перемещение и удаление файлов и каталогов:
$ cd - перейти в домашнюю директорию
$ cd ~ - перейти в домашнюю директорию
$ cd / - перейти в корневую директорию
$ cd - - перейти в директорию, где находились до этого
$ cd .. - перейти на уровень выше
$ pwd - вывести текущую рабочую директорию (где находитесь)
$ ./myprog - запуск исполняемого файла myprog, находящегося в текущей директории
$ ls - вывести список директорий и файлов в текущей рабочей директории
$ ls -a - включить в вывод скрытые файлы (их имена начинаются с точки)
$ ls -l - добавить к выводу более подробную информацию
$ mkdir d1 d2 - создать директории d1 и d2 в текущей рабочей директории
$ mkdir -p d1/d2 - создать вложенные директории
$ touch f.txt - создать файл f.txt
$ echo "123" > f.txt - записать "123" в файл f.txt (если файла нет - будет создан, если есть - перезаписан)
$ cat f.txt - вывод содержимого файла f.txt
$ cp f.txt f2.txt - скопировать файл f.txt в f2.txt
$ mv f.txt f2.txt - переместить файл f.txt в f2.txt
$ cp -vr dir1/ dir2 - скопировать рекурсивно (ключ r) содержимое директории dir1 в dir2 и вывести информацию о выполненной работе (ключ v)
$ mv -v /opt ~/1.txt ~/2.txt - переместить из домашней директории в /opt файлы 1.txt и 2.txt и вывести информацию о выполненной работе (ключ v)
$ rm f.txt f2.txt - удалить f.txt и f2.txt
$ rm -rf mydir - удалить директорию mydir со всем содержимым (ключ r) игнорируя несуществующие файлы и аргументы (ключ f, force)
В ОС Linux существует два вида ссылок.
Жесткие ссылки привязываются к иноду, таким образом, файл присутствует в системе под несколькими разными именами. Файл существует до тех пор, пока с его инодом связано хотя бы одно имя. Понятия «жёсткая ссылка на файл» и «имя файла» являются синонимами.
$ touch firstlink - создали файл
$ ln firstlink secondlink - создали жесткую ссылку на него
$ ls -i firstlink secondlink - вывели содержимое рабочего каталога с инодами: они равны
15782 firstlink 15782 secondlink
Жесткие ссылки могут быть только на файлы, не на директории. Также нельзя создать жесткую ссылку на файл в другой файловой системе (у каждой ФС свой набор инодов).
Cимволические ссылки (или симлинки) — специальный вид файла, который ссылается на другой файл по имени, а не напрямую на инод. Симлинки не предохраняют файл от удаления. Если файл удалить, то симлинк на него станет нерабочим (или битым).
Симлинки создаются командой ln с опцией ‘-s’:
$ ln -sv ./versions/20180702-163849/ ./current - создать симлинк current на директорию ./versions/20180702-163849/
При работе с большим количеством файлов бывает удобно использовать маски — т.н. wildcards.
Wildcard «*» соответствует нулю или большему количеству символов:
$ ls -d /etc/g* - вывести список файлов в директории /etc имена которых начинаются с "g" и файл с именем "g" (если такой существует)
$ rm file* - удалить все файлы, имена которых начинаются в file
Wildcard «?» заменяет один любой символ:
$ rm myfile? - удалить все файлы, с именами начинающимися со слова "myfile" за которым следует один любой символ
Шаблон «[]» позволяет явно указать набор символов — будут найдеты совпадения, содержащие один из указанных в скобках символов. Также в можно указать диапазон символов (для этого используется символ –/дефис) или несколько диапазонов подряд, тогда шаблон будет совпадать с одним любым символом из этого диапазона:
$ myfile[12] — соответствует myfile1 и myfile2
$ [Cc]hange[Ll]og — соответствует файлам с именами Changelog, ChangeLog, changeLog, и changelog
$ ls /etc/[0-9]* — вывести список файлов в директории /etc/ имена которых начинаются с цифры
$ ls /tmp/[A-Za-z]* — вывести список файлов в директории /tmp/ имена которых начинаются с латинской буквы (заглавной или прописной)
Управление процессами и потоками, отправка сигналов, kill
Процесс (process) — некая виртуальная среда, инкапсулирующая в себе ресурсы (открытые файлы, файлы отображенные в память…) и их дескрипторы, потоки и т.д. Каждый процесс имеет как минимум один поток. Также каждый процесс имеет свое собственное виртуальное адресное пространство и контекст выполнения, а потоки одного процесса разделяют адресное пространство процесса. Некоторые приложения могут создавать несколько процессов одновременно.
Каждому процессу в системе назначаются числовые идентификаторы PID (Process Identifier) в диапазоне от 1 до 65535 и идентификаторы родительского процесса PPID (Parent Process Identifier).
$ ping ya.ru > /dev/null & - оператор & означает запуск процесса в фоновом режиме (не блокирует терминал)
$ jobs - просмотреть запущенные в фоновом режиме задачи
$ fg [job id] - вернуть в терминал задачу с определенным идентификатором
ctrl-Z, затем
$ bg - приостановить выполнение задачи и продолжить ее в фоновом режиме
$ ps aux - просмотр информации о запущенных процессах всех пользователей
$ top - непрерывно отобразить информацию самых активных процессов
$ htop - более продвинутая версия top, устанавливается отдельно. Показывает все процессы в системе, использование процессоров и памяти
Сигнал в операционных системах семейства Unix — асинхронное уведомление процесса о каком-либо событии.
Когда сигнал послан процессу, операционная система прерывает выполнение процесса, при этом, если процесс установил собственный обработчик сигнала, операционная система запускает этот обработчик, передав ему информацию о сигнале, если процесс не установил обработчик, то выполняется обработчик по умолчанию.
$ kill -l - все доступные в системе сигналы
$ kill [ -s сигнал ] pid - отправить процессу pid сигнал
По умолчанию отправляется сигнал SIGTERM. Для безусловного завершения процесса можно отправить SIGKILL. Т.к. в большинстве систем SIGKILL имеет идентификатор 9, часто встречается команда в сокращенной форме записи:
$ kill -9 123 - безусловно, "жестко" завершить процесс 123
SSH и передача файлов
SSH (Secure Shell) — защищенный протокол для удаленного доступа к компьютерам. В *nix-подобных системах (Linux, macOS) ssh-клиент обычно установлен по умолчанию и подключаться можно напрямую из терминала. Для подключения нужно указать адрес сервера и, опционально, имя пользователя и порт.
Простейший вариант — подключение по паролю. В таком случае система будет запрашивать пароль каждый раз при подключении.
Для подключения без ввода пароля можно использовать ключи: приватный (закрытый) и публичный (открытый). Эти ключи связаны друг с другом таким образом, что зашифровав информацию одним ключом, расшифровать ее можно только другим.
Для создания ключей необходимо выполнить команду:
$ ssh-keygen
Опционально можно ввести passphrase.
Будут созданы два файла:
~/.ssh/id_rsa — приватный ключ. Его нельзя никому передавать.
~/.ssh/id_rsa.pub — публичный ключ. Можно спокойно распространять.
Для загрузки публичного ключа на сервер нужно выполнить на локальной машине команду:
$ ssh-copy-id -i /home/demo/.ssh/id_rsa.pub user@remote_host
Другой вариант — добавить на удаленной машине в файл ~/.ssh/authorized_keys содержимое публичного ключа.
Для более удобной работы с ключами можно добавить ключ к ssh-агенту. После этого для него больше не будет спрашиваться passphrase (если был задан) и не нужно будет вводить ключ вручную — он будет автоматически использован при соответствующем подключении.
$ ssh-add /home/demo/.ssh/id_rsa - добавить ключ в запущенный в системе агент (попросит passphrase, если задан).
ssh-agent привязан к сессии. Поэтому, например, если перезагрузить компьютер, то ключи нужно будет добавлять в агент заново.
Протокол SSH можно использовать для передачи файлов на удалённый сервер и загрузки их оттуда.
$ scp root@hostmane:/home/user/file.tar.gz /opt - скачать с сервера файл /home/user/file.tar.gz в /opt
$ scp /opt/file.tar.gz root@hostmane:/home/user - загрузить на удаленный сервер в /home/user файл /opt/file.tar.gz
Перенаправление ввода/вывода
Процесс взаимодействия с пользователем выполняется в терминах записи и чтения в файл. Вывод на экран представляется как запись в файл, а ввод — как чтение файла. Файл, из которого осуществляется чтение, называется стандартным потоком ввода, а в который осуществляется запись — стандартным потоком вывода. Существует еще и стандартный поток ошибок, на который выводятся все сообщения об ошибках и те информативные сообщения о ходе работы программы, которые не могут быть выведены в стандартный поток вывода.
$ ls -l > file.txt - вывести содержимое директории в файл
$ wc -w < file.txt - посчитать количество слов в файле
Можно организовать конвейер (pipe) выполняемых команд.
$ cat myfile | grep Linux | wc -l
В примере выше вывод команды cat, т. е. текст из файла myfile, будет направлен на вход команды grep, которая выделит только строки, содержащие слово «Linux». Вывод команды grep будет, в свою очередь, направлен на вход команды wc -l, которая подсчитает число таких строк. Статус выхода из канала совпадает со статусом выхода, возвращаемым последней командой.
Работа с текстовыми файлами, find и grep
less — программа для просмотра содержимого текстовых файлов с возможностью его прокрутки. Умеет искать текст по шаблону и подсвечивать результат. Быстро работает с файлами больших размеров, т.к. не нуждается в чтении всего файла перед стартом.
$ less myfile - просмотреть содержимое файла
После открытия текстового файла внутри утилиты можно набирать разные команды (они отображаются в левом нижнем углу), рассмотрим некоторые из них.
Для вызова справки внутри утилиты воспользуйтесь клавишей h.
Поиск внутри утилиты:
/text - поиск слова text "вперёд", начиная с первой отображаемой строки
?text - поиск слова text "назад", начиная с последней отображаемой строки
В режиме поиска:
n - следующее совпадение
N (shift-n) - предыдущее совпадение.
tail — утилита, выводящая несколько последних строк файла, head — несколько первых строк.
Отображение последних 10 строк файла:
$ tail -10 myfile - отобразить последние 10 строк файла
$ tail -f myfile - вывод новых строк файла в режиме реального времени можно использовать для просмотра обновления логов, остановить: ctrl-c
$ head -10 myfile1 - отобразить первые 10 строк файла
По умолчанию tail выводит именно 10 последних строк.
iconv — преобразование кодировки файла
$ iconv -f <начальная кодировка> -t <желаемая кодировка> <исходный файл> -o <файл-результат>
Дополнительные ключи:
-s - игнорировать ошибки
-l - вывести список доступных кодировок
-c - отбросить неконвертируемые символы
Find — команда для поиска файлов и каталогов на основе специальных условий.
$ find / -name top - найти все файлы в системе, имеющие имя top
$ find / -iname top - найти все файлы в системе, имеющие имя top без учета регистра символов
$ find / -name 'top*' - найти все файлы в системе с именами, начинающимися с top
$ find . -name "test*" -not -name "*.php" - найти файлы, начинающиеся на test, но без расширения php
$ find -name "*.html" -o -name "*.php" - найти файлы с расширением html или php
$ find /usr/local -size +10000k - найти файлы в /usr/local размером больше 10 килобайт
$ find ~ -size -300c - найти в домашнем каталоге размером меньше 300 байт
$ find . -exec ls -ld {} ; - выполнить ls для получения подробной информации о каждом найденном файле
$ find /tmp -type f -name "*.txt" -exec rm -f {} ; - удалить все текстовые файлы в /tmp
Команда grep — поиск по шаблону в файле.
$ grep шаблон * - искать шаблон в файлах, находящихся в текущем каталоге
$ grep -r шаблон * - искать шаблон в файлах текущего каталога и подкаталогов
$ grep -v -l pattern * - найти файлы, не содержащие строк, соответствующих шаблону
$ grep -C 2 pattern files - выведет строки, в которых найдено соответствие, плюс 2 строки до и 2 после каждой найденной
$ grep ERROR /var/log/app.log -c - найти количество строк, содержащих ERROR в логе
$ grep -rnw '/path/to/somewhere/' -e 'pattern' - найти файлы, содержащие шаблон, расположенные в /path/to/somewhere/
-r or -R - искать рекурсивно по поддиректориям
-n - выводить номера строк
-w - искать целые слова в качестве совпадений
-l - выводить только имена файлов
$ grep --include=*.{c,h} -rnw '/path/to/somewhere/' -e "pattern" - найти файлы, содержащие шаблон, расположенные в /path/to/somewhere/, имеющие расширение .c или .h
$ grep --exclude=*.o -rnw '/path/to/somewhere/' -e "pattern" - найти файлы, содержащие шаблон, расположенные в /path/to/somewhere/, кроме файлов с расширением .o
$ grep --exclude-dir={dir1,dir2,*.dst} -rnw '/path/to/somewhere/' -e "pattern" - найти файлы, содержащие шаблон, расположенные в /path/to/somewhere/, исключив из поиска директории dir1 и dir2 и файлы с расширением .dst
Информация о размерах файлов и директорий, свободном пространстве
Для того, чтобы получить информацию о доступном в системе пространстве, можно использовать утилиту df (disk free):
$ df -h - показать в понятном формате (флаг h = human-readable) список всех файловых систем по именам устройств с указанием размера
Для оценки занимаемого файлом или директорией дискового пространства используется утилита du (disk usage):
$ du -sh /home/myuser/data/ - отобразить размер директории
$ du -shx /home/myuser/data/ - отобразить размер директории, не учитывая каталоги в иерархии, относящиеся к другим точкам монтирования (флаг -x)
$ du -sh /home/myuser/data/ - отобразить размер директории и содержащихся в ней подкаталогов
$ du -sh /var/log/* | sort -hr - отобразить размеры директории включая файлы внутри нее с сортировкой по занимаемому месту
Переменные окружения
Переменные окружения в Linux — специальные переменные, определенные оболочкой и используемые программами во время выполнения. Могут быть определены как системой, так и пользователем. Переменные являются парамти ключ — строковое значение. Несколько значений разделяются двоеточием, если в значении присутствует пробел — нужно использовать кавычки.
KEY=value1
KEY=value1:value2
KEY="value with spaces"
Существует три типа переменных окружения:
— локальные переменные окружения (environmental variables) — определены только для текущей сессии, будут безвозвратно стерты по ее завершении. Вывести текущие переменные окружения — команда printenv или env без параметров
— пользовательские переменные окружения (shell variables) — определяются для конкретного пользователя и устанавливаются при входе в систему или удаленном подключении. Хранятся в файлах конфигурации .bashrc, .bash_profile, .bash_login, .profile и других, размещенных в директории пользователя. Для просмотра используется команда set.
— системные переменные окружения — доступны всем пользователям, загружаются при старте системы из файлов /etc/environment, /etc/profile, /etc/profile.d/ /etc/bash.bashrc.
Конфигурационные файлы переменных окружения:
- .bashrc — переменные конкретного пользователя, загружается каждый раз при создании пользователем терминального сеанса
- .bash_profile — загружается каждый раз при удаленном подключении по SSH
- /etc/environment — файл для работы с переменными окружения на системном уровне, будут доступны всем пользователям системы, в том числе при удаленном подключении
- /etc/bashrc — выполняется для всех локальных пользователей при создании сессии в терминале
- /etc/profile — выполняется для всех удаленных пользователей при открытии терминала
Команды для работы с переменными окружения:
$ echo $PATH - просмотр значения переменной
$ VAR=значение - установить пользовательскую переменную окружения для текущей сессии (недоступна дочерним процессам)
$ export VAR=значение - установить локальную переменную окружения (environmental variable), доступную дочерним процессам
$ env –i [VAR=value] <команда> - временно удалить все переменные оболочки и выполнить команду передав свои значения переменной
$ env –i bash - запустить оболочку без переменных окружения
$ unset VAR - удалить переменную по имени до конца текущей сессии
$ export PATH="" - альтернативный способ удалить переменную по имени до конца текущей сессии
$ PATH=$PATH:new_path - добавить каталог в список путей, в которых shell ищет исполняемые файлы
Работа с сетью
Основные команды для работы с сетью:
$ ifconfig - получение информации об активных сетевых устройствах
$ ifconfig -a - получение информации обо всех сетевых устройствах
Адаптер lo (loopback) в выводе ifconfig используется системой для обращения к самой себе.
$ ping -c 5 ya.ru - отправить 5 пакетов ECHO_REQUEST по адресу ya.ru и отобразить задержку между отправкой пакета и ответом. Базовое средство проверки подключения компьютера к сети.
$ tracepath ya.ru - проследить маршрут, по которому пакеты идут до хоста ya.ru
$ netstat -tnp - отобразить установленные сетевые подключения. Опция -t отображает установленные tcp-соединения.
$ netstat -tln - отобразить открытые приложениями порты (опция -l - показывать слушающие "listening"-порты)
$ netstat -tunap | grep 9090 - найти процессы, использующие порт 9090
Пример скрипта, ожидающего запуск Zookeeper на порту 2181:
# Wait until Zookeeper started
while [[ -z "`netstat -tln | grep 2181`" ]]; do
sleep 1
done
echo 'Zookeeper started. Importing data...'
$ wget http://example.com/file.zip - скачать в текущую директорию file.zip
$ wget -P /path/to/save -O arch.zip http://example.com/file.zip - скачать файл в директорию /path/to/save и сохранить под именем arch.zip
$ wget --save-cookies cookies.txt --post-data 'username=user&password=pass' http://example.com/auth.php - авторизоваться на сервере, передав логин и пароль и сохранить cookie в текстовый файл
curl http://test.com - получить содержание главной страницы сайта
curl -o index.html http://test.com - сохранить содержимое главной страницы в index.html
curl -u user:pass http://test.com - авторизоваться, используя HTTP Base Auth и получить содержимое страницы
curl -H 'Host: test.ru' http://test.com - передать произвольные HTTP-заголовок
curl -X POST -H "Content-Type: application/json" -d '"name":"test"' http://test.com/api/ - передать POST-запрос с данными в JSON-формате
curl --request PUT "http://test.com/api/" --data "name=Test" - передать данные PUT-запросом
Работа со службами
В RHEL7 для управления службами в операционной системе используется утилита systemd, приносящая концепцию юнитов.
Юниты находятся в конфигурационных файлах, расположенных в директориях (указаны по возрастанию приоритета):
- /usr/lib/systemd/system/ — юниты из установленных покетов RPM
- /run/systemd/system/ — юниты, созданные в рантайме
- /etc/systemd/system/ — юниты, созданные и управляемые системным администратором с помощью команды systemctl enable.
Юниты содержат информацию о системных сервисах, прослушиваемых сокетах, сохраненных снапшотах состояний системы и других обьектах, относящихся к системе инициализации.
Типы юнитов systemd:
- .service – системный сервис,
- .target — группа юнитов systemd,
- .automount – точка автомонтирования файловой системы,
- .device – файл устройства, распознанного ядром,
- .mount – точка монтирования файловой системы,
- .path – файл или директория в файловой системе,
- .scope – процесс, созданный извне,
- .slice – группа иерархически организованных юнитов, управляющая системными процессами,
- .snapshot – сохраненное состояние менеджера systemd,
- .socket – сокет межпроцессного взаимодействия,
- .swap – свап-устройство или свап-файл (файл подкачки),
- .timer – таймер systemd.
Основные команды для работы со службами:
$ sudo systemctl start nginx.service - запустить сервис
$ sudo systemctl stop nginx.service - остановить сервис
$ sudo systemctl restart nginx.service - перезапустить сервис
$ sudo systemctl reload nginx.service - перечитать конф. файлы без перезапуска сервиса
$ sudo systemctl enable nginx.service - включить автозапуск сервиса при загрузке системы
$ sudo systemctl disable nginx.service - отключить автозапуск сервиса при загрузке системы
$ systemctl status nginx.service - просмотр состояния сервиса
$ journalctl -u nginx.service - вывод записей лог-файла сервиса
$ systemctl list-dependencies nginx.service - отобразить дерево зависимостей юнита
$ systemctl cat nginx.service - просмотреть юнит-файл
$ sudo systemctl edit --full nginx.service - модифицировать юнит-файл
$ sudo systemctl daemon-reload - перезапустить systemd для подхвата изменений после модификации юнит-файла
Менеджер пакетов YUM
Менеджер пакетов YUM — высокоуровневое решение по управлению RPM-пакетами. Основные преимущества YUM:
— хранение пакетов в централизованных репозиториях с определяющими зависимости метаданными. Если для установки одного пакета нужно докачать пакеты из других репозиториев — YUM будет об этом знать заранее
— автоматически разрешаются взаимосвязи между пакетами как при установке (докачать нужное) так и при удалении (удалить ставшее ненужным)
— возможность обновить одной командой все пакеты в системе
Основные комады YUM:
$ yum repolist - показать список сконфигурированных репозиториев
$ yum check-update - проверка репозиториев на доступность обновлений
$ yum update - обновление всех пакетов
$ yum update <name> - обновление пакета <name>
$ yum install <name> - установка пакета <name>
$ yum remove <name> - удаление пакета <name>
$ yum clean packages - удаление пакетов из кэша
$ yum clean all - удаление из кэша и пакетов и метаданных
$ yum --showduplicates list <name> | expand - отобразить все версии пакета <name>
$ sudo yum install <name>-<version info> - установить нужную версию пакета <name>
$ mount - просмотр примонтированных устройств
$ yum -y -q install cifs-utils - устанавливаем cifs-utils
$ mkdir /mnt/shareddrive - создаем директорию, в которую будем монтировать
$ mount -t cifs //network/path /mnt/shareddrive -o 'rw,username=user,password='pass'' - монтируем сетевой диск в каталог /mnt/shareddrive, используем указанные имя пользователя и пароль для авторизации
$ ps -eL|wc -l - определить количество процессов
$ cat /etc/security/limits.conf | grep nproc | grep username - определить максимальное количество процессов для пользователя
$ ps -eL|awk '{arr[$1]++}END{for (a in arr) print a, arr[a]}'|sort -nk 2 - определить процесс, который породил больше всего потоков
P.S. эта статья взята от сюда https://ezhvsalate.ru/posts/redhat7-centos-7-poleznye-komandy
chmod 777 directory1