9 практически примера за опашка команда в Linux

Сподели

Като потребители на Linux, ние често работим с дълготрайни фонови Linux процеси, които се наричат ​​демони или услуги. Някои от често срещаните примери за услугите са Secure Shell (sshd), Network Manager (networkd), Volume Manager (LVM), Cron и списъкът продължава.

Много пъти трябва да наблюдаваме регистрационните файлове на тези услуги, за да отстраним системните проблеми. Едно от основните предизвикателства обаче е, че тези услуги генерират много регистрационни файлове и през повечето време преминаването през тези регистрационни файлове го прави тромаво, това е мястото, където можем да използваме команда за опашка.

командата tail е помощна програма от командния ред, подобна на командата head, която чете файл и отпечатва последните 10 реда (съдържание) на един или повече файлове към стандартен изход.

В това практическо ръководство ще научим за командата tail. До края на това ръководство потребителите на командния ред на Linux ще могат да използват ефективно командата tail.

Синтаксис на командата tail

Синтаксисът на опашка командата е подобна на другите Linux команди:

$ tail [OPTIONS] [FILE-1] [FILE-2] ...

1. Отпечатайте последните 10 реда от файл в Linux

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

$ tail /var/log/secure


Apr  2 14:17:24 Zamunda.info sshd[201178]: Disconnected from user tecmint 192.168.0.162 port 59774
Apr  2 14:17:24 Zamunda.info sshd[201165]: pam_unix(sshd:session): session closed for user tecmint
Apr  2 14:29:12 Zamunda.info sshd[201366]: Accepted password for tecmint from 192.168.0.162 port 56378 ssh2
Apr  2 14:29:12 Zamunda.info systemd[201371]: pam_unix(systemd-user:session): session opened for user tecmint(uid=1002) by (uid=0)
Apr  2 14:29:12 Zamunda.info sshd[201366]: pam_unix(sshd:session): session opened for user tecmint(uid=1002) by (uid=0)
Apr  2 14:29:12 Zamunda.info sshd[201382]: Received disconnect from 192.168.0.162 port 56378:11: disconnected by user
Apr  2 14:29:12 Zamunda.info sshd[201382]: Disconnected from user tecmint 192.168.0.162 port 56378
Apr  2 14:29:12 Zamunda.info sshd[201366]: pam_unix(sshd:session): session closed for user tecmint
Apr  2 15:12:55 Zamunda.info sshd[202049]: Accepted password for root from 192.168.0.162 port 53334 ssh2
Apr  2 15:12:55 Zamunda.info sshd[202049]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)

Тук можем да видим, че горната команда показва последните десет реда от /var/log/secure файл.

2. Отпечатайте последните N реда от файл в Linux

В последния пример командата отпечатва последните 10 реда от дадения файл. Въпреки това можем да използваме -n опция, която ни позволява да ограничим броя на редовете, които да бъдат отпечатани на екрана, както е показано.

$ tail -n 3 /var/log/secure

Apr  2 14:29:12 Zamunda.info sshd[201366]: pam_unix(sshd:session): session closed for user tecmint
Apr  2 15:12:55 Zamunda.info sshd[202049]: Accepted password for root from 192.168.0.162 port 53334 ssh2
Apr  2 15:12:55 Zamunda.info sshd[202049]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)

В този пример можем да видим, че сега командата показва само последните три реда вместо десетте реда.

3. Игнорирайте първите N реда на файл в Linux

Тук можем да използваме плюса (+) символ с -n опция, която ни позволява да контролираме началната точка от дадения файл.

За да разберем това, нека използваме +5 стойност за започване на изхода от 5-ти ред:

$ tail -n +5 /var/log/secure

Apr  2 14:17:24 Zamunda.info sshd[201178]: Disconnected from user tecmint 192.168.0.162 port 59774
Apr  2 14:17:24 Zamunda.info sshd[201165]: pam_unix(sshd:session): session closed for user tecmint
Apr  2 14:29:12 Zamunda.info sshd[201366]: Accepted password for tecmint from 192.168.0.162 port 56378 ssh2
Apr  2 14:29:12 Zamunda.info systemd[201371]: pam_unix(systemd-user:session): session opened for user tecmint(uid=1002) by (uid=0)
Apr  2 14:29:12 Zamunda.info sshd[201366]: pam_unix(sshd:session): session opened for user tecmint(uid=1002) by (uid=0)
Apr  2 14:29:12 Zamunda.info sshd[201382]: Received disconnect from 192.168.0.162 port 56378:11: disconnected by user
Apr  2 14:29:12 Zamunda.info sshd[201382]: Disconnected from user tecmint 192.168.0.162 port 56378
Apr  2 14:29:12 Zamunda.info sshd[201366]: pam_unix(sshd:session): session closed for user tecmint
Apr  2 15:12:55 Zamunda.info sshd[202049]: Accepted password for root from 192.168.0.162 port 53334 ssh2
Apr  2 15:12:55 Zamunda.info sshd[202049]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)

4. Показване на последните N знака от файла

Подобно на редовете, можем също да използваме командата за показване на последния N символи на файла, използвайки -c опция, както е показано по-долу:

$ tail -c 7 /var/log/secure

(uid=0)

В този пример можем да видим, че командата показва последните седем ASCII символи на дадения файл.

5. Премахнете първите N знака от файла

По подобен начин можем да използваме символа плюс (+) с -c опция за пропускане на първия N характер. Така че нека пропуснем първия ред на файла, като използваме командата по-долу:

$ tail -c +5 /var/log/secure

Apr  2 03:02:59 Zamunda.info sudo[162801]: root : TTY=pts/2 ; PWD=/root ; USER=root ; COMMAND=/bin/dnf install R
Apr  2 03:02:59 Zamunda.info sudo[162801]: pam_unix(sudo:session): session opened for user root(uid=0) by root(uid=0)
Apr  2 03:03:02 Zamunda.info sudo[162801]: pam_unix(sudo:session): session closed for user root
Apr  2 03:11:17 Zamunda.info groupadd[163602]: group added to /etc/group: name=avahi, GID=70
Apr  2 03:11:18 Zamunda.info groupadd[163602]: group added to /etc/gshadow: name=avahi
Apr  2 03:11:18 Zamunda.info groupadd[163602]: new group: name=avahi, GID=70
Apr  2 03:11:19 Zamunda.info useradd[163610]: new user: name=avahi, UID=70, GID=70, home=/var/run/avahi-daemon, shell=/sbin/nologin, from=none
Apr  2 03:13:41 Zamunda.info groupadd[163704]: group added to /etc/group: name=colord, GID=986
Apr  2 03:13:41 Zamunda.info groupadd[163704]: group added to /etc/gshadow: name=colord

Тук можем да видим, че командата показва всички редове с изключение на първия ред.

6. Показване на името на файла в заглавката

Можем да инструктираме опашка команда за показване на текущото име на файл като заглавка на дисплея, което е полезно при работа с множество файлове.

Така че, нека използваме -v опция за активиране на заглавката на дисплея:

$ tail -n 3 -v /var/log/secure

==>/var/log/secure <==
Apr  2 14:29:12 Zamunda.info sshd[201366]: pam_unix(sshd:session): session closed for user tecmint
Apr  2 15:12:55 Zamunda.info sshd[202049]: Accepted password for root from 192.168.0.162 port 53334 ssh2
Apr  2 15:12:55 Zamunda.info sshd[202049]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)

В горния резултат, ==> /var/log/secure <== представлява заглавката на дисплея.

7. Показване на името на файла като заглавка в множество файлове

Точно като всяка друга команда за обработка на файлове, можем също да използваме множество файлове с опашка команда. В такива случаи заглавката на дисплея се използва за разделяне на съдържанието на файла.

$ tail -n 3 -v /var/log/secure /var/log/secure-20230402

==> /var/log/secure <==
Apr  2 14:29:12 Zamunda.info sshd[201366]: pam_unix(sshd:session): session closed for user tecmint
Apr  2 15:12:55 Zamunda.info sshd[202049]: Accepted password for root from 192.168.0.162 port 53334 ssh2
Apr  2 15:12:55 Zamunda.info sshd[202049]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)

==> /var/log/secure-20230402 <==
Mar 31 03:50:53 Zamunda.info groupadd[156163]: new group: name=docker, GID=987
Mar 31 04:46:11 Zamunda.info sshd[159403]: Accepted password for root from 192.168.0.162 port 46480 ssh2
Mar 31 04:46:11 Zamunda.info sshd[159403]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)

В горния изход можем да видим заглавката на дисплея за всеки файл.

8. Как да деактивирате показването на заглавката във файла

В предишния пример видяхме, че командата активира заглавката на дисплея, докато работите с множество файлове. Въпреки това можем да потиснем това поведение по подразбиране с помощта на -q опция.

$ tail -q -n 3 /var/log/secure /var/log/secure-20230402

Apr  2 14:29:12 Zamunda.info sshd[201366]: pam_unix(sshd:session): session closed for user tecmint
Apr  2 15:12:55 Zamunda.info sshd[202049]: Accepted password for root from 192.168.0.162 port 53334 ssh2
Apr  2 15:12:55 Zamunda.info sshd[202049]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)
Mar 31 03:50:53 Zamunda.info groupadd[156163]: new group: name=docker, GID=987
Mar 31 04:46:11 Zamunda.info sshd[159403]: Accepted password for root from 192.168.0.162 port 46480 ssh2
Mar 31 04:46:11 Zamunda.info sshd[159403]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)

Тук можем да видим, че сега командата показва съдържанието на файла едно след друго без заглавка на дисплея.

9. Как да наблюдавате файл за промени

Досега видяхме, че командата tail излиза, след като обработи необходимия брой редове или знаци. Понякога обаче искаме да видим и новогенерираните регистрационни файлове.

В такива случаи можем да използваме -f опция с командата, която ни позволява да наблюдаваме файла за промени в реално време.

За да разберем това, първо, нека изпълним командата по-долу в първия терминал:

$ tail -f /var/log/messages


Apr  2 15:13:28 Zamunda.info NetworkManager[741]:   [1680462808.8441] policy: set-hostname: current hostname was changed outside NetworkManager: 'Zamunda.info'
Apr  2 15:13:28 Zamunda.info systemd[1]: Starting Network Manager Script Dispatcher Service...
Apr  2 15:13:28 Zamunda.info systemd[1]: Started Network Manager Script Dispatcher Service.
Apr  2 15:13:37 Zamunda.info arpwatch[11001]: rename arp.dat -> arp.dat-: Operation not permitted
Apr  2 15:13:38 Zamunda.info systemd[1]: NetworkManager-dispatcher.service: Deactivated successfully.
Apr  2 15:13:58 Zamunda.info systemd[1]: systemd-hostnamed.service: Deactivated successfully.
Apr  2 15:18:03 Zamunda.info systemd[1]: Starting dnf makecache...
Apr  2 15:18:03 Zamunda.info dnf[202235]: Metadata cache refreshed recently.
Apr  2 15:18:03 Zamunda.info systemd[1]: dnf-makecache.service: Deactivated successfully.
Apr  2 15:18:03 Zamunda.info systemd[1]: Finished dnf makecache.

Тук можем да видим, че командата чака безкрайно след показване на последните десет реда:

След това нека отворим друг терминал и да добавим текст към числа-2.txt файл:

$ echo "View Logs in Real-Time" >> /var/log/messages

Сега нека преминем към първия терминал, за да видим новодобавения текст:

$ tail -f /var/log/messages

Apr  2 15:13:28 Zamunda.info NetworkManager[741]:   [1680462808.8441] policy: set-hostname: current hostname was changed outside NetworkManager: 'Zamunda.info'
Apr  2 15:13:28 Zamunda.info systemd[1]: Starting Network Manager Script Dispatcher Service...
Apr  2 15:13:28 Zamunda.info systemd[1]: Started Network Manager Script Dispatcher Service.
Apr  2 15:13:37 Zamunda.info arpwatch[11001]: rename arp.dat -> arp.dat-: Operation not permitted
Apr  2 15:13:38 Zamunda.info systemd[1]: NetworkManager-dispatcher.service: Deactivated successfully.
Apr  2 15:13:58 Zamunda.info systemd[1]: systemd-hostnamed.service: Deactivated successfully.
Apr  2 15:18:03 Zamunda.info systemd[1]: Starting dnf makecache...
Apr  2 15:18:03 Zamunda.info dnf[202235]: Metadata cache refreshed recently.
Apr  2 15:18:03 Zamunda.info systemd[1]: dnf-makecache.service: Deactivated successfully.
Apr  2 15:18:03 Zamunda.info systemd[1]: Finished dnf makecache.
View Logs in Real-Time

Тук можем да видим, че командата tail показва новодобавения текст.

Знаете ли за някой друг най-добър пример за командата tail в Linux? Кажете ни вашето мнение в коментарите по-долу.

Публикациите се превеждат автоматично с google translate

Loading


Сподели