Новости:

SMF - Just Installed!

Главное меню

Последние сообщения

#51
Настройки *nix (почта, web, система etc) / Новый диск lvm ubuntu
Последний ответ от George - Май 10, 2023, 03:21
Шаг 1. Проверим, что мы видим новый жесткий диск. Для этого выполним команду:
Код: bash
sudo fdisk –l
.

Тут мы можем увидеть информацию о подключенных дисках и имеющихся на них разделах. Имена новым дискам, присваиваются по умолчанию в алфавитном порядке. В моем случае после добавления диска, появилась информация о диске с именем /dev/sdb.

Шаг 2. Теперь нам необходимо создать новый раздел. Создавать раздел мы будем, через утилиту  fdisk. Для этого укажем название утилиты и имя нашего нового диска:
Код: bash
sudo fdisk /dev/sdb
.

Утилита встречает нас приветственным сообщением, чтобы создать новый раздел на диске укажем в меню ключ n.

Шаг 3. Далее нам надо выбрать тип нового раздела диска: первичный(primary) или логический extended. Выбираем первичный.

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

Шаг 5. На этом шаге нам необходимо указать начало раздела, оставим по умолчанию и нажмем Enter.

Шаг 6. Далее утилита предлагает нам выбрать окончание нового раздела — это необходимо, чтобы задать раздел размера, так же оставляем по умолчанию и нажимаем Enter.

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

После выхода утилита перезапишет таблицу разделов и применит новую разметку диска. Чтобы проверить внесенные изменения, вновь выполним sudo fdisk –l. Появится новый разделом, с именем /dev/sdb1 и размером 40гб.

Шаг 7. Теперь создадим физический том (physical volume), для этого воспользуемся утилитой pvcreate и укажем имя нашего нового раздела:
Код: bash
sudo pvcreate /dev/sdb1
.

Чтобы проверить создание раздела, воспользуемся командой:
Код: bash
sudo pvdisplay
.

Появится новый физический том размером 40гб.

Шаг 8. Добавим новую группу томов (VolumeGroupName), воспользуемся утилитой vgcreate, а группу томов назовем vol и укажем через пробел, физический том. Если томов несколько, то их так же разделяем пробелом. Команда будет выглядеть:
Код: bash
sudo vgcreate vol /dev/sdb1
.

Для проверки воспользуемся командой
Код: bash
vgdisplay
, аналогичной pvdisplay.

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

Шаг 9. На данном шаге наблюдаются небольшие отличия по сравнению c CentOS. Теперь нам осталось создать логический том в существующей группе томов, для этого предназначена утилита lvcreate, чтобы создать логический том, максимального раздела команда будет выглядеть так:
Код: bash
sudo lvcreate —extents 100%FREE —name lvol0 vol
.

Проверять созданный логический раздел будем при помощи команды
Код: bash
lvdisplay
.

Так как мы будем использовать данный логический том для установки программ, то переименуем его из lvol0 в app. За переименование отвечает утилита lvrename, а команда будет выглядеть:

Код: bash
sudo lvrename /dev/vol/lvol0 /dev/vol/app

Шаг 10. Отформатируем наш новый логический раздел, для дальнейшей работы с логическим томом будем использовать файловую систему xfs, а для форматирования утилиту mkfs, таким образом получим команду:
Код: bash
sudo mkfs.xfs –f /dev/vol/app

По окончании появится информацию о отформатированном разделе, размере блоков и прочее.

Шаг 11. Теперь мы можем начать работать с разделом, для этого нам необходимо примонтировать вновь созданный раздел, к любому каталогу, чтобы в дальнейшем не путаться рекомендую создать в корне ОС каталог app. Я его уже создал и монтировать логический раздел буду к данному каталогу. Раздел мы будем монтировать для чтения и записи при помощи утилиты mount, а значит команда будет выглядеть так:
Код: bash
 sudo mount –o,rw /dev/vol/app /app
. После монтирования мы воспользуемся утилитой df с ключом –h, чтобы проверить что наш логический том успешно примонтирован к каталогу.

Шаг 12. К сожалению операция монтирования действует, только до перезагрузки. Для того чтобы наш диск остался примонтирован даже после перезагрузки, нам необходимо внести правки в файл fstab в каталоге etc.

Поэтому откроем файл:
Код: bash
sudo vim /etc/fstab

И добавим следующую строку:

Код: bash
/dev/vol/app            /app                    xfs     defaults        0 0

Далее сохраним файл и перезагрузим систему (выполним команду reboot), после чего вновь проверим, что наш логический том примонтирован к каталогу.

Логический том остался примонтирован, а значит теперь мы можем спокойно устанавливать пакеты или хранить там какие-то файлы. Позднее нам понадобится этот диск и каталог.
#52
Подключаемся к хосту по SSH;
Проверяем наличие утилиты vmkfstools;
Выполняем команду
Код: bash
vmkfstools -i /vmfs/volumes/datastore1/VM1/disk_1.vmdk -d zeroedthick /vmfs/volumes/datastore1/VM1/disk_1_new.vmdk
Ожидаем конвертацию (на диск 10G ушло 5 мин)
Меняем местами в настройках диск с disk_1.vmdk на исправленный disk_1_new.vmdk или просто переименовываем.
Запускаем машину и наслаждаемся работой.

#53
mysql (Mariadb) / Установка, изменение и сброс п...
Последний ответ от George - Апр. 18, 2023, 11:06
mysqladmin -команда, при помощи которой меняется пароль root в MySQL

Метод 1. Установка пароля root в первый раз.
Если вы никогда не устанавливали пароль root в MySQL, сервер не будет требовать пароля root для подключения к вашим базам данных. Чтобы впервые установить пароль MySQL используйте в консоли команду mysqladmin как показано далее:

Код: bash
mysqladmin -u root password newpass

где newpass будет пароль который вы устанавливаете.

Для изменения (обновления) пароля root воспользуйтесь следующей командой:

Код: bash
mysqladmin -u root -p oldpassword newpass

 
где oldpassword — ваш старый пароль, а newpassword соотвественно новый. Если же вы в ответ получили следующее сообщение:

mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: YES)'

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

Изменения пароля MySQL для других пользователей.
Для изменения пароля обычного пользователя введите следующую команду:

Код: bash
mysqladmin -u user-name -p oldpassword newpass

где user-name — имя пользователя для которого вы меняете пароль.

Метод 2 — Обновление или изменение пароля.
MySQL хранит имена пользователей и пароли в таблице пользователей внутри базы данных. Вы можете обновить пароль используя следующий метод:

1. Залогиньтесь в MySQL и введите следующую команду:

Код: bash
mysql -u root -p
2.  Начните работу с базой данных. В качестве приглашения для ввода команд вначале строки у вас должно быть mysql>

mysql> use mysql;

3. Смените пароль пользователя

mysql>
Код: bash
 update user set password=PASSWORD(«newpass») where User='ENTER-USER-NAME-HERE';

4. Перегрузите привелегии и отлогиньтесь

mysql>
Код: bash
flush privileges;
mysql>
Код: bash
 quit

Этот метод применим в случае использования на вашем сервере PHP и скриптов Perl.

Восстановление пароля root в MySQL.
Вы можете восстановить пароль от баз данных MySQL если повторите следующие 5 шагов:

Остановите демон MySQL.
Запустите демон MySQL (mysqld) с опцией —skip-grant-tables, т.к. в этом случае пароль не запрашивается.
Подключитесь к серверу MySQL c root-привелегиями
Введите новый пароль.
Выйдите и перегрузите демон MySQL.
Далее приводятся команды, которые необходимо использовать для каждого шага, при условии, что вы вошли в систему с root-привелегиями.

1. Останавливаем службу MySQL:

Код: bash
/etc/init.d/mysql stop
Stopping MySQL database server: mysqld.

2.  Запускаем службу с опцией —skip-grant-tables

Код: bash
mysqld_safe —skip-grant-tables &

Должен быть следующий вывод:

[1] 5988
Starting mysqld daemon with databases from /var/lib/mysql
mysqld_safe[6025]: started

3.   Подключаемся с серверу MySQL при помощи клиента mysql:

Код: bash
mysql -u root

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.1.15-Debian_1-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>

4. Вводим новый пароль для root:

mysql>
Код: bash
 use mysql;
mysql>
Код: bash
update user set password=PASSWORD(«NEW-ROOT-PASSWORD») where User='root';
mysql>
Код: bash
flush privileges;
mysql>
Код: bash
quit

5. Останавливаем сервер MySQL:

Код: bash
/etc/init.d/mysql stop

Stopping MySQL database server: mysqld
STOPPING server from pid file /var/run/mysqld/mysqld.pid
mysqld_safe[6186]: ended
[1]+  Done mysqld_safe —skip-grant-table

Запускаем MySQL-сервер и логинимся с новым паролем:

Код: bash
/etc/init.d/mysql start
Код: bash
mysql -u root -p
#54
#55
appwiz.cpl - Установка и удаление программ
certmgr.msc - Сертификаты
ciаdv.msc - Служба индексирования
cliconfg - Программа сетевого клиента SQL
clipbrd - Буфер обмена
compmgmt.msc - Управление компьютером
dcomcnfg - Консоль управления DCOM компонентами
ddeshare - Общие ресурсы DDE (на Win7 не работает)
desk.cpl - Свойства экрана
devmgmt.msc — Диспетчер устройств
dfrg.msc - Дефрагментация дисков
diskmgmt.msc - Управление дисками
drwtsn32 - Dr.Watson
dxdiag - Служба диагностики DirectX
eudcedit - Редактор личных символов
eventvwr.msc - Просмотр событий
firewall.cpl - настройки файерволла Windows
gpedit.msc - Груповая политика
fsmgmt.msc - Общие папки
fsquirt - Мастер передачи файлов Bluetooth
chkdsk - Проверка дисков (обычно запускается с параметрами буква_диска: /f /x /r)
control printers - Принтеры и факсы - запускается не всегда
control admintools - Администрирование компьютера - запускается не всегда
control schedtasks - Назначенные задания (планировщик)
control userpasswords2 - Управление учётными записями
compmgmt.msc - Управление компьютером (compmgmt.msc /computer=pc - удаленное управление компьютером pc)
lusrmgr.msc - Локальные пользователи и группы
mmc— создание своей оснастки
mrt.exe - Удаление вредоносных программ
msconfig - Настройка системы (автозапуск, службы)
mstsc - Подключение к удаленному рабочему столу
cleanmgr - Очистка диска
ncpa.cpl - Сетевые подключения
#56
Сетевое оборудование / Проброс портов ASA
Последний ответ от George - Апр. 09, 2023, 12:11
Код: bash
object network Internal_RDP_Server-1
Код: bash
 host 192.168.1.1
Код: bash
 nat (inside,outside) static interface service tcp 3389 -входящий порт-
Код: bash
 object network Internal_RDP_Server-2
Код: bash
 host 192.168.1.2
Код: bash
 nat (inside,outside) static interface service tcp 3389 -входящий порт-
Код: bash
 access-list inbound permit tcp any object Internal_RDP_Server-1 eq 3389
Код: bash
 access-list inbound permit tcp any object Internal_RDP_Server-2 eq 3389

Код: bash
 access-group inbound in interface outside 
#57
Upgrading VMware to ESXi 6.5 on HP G7 Servers will crash and cause you to scream and will require you to waste your time building a custom ISO that HPE could have easily done.
Best practice is to use the vendor's custom ISO's that have the hardware drivers integrated, so I used HPE's latest Custom ISO.

HPE G7 Server support is being dropped by both HPE and VMware. In fact, vSphere 6.5 is supposedly the last version that will support the G7s. Knowing this info, I assumed upgrading from ESXi 6.0 to 6.5 on G7 would work, but I found out quickly that after the upgrade the hosts would "Purple Screen of Death" (PSOD) right after boot.

The Error: "PF Exception 14 in world 67667:sfcb-smx IP 0x0 addr 0x0″


The Issue: There are incompatible driver(s) in the customized ISO from HPE. Yes, there are more than one driver with issues.

The Workarounds: There are various workarounds that I have personally found to work, while others have been resolutions I have read about after I dealt with this, so I was not able to verify that they do indeed work, but I will list them nevertheless. Upgrading the firmware, BIOS, etc did not resolve the issue.
Note: All these workaround require a fresh install of ESXi. Running an Upgrade does not remove the incompatible drivers, and the host doesn't stay alive long enough before crashing to manually remove them via SSH.

Solution 1: Use VMware's Standard ISO Media
While this goes against many best practices, VMware doesnt offer too many vendor drivers in their ISO builds, so the offending drivers do not get installed and crash the system. While you can certainly use this method, you will want to follow-up and manually install the appropriate driver VIBs from HPE.

Solution 2: Build your own Custom ISO
This takes a bit more work, but is probably the most comprehensive path to resolution. You will basically need to remove drivers from the HPE Customized 6.5 ISO and inject those from the 6.0 ISO. The following are instructions on doing this.

Create Custom VMware ESXi Media
Prerequisites:
Download and install vSphere PowerCLI if you don't already have it.
Download HPE 6.5:  HPE Custom Image for VMware ESXi 6.5b Offline Bundle
VMware-ESXi-6.5.0-OS-Release-5146846-HPE-650.9.6.5.27-May2017-depot.zip
Download 6.0: HPE Custom Image for VMware ESXi 6.0 U3 Offline Bundle
VMware-ESXi-6.0.0-Update3-5050593-HPE-600.9.7.0.17-Feb2017-depot.zip
I renamed each .Zip file to "HPE-6_5.zip" and "HPE-6_0.zip" respectively to make things easier
Instructions:
Launch vSphere PowerCLI


Add the HP ESXi 6.5 image bundle
Код: bash
Add-EsxSoftwareDepot -DepotUrl C:\ESXi\HPE-6_5.zip


Check the Profile
Код: bash
Get-EsxImageProfile


Copy the Profile
Код: bash
New-EsxImageProfile -CloneProfile HPE-ESXi-6.5.0-OS-Release-6* -Name "G7-ESXi"

Use "HPE Custom" for Vendor

Check the Profile
Код: bash
Get-EsxImageProfile


Remove the driver from the image
Код: bash
Remove-EsxSoftwarePackage G7-ESXi hpe-smx-provider


Add the HP ESXi 6.0 image bundle
Код: bash
Add-EsxSoftwareDepot -DepotUrl C:\ESXi\HPE-6_0.zip

Check the Profile
Код: bash
Get-EsxImageProfile


View both drivers in the two bundles
Код: bash
Get-EsxSoftwarePackage | findstr smx
Add the necessary driver into the custom build
Код: bash
add-esxsoftwarepackage -imageprofile G7-ESXi -softwarepackage "hpe-smx-provider 600.03.11.00.9-2768847"


Convert your custom bundle to ISO
Код: bash
Export-EsxImageProfile -ImageProfile G7-ESXi -ExportToIso -filepath "C:\ESXi\G7-ESXi.iso"


Now take that ISO file that was created and use it to do a FRESH INSTALL. (Remember, upgrade will not work).

Оригинал:
https://www.virtualmvp.com/hpe-proliant-g7-servers-and-vsphere-6-5-purple-screen-of-death/
#58
mysql (Mariadb) / How to install MariaDB Databas...
Последний ответ от George - Март 30, 2023, 01:52
Update CentOS 8 Software Packages:
Connect to mariadb-01.centlinux.com as root user by using a ssh tool.

It is a best practice to always update the Linux software packages before installing anything new.

#
Код: bash
dnf update -y
Last metadata expiration check: 0:02:32 ago on Fri 29 May 2020 01:43:09 PM PKT.
Dependencies resolved.
Nothing to do.
Complete!
Our Linux machine is already up-to-date.

 

Install MariaDB Yum Repository in CentOS 8:
MariaDB Server 10.5.3 is the latest release therefore it is not available in CentOS 8 yum repositories.

MariaDB provides an official yum repository, that we can use to install MariaDB Server 10.5 on CentOS 8.

Create a yum repository file as follows.

#
Код: bash
vi /etc/yum.repos.d/MariaDB.repo
Add following directives in this file.

Код: bash
# MariaDB 10.5 CentOS repository list - created 2020-05-29 08:37 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5/centos8-amd64
module_hotfixes=1
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
Build cache for MariaDB yum repository.

#
Код: bash
dnf makecache
CentOS-8 - AppStream                            7.8 kB/s | 4.3 kB     00:00
CentOS-8 - Base                                 292  B/s | 3.9 kB     00:13
CentOS-8 - Extras                               3.7 kB/s | 1.5 kB     00:00
MariaDB                                         164 kB/s | 512 kB     00:03
Metadata cache created.
 

Install MariaDB Server 10.5 on CentOS 8:
We have added the MariaDB yum repository, now we can easily install MariaDB Server using dnf command.

#
Код: bash
dnf install -y MariaDB-server
...
Two all-privilege accounts were created.
One is root@localhost, it has no password, but you need to
be system 'root' user to connect. Use, for example, sudo mysql
The second is mysql@localhost, it has no password either, but
you need to be the system 'mysql' user to connect.
After connecting you can set the password, if you would need to be
able to connect as any of these users with a password and without sudo

See the MariaDB Knowledgebase at https://mariadb.com/kb or the
MySQL manual for more instructions.

Please report any problems at https://mariadb.org/jira

The latest information about MariaDB is available at https://mariadb.org/.
You can find additional information about the MySQL part at:
https://dev.mysql.com
Consider joining MariaDB's strong and vibrant community:
https://mariadb.org/get-involved/
...
  MariaDB-shared-10.5.3-1.el8.x86_64
  galera-4-26.4.4-1.rhel8.0.el8.x86_64

Complete!
Enable and start MariaDB service.

#
Код: bash
systemctl enable --now mariadb.service
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service â /usr/lib/systemd/system/mariadb.service.
Verify the status for MariaDB service.

#
Код: bash
systemctl status mariadb.service
â mariadb.service - MariaDB 10.5.3 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor pre>
  Drop-In: /etc/systemd/system/mariadb.service.d
           ââmigrated-from-my.cnf-settings.conf
   Active: active (running) since Fri 2020-05-29 13:59:04 PKT; 12s ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
  Process: 12496 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_ST>
  Process: 12475 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && V>
  Process: 12473 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_STA>
 Main PID: 12485 (mysqld)
   Status: "Taking your SQL requests now..."
    Tasks: 11 (limit: 5916)
   Memory: 75.8M
   CGroup: /system.slice/mariadb.service
           ââ12485 /usr/sbin/mysqld

May 29 13:59:04 mariadb-01.centlinux.com mysqld[12485]: 2020-05-29 13:59:04 0 [>
May 29 13:59:04 mariadb-01.centlinux.com mysqld[12485]: 2020-05-29 13:59:04 0 [>
As mentioned in the installation output,

Linux root user can connect to MariaDB server as MariaDB root user without any password
Linux mysql user can connect to MariaDB server as MariaDB mysql user without any password
Also no other Linux user is allowed to login as MariaDB root or mysql users.

To allow the other Linux users to login as root or mysql user we need to set the password for these database users.

Connect with MariaDB server by using new mariadb command.

#
Код: bash
mariadb -u root
ЦитироватьWelcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 10.5.3-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>
Set strong passwords for root and mysql users.

MariaDB [(none)]> alter user 'root'@'localhost' identified by 'Ahmer@1234';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> alter user 'mysql'@'localhost' identified by 'Ahmer@1234';
Query OK, 0 rows affected (0.001 sec)
Reload the privileges tables.

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.001 sec)
List available databases in MariaDB server.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.001 sec)
Exit from MariaDB Shell.

MariaDB [(none)]> exit
Bye
Our MariaDB Server 10.5 has been installed successfully.

 

Configure Database Security for MariaDB Server:
We can optionally remove the test databases and restrict the remote logins by root user.

For this purpose, we can use new mariadb-secure-installation command.

# mariadb-secure-installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] n
 ... skipping.

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] n
 ... skipping.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!
We have successfully installed and configured MariaDB Server 10.5 on CentOS 8.
#59
Водите
login: root
password: zabbix
Смотрим список доступных локалей в системе CENTOS 8.
# localectl list-locales
Потом активную locale:
# localectl
   System Locale: LANG=en_US.UTF-8
       VC Keymap: us
      X11 Layout: us
Добавляем русский язык командой:
# dnf install glibc-langpack-ru
Соглашаемся с установкой пакета.
После этого надо перезапустить сервер на CENTOS 8.
# reboot
После этого смотрите, что получилось:
# localectl
   System Locale: LANG=ru_RU.utf8
       VC Keymap: ru
      X11 Layout: ru
Мы установили и активировали русский язык в ZABBIX 5.2.2 на CENTOS 8.
После снова переходим в профиль настройки ZABBIX  и наблюдаем при раскрытии настройки Language успешно установленную в систему локаль русского (Russian (ru_RU))

Выбираем Russian (ru_RU) и нажимаем Update (для принятия изменений), изменения о смене языка интерфейса применяться сразу же, в результате интерфейс управления ZABBIX изменится на русский
#60
Настройки *nix (почта, web, система etc) / TAIL команда
Последний ответ от George - Фев. 21, 2023, 02:58
Все знают о команде cat, которая используется для просмотра содержимого файлов. Но в некоторых случаях вам не нужно смотреть весь файл, иногда достаточно посмотреть только то, что находится в конце файла. Например, когда вы хотите посмотреть содержимое лог файла, то вам не нужно то, с чего он начинается, вам будет достаточно последних сообщений об ошибках.


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

Содержание статьи:

Команда tail в Linux
Использование tail
Выводы
Команда tail в Linux
Перед тем как мы будем рассматривать примеры tail linux, давайте разберем ее синтаксис и опции. А синтаксис очень прост:

$ tail опции файл

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

-c - выводить указанное количество байт с конца файла;
-f - обновлять информацию по мере появления новых строк в файле;
-n - выводить указанное количество строк из конца файла;
--pid - используется с опцией -f, позволяет завершить работу утилиты, когда завершится указанный процесс;
-q - не выводить имена файлов;
--retry - повторять попытки открыть файл, если он недоступен;
-v - выводить подробную информацию о файле;
В качестве значения параметра -c можно использовать число с приставкой b, kB, K, MB, M, GB, G T, P, E, Z, Y. Еще есть одно замечание по поводу имен файлов. По умолчанию утилита не отслеживает изменение имен, но вы можете указать что нужно отслеживать файл по дескриптору, подробнее в примерах.

Использование tail
Теперь, когда вы знаете основные опции, рассмотрим приемы работы с утилитой. Самый простой пример - выводим последние десять строк файла:

 
Код: bash
tail /var/log/syslog



 

Если вам недостаточно 10 строк и нужно намного больше, то вы можете увеличить этот параметр с помощью опции -n:

 
Код: bash
tail -n 100 /var/log/syslog



Когда вы хотите отслеживать появление новых строк в файле, добавьте опцию -f:


 
Код: bash
tail -f /var/log/syslog



Вы можете открыть несколько файлов одновременно, просто перечислив их в параметрах:

Код: bash
 tail /var/log/syslog /var/log/Xorg.0.log



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

Код: bash
 tail -f -s 5 /var/log/syslog



При открытии нескольких файлов будет выводиться имя файла перед участком кода. Если вы хотите убрать этот заголовок, добавьте опцию -q:

Код: bash
 tail -q var/log/syslog /var/log/Xorg.0.log



Если вас интересует не число строк, а именно число байт, то вы можете их указать с помощью опции -c:

Код: bash
 tail -c 500 /var/log/syslog



Для удобства, вы можете выбирать не все строки, а отфильтровать интересующие вас:

Код: bash
 tail -f /var/log/syslog | grep err


Особенно, это полезно при анализе логов веб сервера или поиске ошибок в реальном времени. Если файл не открывается, вы можете использовать опцию retry чтобы повторять попытки:

Код: bash
 tail -f --retry /var/log/syslog | grep err

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

Код: bash
 tail --follow=descriptor /var/log/syslog | grep err


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

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