Как получить основную информацию о системных и дисковых разделах?

1. Введение

Для задач администрирования нам часто требуется подробная информация о нашей системе. Таким образом, в случае Linux знания о версии ядра и дистрибутиве для нас очень важны.

Кроме того, нам нужна информация о доступном физическом хранилище. Следовательно, в контексте Linux нам нужно перечислить разделы диска.

Мы рассмотрим команды Linux, полезные для достижения этой цели.

2. Команда uname для данных ядра

Команда uname возвращает кучу информации, касающейся нашего ядра. Итак, давайте проверим имя ядра:

$ uname
Linux

2.1. Варианты отмены

Мы должны использовать опции для получения более конкретной информации. Поэтому для всех полей давайте использовать переключатель –a:

$ uname -a
Linux 10.0.2.15 5.14.10-300.fc35.x86_64 #1 SMP Thu Oct 7 20:48:44 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

Теперь давайте проверим каждый фрагмент информации, связанный с ядром, с помощью его собственного переключателя.

Таким образом, для имени ядра давайте использовать -s (или просто ничего):

$ uname -s
Linux

Затем, для выпуска ядра, давайте использовать -r:

$ uname -r
5.14.10-300.fc35.x86_64

Наконец, для версии ядра мы должны использовать -v:

$ uname -v
#1 SMP Thu Oct 7 20:48:44 UTC 2021

Давайте заметим, что данные, связанные с ядром, компилируются только во время сборки ядра. Во время выполнения они получаются с помощью системного вызова uname.

2.2. Доступность

Команда является частью пакета sh-utils или coreutils. Поэтому мы должны найти ее практически во всех дистрибутивах.

3. Информация о распространении с помощью lsb_release

Теперь мы собираемся узнать о деталях дистрибутива Linux с помощью команды lsb_release:

$ lsb_release -a
LSB Version:	:core-4.1-amd64:core-4.1-noarch
Distributor ID:	Fedora
Description:	Fedora release 35 (Thirty Five)
Release:	35
Codename:	ThirtyFive

Итак, мы видим, что наша операционная система — Fedora 35.

Кроме того, давайте заметим, что команда построена на основе концепции Linux Standard Base (LSB).

Таким образом, в случае дистрибутивов, совместимых с LSB, команда собирает информацию из файлов /etc/lsb-release и /etc/distrib-release. Кроме того, он анализирует имена файлов в папке /etc/lsb-release.d .

Однако в нашем примере Fedora 35 существует только папка /etc/lsb-release.d .

В некоторых дистрибутивах команда недоступна из коробки. Он поставляется с пакетом lsb_release.

4. Анализ файла версии ОС

Мы можем добиться аналогичного эффекта, как при использовании lsb_release, проанализировав содержимое файла /etc/os-release . Итак, давайте разберемся:

$ cat /etc/os-release
NAME="Fedora Linux"
VERSION="35 (Workstation Edition)"
ID=fedora
VERSION_ID=35
VERSION_CODENAME=""
PLATFORM_ID="platform:f35"
PRETTY_NAME="Fedora Linux 35 (Workstation Edition)"
# more output skipped ...

Теперь давайте будем более конкретными и отобразим только PRETTY_NAME с помощью grep:

$ grep '^PRETTY_NAME' /etc/os-release
PRETTY_NAME="Fedora Linux 35 (Workstation Edition)"

Эта функция является частью systemd manager, поэтому мы должны найти ее в большинстве дистрибутивов Linux. Однако не все поля необходимо заполнять.

5. Команда hostnamectl

Команда hostnamectl управляет именами хостов системы.Он принимает команды, связанные с различными функциями системы.

Таким образом, с помощью команды status мы собираемся получить информацию о ядре и дистрибутиве:

$ hostnamectl status
   Static hostname: n/a
Transient hostname: 10.0.2.15
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 588ce19ba22340289d4e9f9ad3c5df63
           Boot ID: 5a4584a74a1f4b1596ac4b6d15c96e01
    Virtualization: oracle
  Operating System: Fedora Linux 35 (Workstation Edition)
       CPE OS Name: cpe:/o:fedoraproject:fedora:35
            Kernel: Linux 5.14.10-300.fc35.x86_64
      Architecture: x86-64
   Hardware Vendor: innotek GmbH
    Hardware Model: VirtualBox

Хотя некоторые другие команды сужают выходные данные hostnamectl, ни одна из них не возвращает единственную информацию о ядре.

Команда hostnamectl поставляется с пакетом systemd-services.6. Список блочных устройств с помощью lsblk

Мы собираемся получить информацию о системных блочных устройствах с помощью команды lsblk:

$ sudo lsblk -o NAME,KNAME,FSTYPE,MOUNTPOINT,SIZE
NAME   KNAME FSTYPE MOUNTPOINT   SIZE
sda    sda                      78,1G
├─sda1 sda1  ext2   /boot        1,5G
├─sda2 sda2                        1K
├─sda5 sda5  ext4   /            5,5G
├─sda6 sda6  ext4   /usr        12,5G
├─sda7 sda7  ext4   /home       54,7G
└─sda8 sda8  swap                  4G
sr0    sr0                      1024M

Мы должны использовать опции -o для предоставления списка имен столбцов, которые мы хотим отобразить. В нашем примере мы использовали:

  • ИМЯ – имя устройства
  • KNAME – имя внутреннего устройства
  • FSTYPE – тип файловой системы
  • ТОЧКА ПОДКЛЮЧЕНИЯ – точка подключения устройства
  • РАЗМЕР – размер устройства

Мы можем получить полный список доступных столбцов, используя выдачу lsblk -h.

Кроме того, мы можем изменить единицы измерения на байты с помощью переключателя -b.

Наконец, нам не нужны привилегии root для выполнения этой команды.Однако без root-доступа или sudo некоторые столбцы недоступны, например, FSTYPE .

Команда распространяется как часть пакета util-linux.

7. Список разделов диска с помощью fdisk

Давайте воспользуемся хорошо известной командой fdisk для составления списка разделов диска:

$ sudo fdisk -l

Disk /dev/sda: 83.9 GB, 83886080000 bytes
255 heads, 63 sectors/track, 10198 cylinders, total 163840000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000031b3

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     3106815     1552384   83  Linux
/dev/sda2         3108864   163839999    80365568    5  Extended
/dev/sda5         3110912    14583807     5736448   83  Linux
/dev/sda6        14585856    40724479    13069312   83  Linux
/dev/sda7        40726528   155449343    57361408   83  Linux
/dev/sda8       155451392   163839999     4194304   82  Linux swap / Solaris

Размер разделов указан в блоках по 512 байт. К сожалению, мы не можем изменить единицу, указанную в списке.

7.1. Получение размера раздела в ГБ

Давайте отобразим сведения о разделе, передав его имя в качестве аргумента в fdisk:

$ sudo fdisk -l /dev/sda7

Disk /dev/sda7: 58.7 GB, 58738081792 bytes
255 heads, 63 sectors/track, 7141 cylinders, total 114722816 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sda7 doesn't contain a valid partition table

Таким образом, мы можем прочитать размер раздела в ГБ.

7.2. Замечания по безопасности и доступность

Мы должны знать, что предоставление списка разделов — это лишь малая часть возможностей fdisk.

Прежде всего, это интерактивный инструмент для создания, удаления и изменения разделов.

Итак, если случайно мы вызываем sudo fdisk /dev/sda (без -l), то мы попадаем в оболочку со всеми доступными командами fdisk.

Затем, если мы не хотим изменять таблицу разделов, мы должны ввести q для выхода.

Команда включена в пакет util-linux.

8. разделен, чтобы справиться с большими разделами

Разделена еще одна команда для управления разделами. Итак, давайте покажем обычный список разделов:

$ sudo parted -l
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 83,9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type      File system     Flags
 1      1049kB  1591MB  1590MB  primary   ext2            boot
 2      1592MB  83,9GB  82,3GB  extended
 5      1593MB  7467MB  5874MB  logical   ext4
 6      7468MB  20,9GB  13,4GB  logical   ext4
 7      20,9GB  79,6GB  58,7GB  logical   ext4
 8      79,6GB  83,9GB  4295MB  logical   linux-swap(v1)

Давайте заметим, что разделы идентифицируются по номеру, а не по имени устройства. Кроме того, размер аккуратно форматируется с помощью соответствующей единицы измерения.

Команда parted — это интерактивный инструмент, похожий на fdisk.

Однако его замечательной особенностью является возможность работы с разделами размером более 2 ТБ.

Нам нужно установить эту утилиту из пакета parted с таким же именем.

9. Заключение

В этой статье мы представили способы предоставления информации об операционной системе Linux. Мы начали с получения скомпилированной версии ядра.

Затем мы узнали, как проверить детали дистрибутива Linux, применив концепцию LSB или используя данные systemd. Мы также получили аналогичную информацию с помощью инструмента управления именами хостов.

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

Команда find

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

Команда 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 может сильно облегчить жизнь системному администратору, а лучший способ овладеть ей – больше практиковаться.

yum шпаргалка

отображение команд и опций

#yum help

список названий пакетов из репозиторий

#yum list

список всех доступных пакетов

#yum list available

список всех установленных пакетов

#yum list installed

установлен ли указанный пакет

#yum list installed httpd

список установленных и доступных пакетов

#yum list all

список пакетов, относящихся к ядру

#yum list kernel

отображение информации о пакете

#yum info httpd

список зависимостей и необходимых пакетов

#yum deplist httpd

найти пакет, который содержит файл

#yum provides "*bin/top"

поиск пакета по имени и описанию

#yum search httpd
#yum search yum

получить информацию о доступных обновлениях безопасности

#yum updateinfo list security

вывести список групп

#yum grouplist

вывести описание и содержимое группы

#yum groupinfo "Basic Web Server"

установка группы пакетов «Basic Web Server»

#yum groupinstall "Basic Web Server"

удаление группы

#yum groupremove "Basic Web Server"

Проверка на доступные обновления

#yum check-update

список подключенных репозиториев

#yum repolist

информация об определенном репозитории

#yum repoinfo epel

информация о пакетах в указанном репозитории

#yum repo-pkgs epel list

установить все пакеты из репозитория

#yum repo-pkgs reponame install

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

#yum repo-pkgs reponame remove

создать кэш

#yum makecache

проверить локальную базу rpm (поддерживаются параметры dependencies, duplicates, obsoletes, provides)

#yum check
#yum check dependencies

просмотр yum истории (вывод списка транзакций)

#yum history list

просмотр информации определенной транзакции (установленные пакеты, установленные зависимости)

#yum history info 9

отмена транзакции

#yum history undo 9

повторить

#yum history redo 9

дополнительно можно просмотреть лог

#cat /var/log/yum.log

удалить пакеты сохраненные в кэше

#yum clean packages

удалить все пакеты и метаданные

#yum clean all

установить пакет

#yum install httpd

удаление пакета

#yum remove httpd

обновить пакет

#yum update httpd

обновить все пакеты

#yum update

обновить до определенной версии

#yum update-to

установить из локальной директории (поиск/установка зависимостей будут произведены из подключенных репозиториев)

#yum localinstall httpd.rpm

или

#yum install httpd.rpm

установить с http

#yum localinstall http://server/repo/httpd.rpm

откатиться к предыдущей версии пакета

#yum downgrade

переустановка пакета (восстановление удаленных файлов)

#yum reinstall httpd

удаление ненужных более пакетов

#yum autoremove

создание локальных репозиториев (createrepo ставится отдельно)

#createrepo

установка обновлений по расписанию (yum-cron устанавливается отдельно)

#yum-cron

Опции Yum

ответить «yes» при запросе,

-y
#yum update -y

ответить «no» при запросе

--assumeno

использовать Yum без плагинов

--noplugins

или отключить определенный плагин

--disableplugin=fastestmirror

включить плагины, которые установлены, но отключены

#yum --enableplugin=ps

включить отключенный репозиторий

#yum update -y --enablerepo=epel

отключить репозиторий

#yum update -y --disablerepo=epel

скачать пакеты, но не устанавливать
(на Centos 7 x86_64 будут скачаны в ‘/var/cache/yum/x86_64/7/base/packages/’)

#yum install httpd --downloadonly

Cледующие команды доступны после установки пакета yum-utils

найти из какого репозитория установлен пакет

#find-repos-of-install httpd

найти процессы, пакеты которых обновлены и требуют рестарта

#needs-restarting

запрос к репозиторию, узнать зависимости пакета, не устанавливая его

#repoquery  --requires --resolve httpd

синхронизировать yum репозиторий updates в локальную директорию repo1

#reposync -p repo1 --repoid=updates

проверить локальный репозиторий на целостность

#verifytree URL

завершить транзакции

#yum-complete-transaction

установить необходимые зависимости для сборки RPM пакета

#yum-builddep

управление конфигурационными опциями и репозиториями yum

#yum-config-manager

запрос к локальной базе yum, отображение информации о пакете
(использованная команда, контрольная сумма, URL с которого был установлен и другое)

#yumdb info httpd

скачать rpm пакеты из репозитория

#yumdownloader

скачать src.rpm пакет из репозитория
(должен быть подключен соответствующий репозиторий, например в ‘/etc/yum.repos.d/CentOS-Sources.repo’ в CentOS)

yumdownloader --source php

Конфигурационные файлы Yum и их расположение

Основной конфигурационный файл

/etc/yum.conf

директория, с конфигурациями (например, yum плагины)

/etc/yum/

директория, содержащая информацию о репозиториях

/etc/yum.repos.d/

Некоторые опции yum.conf:

Директория, где yum хранит кэш и файлы базы (по умолчанию ‘/var/cache/yum’)

cachedir=/var/cache/yum/$basearch/$releasever

Определяет должен или нет Yum хранить кэш заголовков и пакетов после успешной установки. Значения: 0 или 1. (по умолчанию 1)

keepcache=1

уровень вывода отладочных сообщений. Значения: 1-10 (по умолчанию 2)

debuglevel=2

лог файл (по умолчанию ‘/var/log/yum.log’)

logfile=/var/log/yum.log

обновлять устаревшие пакеты

obsoletes=1

проверка подписи пакетов. Значения: 0 или 1 (по умолчанию 1)

gpgcheck=1

включение плагинов. Значения: 0 или 1 (по умолчанию 1)

plugins=1

Некоторые полезные плагины

Добавляет опцию командной строки для просмотра ченжлога перед/после обновлениями

yum-plugin-changelog

выбирает более быстрые репозитории из списка зеркал

yum-plugin-fastestmirror

добавляет команды keys, keys-info, keys-data, keys-remove, которые позволяют работать с ключами.

yum-plugin-keys

блокировать указанные пакеты от обновления, команда yum versionlock

yum-plugin-versionlock

добавление команд yum verify-all, verify-multilib, verify-rpm для проверки контрольных сумм пакетов

yum-plugin-verify

Работа Yum через прокси сервер

Для всех пользователей:
добавить в секцию [main] в /etc/yum.conf

proxy="http://server:3128"

при необходимости указать пароль, добавить

proxy_proxy_username=user
proxy_password=pass

указать прокси для отдельного пользователя

#export http_proxy="http://server:3128"

Буду рад любым дополнениям и замечаниям.
Дополнительно читайте:

#man yum
#man rpm

Как отсортировать файлы по размеру с помощью команды ls в Linux

1) Перечислить содержимое содержимого каталога при сортировке по размеру

Чтобы перечислить содержимое определенного каталога с сортировкой по размеру, мы будем использовать опции -lS с командой ls.

$ ls -lS /run
output
total 24
-rw-rw-r--.  1 root utmp 2304 Sep  8 14:58 utmp
drwxr-xr-x. 16 root root  400 Aug 21 13:18 systemd
drwxr-xr-x.  7 root root  160 Aug 26 14:59 udev
drwxr-xr-x.  4 root root  100 Aug 21 13:18 initramfs
drwxr-xr-x.  4 root root  100 Sep  8 03:31 lock
drwxr-xr-x.  3 root root  100 Aug 21 13:18 NetworkManager
drwxr-xr-x.  2 root root   60 Aug 21 13:18 dbus
drwxr-xr-x.  3 root root   60 Aug 21 13:18 log
drwx--x--x.  3 root root   60 Aug 21 13:18 sudo
drwxr-xr-x.  2 root root   60 Aug 21 13:18 tmpfiles.d
drwxr-xr-x.  2 root root   60 Aug 21 13:18 tuned
drwxr-xr-x.  3 root root   60 Sep  7 23:11 user
drwxr-xr-x.  2 root root   40 Aug 21 13:18 console
drwxr-xr-x.  2 root root   40 Aug 21 13:18 faillock
drwxr-x---.  2 root root   40 Aug 21 13:18 firewalld
drwxr-xr-x.  2 root root   40 Aug 21 13:18 mount
........

Чтобы указать размер файла, мы будем использовать параметр -s с командой ls.

$ ls -s
output
total 1316
   4 anaconda-ks.cfg     4 Downloads                       180 index.html          0 smart.docx
   4 apache2             4 echo.txt                          4 nano.txt            0 smart.txt
   4 cat.txt             0 file.txt                          4 original-ks.cfg     0 test.txt

2) Список содержимого каталога с сортировкой по размеру

Чтобы перечислить содержимое определенного каталога с сортировкой по размеру, мы будем использовать опции -lSr с командой ls.

$ ls -lSr /run
output
total 24
-rw-------.  1 root root    0 Aug 21 13:18 xtables.lock
-rw-------.  1 root root    0 Aug 21 13:18 ebtables.lock
----------.  1 root root    0 Aug 21 13:18 cron.reboot
-rw-------.  1 root root    3 Aug 21 13:18 syslogd.pid
-rw-r--r--.  1 root root    4 Aug 21 13:18 sshd.pid
-rw-r--r--.  1 root root    4 Sep  9 08:17 dhclient-eth0.pid
-rw-r--r--.  1 root root    4 Aug 21 13:18 crond.pid
-rw-r--r--.  1 root root    4 Aug 21 13:18 auditd.pid
drwxr-xr-x.  2 root root   40 Aug 21 13:18 setrans
drwxr-xr-x.  2 root root   40 Aug 21 13:18 sepermit
drwxr-xr-x.  2 root root   40 Aug 21 13:18 plymouth
drwxrwxr-x.  2 root root   40 Aug 21 13:18 netreport
drwxr-xr-x.  2 root root   40 Aug 21 13:18 mount
drwxr-x---.  2 root root   40 Aug 21 13:18 firewalld
........

3) Сортировка выходных данных и размеров в удобном формате для чтения (например, 1K 48M 1G)

для сортировки выходных данных и размеров  в человекочитаемом формате мы будем использовать -h с командой ls.

$ ls -lSh
output
total 1.3M
-rw-r--r--. 1 root root 1.1M Aug 26 15:45 GeoIP-1.5.0-11.el7.x86_64.rpm
-rw-r--r--. 1 root root 177K Aug 26 15:29 index.html
drwxr-xr-x. 2 root root 4.0K Sep  8 13:32 apache2
drwxr-xr-x. 2 root root 4.0K Sep  8 13:31 Desktop
drwxr-xr-x. 2 root root 4.0K Sep  8 13:32 Documents
drwxr-xr-x. 2 root root 4.0K Sep  8 13:32 Downloads
drwxr-xr-x. 2 root root 4.0K Sep  8 13:32 Pictures
.......

Кроме того, мы можем выводить размеры в читаемом формате для конкретного расширения.

ls -l -S -h *.mp3
ls -l -S -h ~/Downloads/*.mp4 | more

Бонусные советы

4) Список в алфавитном порядке сортировки

Чтобы перечислить содержимое определенного каталога с сортировкой по алфавиту, мы будем использовать команду ls только без опции, потому что по умолчанию используется алфавитная сортировка.

$ ls
output
anaconda-ks.cfg  Desktop    echo.txt   index.html  Pictures  smart.txt
apache2  Documents  f.txt  nano.txt  printf.txt  vim.txt cat.txt
Downloads  GeoIP-1.5.0-11.el7.x86_64.rpm original-ks.cfg  smart.docx  vi.txt

Чтобы перечислить содержимое определенного каталога с подробной информацией, добавьте путь к каталогу.

$ ls -l /run
output
total 24
-rw-r--r--.  1 root root    4 Aug 21 13:18 auditd.pid
drwxr-xr-x.  2 root root   40 Aug 21 13:18 console
-rw-r--r--.  1 root root    4 Aug 21 13:18 crond.pid
----------.  1 root root    0 Aug 21 13:18 cron.reboot
drwxr-xr-x.  2 root root   60 Aug 21 13:18 dbus
-rw-r--r--.  1 root root    4 Sep  9 08:17 dhclient-eth0.pid
-rw-------.  1 root root    0 Aug 21 13:18 ebtables.lock
drwxr-xr-x.  2 root root   40 Aug 21 13:18 faillock
drwxr-x---.  2 root root   40 Aug 21 13:18 firewalld
..........

5) Список в обратном порядке по алфавиту

Чтобы перечислить содержимое определенного каталога с подробными сведениями в обратном порядке сортировки по алфавиту, мы будем использовать опции -lr с командой ls.

$ ls -lr /run
output
total 24
-rw-------.  1 root root    0 Aug 21 13:18 xtables.lock
-rw-rw-r--.  1 root utmp 2304 Sep  8 14:58 utmp
drwxr-xr-x.  3 root root   60 Sep  7 23:11 user
drwxr-xr-x.  7 root root  160 Aug 26 14:59 udev
drwxr-xr-x.  2 root root   60 Aug 21 13:18 tuned
drwxr-xr-x.  2 root root   60 Aug 21 13:18 tmpfiles.d
drwxr-xr-x. 16 root root  400 Aug 21 13:18 systemd
-rw-------.  1 root root    3 Aug 21 13:18 syslogd.pid
drwx--x--x.  3 root root   60 Aug 21 13:18 sudo
-rw-r--r--.  1 root root    4 Aug 21 13:18 sshd.pid
drwxr-xr-x.  2 root root   40 Aug 21 13:18 setrans
drwxr-xr-x.  2 root root   40 Aug 21 13:18 sepermit
drwxr-xr-x.  2 root root   40 Aug 21 13:18 plymouth
.......

6) Список скрытого содержимого каталога в алфавитном порядке сортировки

Чтобы отобразить скрытое содержимое определенного каталога, мы будем использовать опции -a или -all с командой ls.

$ ls -a /etc
  output
  .                        default                  gss             logrotate.d               pm              rsyslog.conf    sysctl.d
  ..                       depmod.d                 host.conf       machine-id                polkit-1        rsyslog.d       systemd
  adjtime                  dhcp                     hostname        magic                     popt.d          rwtab           system-release
  aliases                  DIR_COLORS               hosts           makedumpfile.conf.sample  postfix         rwtab.d         system-release-cpe
  ........

7) Список содержимого каталога в алфавитном порядке сортировки

Чтобы показать содержимое определенного каталога с подробными сведениями, такими как права доступа к файлам, количество ссылок, имя владельца и владельца группы, размер файла, время последней модификации и имя файла / каталога, мы будем использовать -l с командой ls.

$ ls -l /run
output
total 24
-rw-r--r--.  1 root root    4 Aug 21 13:18 auditd.pid
drwxr-xr-x.  2 root root   40 Aug 21 13:18 console
-rw-r--r--.  1 root root    4 Aug 21 13:18 crond.pid
----------.  1 root root    0 Aug 21 13:18 cron.reboot
drwxr-xr-x.  2 root root   60 Aug 21 13:18 dbus
-rw-r--r--.  1 root root    4 Sep  8 12:41 dhclient-eth0.pid
-rw-------.  1 root root    0 Aug 21 13:18 ebtables.lock
drwxr-xr-x.  2 root root   40 Aug 21 13:18 faillock
drwxr-x---.  2 root root   40 Aug 21 13:18 firewalld
drwxr-xr-x.  4 root root  100 Aug 21 13:18 initramfs
drwxr-xr-x.  4 root root  100 Sep  8 03:31 lock
drwxr-xr-x.  3 root root   60 Aug 21 13:18 log
........

Оптимизация изображений Linux

find . -name ‘*.jpg’ | xargs jpegoptim -m85 *.jpg
рекурсивно пройдет по текущему каталогу и всем подкаталогам и применит сжатие

jpegoptim --strip-all --all-progressive -ptm85 *.jpg

Для рекурсивного (во всех вложенных подкаталогах) преобразования запускаем

find -type f -iname "*.jpg" -exec jpegoptim --strip-all --all-progressive -pm85 {} \;

Как использовать команду Grep?

Принадлежащая к семейству Unix команда grep является одним из самых универсальных и полезных инструментов. Эта утилита выполняет поиск в текстовом файле за заданным нами паттерном. Другими словами, с помощью grep вы можете найти необходимое вам слово или значение. А содержащие ваш запрос строки или строка будут выведены в терминал.

На первый взгляд, может показаться, что эта утилита имеет слишком узкое применение. Однако она способна значительно облегчить жизнь системным администраторам, которым приходится обрабатывать множество служб с различными файлами конфигурации. С помощью команды они могут быстро найти необходимые им строки в этих файлах.

Сначала давайте подключимся к VPS с помощью SSH. Вот статья, в которой показано, как это сделать с помощью PuTTY SSH.

ssh vash-user@vash-server

Если на вашем компьютере вы используете Linux, просто откройте терминал.

Синтаксис команды grep при поиске в одном файле выглядит следующим образом:

grep [опции] значение [ФАЙЛ]
  • grep — команда
  • [опции] — модификаторы команды
  • значение — поисковый запрос
  • [ФАЙЛ] — файл, в котором вы выполняете поиск

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

grep –help

Как видите, команда предлагает нам множество опций. Однако наиболее важными и часто используемыми являются параметры:

  • -i — поиск не будет чувствителен к регистру. То есть, если вы хотите найти слово «автомобиль», написанные как «АВТОМОБИЛЬ» слова тоже будут найдены.
  • -c — покажет только количество строк, содержащих поисковый запрос
  • -r — включает рекурсивный поиск в текущем каталоге
  • -n — выведет номера строк, содержащих поисковый запрос
  • -v — обратный поиск, выводит только строки, в которых нет указанного поискового запроса

Полезные примеры Grep

Давайте разберём несколько практических примеров команды grep.

Поиск слова в текстовом файле

Чтобы найти слово в текстовом файле, просто введите команду:

grep запрос файл
  • запрос — слово, которое вы ищете
  • файл — файл, в котором вы ищете слово

В нашем случае мы ищем слово command в файле с именем grep:

grep command grep

В выводе, слова, соответствующие поисковому запросу будут выделены следующим образом:

Найденные с помощью команды Grep слова, віделенніе краснім в терминале Linux

Поиск слово, игнорируя регистр

Для этого необходимо добавить опцию -i.

grep -i запрос файл

Вот и всё!

Количество найденных слов по целевому запросу

Используя эту команду, вы также можете узнать, сколько раз определённое слово используется в текстовом файле. Просто добавьте опцию -c.

grep -c запрос файл

Поиск по нескольким ключевым словам

До сих пор мы искали только одно слово. Однако grep позволяет использовать несколько поисковых запросов в одной команде. Вот как это выглядит:

grep запрос1 файл | grep запрос2 файл

Команда работает очень просто. Сначала мы ищем запрос1, а затем с помощью вертикальной черты и grep продолжаем поиск  второго слова — запрос2.

Поиск слова в нескольких файлах

Также вы можете искать слово в нескольких файлах одновременно с помощью одной команды:

grep -l слово_которое_ищете ./*

Файлы, содержащие слово, которое вы искали, будут выведены в терминал.

Как поменять пароль пользователя в WordPress через базу данных MySQL

Может возникнуть такая ситуация, что вы вдруг забыли пароль от своей учетной записи на сайте запущенным под CMS WordPress, или что еще хуже — вас взломали, и поменяли пароль. Почтовый сервер не отправляет письмо с ссылкой на востановление, а если отправляет, то не вам… Но, если у вас есть доступ к серверу MySQL, где находится используемая база данных сайтом с WordPress, то это не будет проблемой.

В данной статье предполагается, что у вас есть доступ через ssh, и вы знаете логин:пароль пользователя MySQL, который имеет доступ к базе данных вашего сайта на WordPress.

Смена пароля через MySQL

И так, приступим:

  1. Сперва нужно запустить консольный клиент MySQL. Делается это простой командой mysql:
    mysql -p -u имя_пользователя

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

  2. Теперь нужно выбрать нужную базу данных. Предположим, она называется wordpress:
    use wordpress;

    При успешном выполнении команды будет выведено сообщение Database changed.
    Если вы НЕ ЗНАЕТЕ, имя базы, то у вас доступны следующие способы прояснить ситуацию:

    • Посмотреть список баз данных на MySQL сервере, выполним следующую команду:
      show databases;
    • Посмотреть имя базы данных в файле конфига WordPress, который называется wp_config.php и лежит в корневой директории сайта на WordPress:
      cat wp-config.php | grep DB_NAME
  3. Осталось разобраться какому пользователю нужно поменять пароль. Для этого достаточно просто знать адрес электронной почты, или логин. Выполняем в MySQL команду:
    • Для смены пароля пользователя с логином Sysadmin:
      UPDATE `wp_users` SET `user_pass` = MD5('12345678') WHERE `wp_users`.`user_login` = Sysadmin;
    • Для смены пароля пользователю с адресом электронной почты sysadmin@sysadmin.ru:
      UPDATE `wp_users` SET `user_pass` = MD5('12345678') WHERE `wp_users`.`user_email` = sysadmin@sysadmin.ru;

    Как только появится примерно следующее сообщение:

    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1 Changed: 1 Warnings: 0

    То значит пароль пользователя был изменен.

Изменить пароль пользователя MySQL

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

mysql -uroot -p

Чтобы изменить свой пароль, а точнее пароль пользователя под которым выполнена авторизация, в консоли MySQL нужно просто выполнить команду:

SET PASSWORD = PASSWORD('пароль')

Когда необходимо изменить пароль для другого пользователя MySQL, нужно использовать команду:

SET PASSWORD FOR 'mysqluser'@'localhost' = PASSWORD('пароль');
SET PASSWORD FOR 'mysqluser'@'%' = PASSWORD('пароль');

Первая команда отличается от второй тем, что пользователю mysqluser будет разрешена авторизация только с localhost. В плане безопасности это более предпочтительный вариант.

Аналогичное действие можно выполнить с помощью запроса SQL:

UPDATE mysql.user SET Password=PASSWORD('пароль') WHERE User='mysqluser' AND Host='localhost';
FLUSH PRIVILEGES;

В операционных системах на базе Linux посмотреть размер папки (директории) можно с помощью команды du. Эта команда, выполняемая в консоли, позволяет оценить используемый объем места на жестком диске отдельно по папкам и файлам, просуммировать результат, узнать общий размер папки.

Синтаксис

Общий синтаксис команды du следюущий:
du
du имяПапки
du [ключи] имяПапки

Примеры использования

Без передачи каких-либо параметров команда du выводит название и размер каждой папки по текущему пути, при этом включая в вывод все подкаталоги:

du

Пример вывода:

8       ./share/gegl-0.2/plug-ins
12     ./share/gegl-0.2
16     ./share/rhythmbox
56     ./share/icons/hicolor/16x16/apps
60     ./share/icons/hicolor/16x16
208    ./share/icons/hicolor/256x256/apps
212    ./share/icons/hicolor/256x256
64     ./share/icons/hicolor/48x48/apps
68     ./share/icons/hicolor/48x48
56     ./share/icons/hicolor/32x32/apps
60     ./share/icons/hicolor/32x32
404    ./share/icons/hicolor
408    ./share/icons

Для того, чтобы вывести такую же информацию об определенной папке, укажите её при вызове команды, например:

du ~/.local
du /home

Чтобы получить значения размеров папок в более удобном для восприятия формате, а именно в килобайтах (K), мегабайтах (M) или гигабайтах (G) используйте ключ -h:

du -h
du -h /home

Пример вывода:

8.0K    ./.vim
24K    ./scripts
48K    ./.ssh
16K    ./.keychain
2.2M    ./.lftp
2.4M    .

Для того, чтобы узнать общий размер, который занимает определенная папка вызовите команду du с ключем -s:

du -s /home

Пример результатов:

291210112    /home/

Лучше будет запустить команду du с ключами -s и -h совместно:

du -hs /home

Тогда вывод воспринять легче:

278G /home/

Ключ -c используется для подсчета общей суммы размеров папок так:

du -chs /etc /root/

Результат:

56M /etc
62M /root/
118M итого

Другая удобная опция команды du это ключ —max-depth, который задает глубину папок для просмотра. Если задать глубину равной единице, то можно посмотреть общие размеры всех папок по указанному пути. Выполните:

du -h --max-depth=1

Пример результатов работы:

2.9M    ./.nbi
948K    ./.local
104K    ./.gconf
12K    ./.gnome2
4.0K    ./.gnome2_private
44K    ./.filezilla
356K    ./.cache
12K    ./Desktop
4.0K    ./.gvfs
1.2M    ./.gem
12K    ./.dbus
86M    ./.cpan
26M    ./perl5
1.5M    ./.java
80K    ./.config
16K    ./.ssh
4.0K    ./.pulse
165M    .

Ключи команды du

Ключ Действие
-a, —all Вывести размер для всех файлов, а не только папок
—apparent-size Вывести действительные размеры, а не занимаемое на диске место; хотя действительный размер обычно меньше, иногда он может быть больше из-за дыр в файлах, внутренней фрагментации, косвенных блоков и тому подобного
-B, —block-size=РАЗМЕР Выводить результаты в определенных единицах измерения. Например, -BM выводит размеры в единицах, равных 1,048,576 байтам, т.е. в мегабайтах
-b, —bytes Эквивалентно —apparent-size —block-size=1
-c, —total Выводить общий итог
-D, —dereference-args Следовать только по символьным ссылкам, которые перечислены в командной строке
—files0-from=ФАЙЛ Вывести отчёт об использовании диска, чьи имена файлов перечислены в файле ФАЙЛ
-H Эквивалентен ключу —dereference-args (-D)
-h, —human-readable Выводить размеры в удобном для человека виде (например, 1K 234M 2G)
—si Как -h, но используется делитель 1000, а не 1024
-k Синоним —block-size=1K
-l, —count-links Суммировать размеры, если есть несколько жёстких ссылок на один объект
-m Синоним —block-size=1M
-L, —dereference Следовать по символьные ссылки
-P, —no-dereference Не следовать по символьным ссылкам (по умолчанию)
-0, —null Завершать каждую выводимую строку 0-м байтом, а не символом новой строки
-S, —separate-dirs Не включать размер папок
-s, —summarize Выводить размер только для папки, переданной в качестве аргумента
-x, —one-file-system Оставатся в пределах одной файловой системы
-X, —exclude-from=ФАЙЛ Исключать файлы, совпадающие с каким-либо образцом из ФАЙЛА
—exclude=ОБРАЗЕЦ Исключать файлы, соответствующие ОБРАЗЦУ
-d, —max-depth=N Глубина следования по субдиректориям
—time Показывать время последней модификации всех файлов в каталоге или всех его подкаталогов
—help Показать эту справку и выйти
—version Показать информацию о версии программы du

Как удалить все файлы из каталога?

Чтобы удалить все в каталоге, используйте:

rm /path/to/directory/*

Вы можете использовать -r опцию, например:

rm -r /path/to/directory/*

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