20 команд Linux для системного адміністратора

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

Ваша робота як системного адміністратора включає встановлення та запуск програмного забезпечення, контроль доступу, моніторинг, забезпечення доступності, резервне копіювання, відновлення резервних копій і, звичайно, пожежогасіння. 😜

У цій статті ми розглядаємо деякі команди, які часто використовують системні адміністратори Linux у своїй щоденній роботі.

uname

Використовуйте команду uname з прапорцем -a для друку системної інформації. Ця команда покаже вам назву ядра, випуск ядра, версію ядра, ім’я хоста, тип процесора та інформацію про вашу апаратну платформу.

[email protected]:~$ uname -a
Linux ubuntu18 5.3.0-1028-azure #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

Ось що це означає:

kernel name:Linux 
hostname: ubuntu18 
kernel release: 5.3.0-1028-azure 
kernel version: #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020 
machine hardware name: x86_64 
processor: x86_64 
hardware-platform: x86_64 
operating system: GNU/Linux

df

Використовуйте команду df, щоб перевірити розмір файлової системи та доступний простір. Ця команда, яка використовується сама по собі, показує вивід у блоках по 1K.

[email protected]:~$ df 
Filesystem     1K-blocks    Used Available Use% Mounted on
udev              437208       0    437208   0% /dev
tmpfs              91100     692     90408   1% /run
/dev/sda1       30309264 2383952  27908928   8% /
....

Опція -h показує вихідні дані у форматі, зрозумілому людині, тобто в МБ і ГБ.

[email protected]:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            427M     0  427M   0% /dev
tmpfs            89M  692K   89M   1% /run
/dev/sda1        29G  2.3G   27G   8% /
tmpfs           445M     0  445M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           445M     0  445M   0% /sys/fs/cgroup
/dev/sda15      105M  3.6M  101M   4% /boot/efi
/dev/sdb1       3.9G   16M  3.7G   1% /mnt
tmpfs            89M     0   89M   0% /run/user/1001 

Щоб ігнорувати будь-яку файлову систему, наприклад, tmpfs, тобто для чистішого виведення, використовуйте прапорець -x

[email protected]:~$ df -h -x tmpfs
Filesystem      Size  Used Avail Use% Mounted on
udev            427M     0  427M   0% /dev
/dev/sda1        29G  2.3G   27G   8% /
/dev/sda15      105M  3.6M  101M   4% /boot/efi
/dev/sdb1       3.9G   16M  3.7G   1% /mnt

Щоб перерахувати лише певний тип файлової системи, використовуйте прапорець -t. наприклад, щоб переглянути лише файлову систему ext4:

[email protected]:~$ df -h -t ext4
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        29G  2.3G   27G   8% /
/dev/sdb1       3.9G   16M  3.7G   1% /mnt

Використання прапорця підсумку додасть рядок із загальними підсумками:

[email protected]:~$ df -h -t ext4 --total
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        29G  2.3G   27G   8% /
/dev/sdb1       3.9G   16M  3.7G   1% /mnt
<b>total            33G  2.3G   31G   8% -</b>

ду

Щоб перевірити використання дискового простору в каталозі, скористайтеся командою du. Наприклад, щоб побачити використання дискового простору в каталозі /var/log. Використовуйте прапорець -h для читабельного формату.

[email protected]:~$ sudo du -h /var/log
24K	/var/log/Microsoft/Azure/NetworkWatcherAgent/Logs
28K	/var/log/Microsoft/Azure/NetworkWatcherAgent
32K	/var/log/Microsoft/Azure
36K	/var/log/Microsoft
60K	/var/log/apt
4.0K	/var/log/samba
177M	/var/log/journal/0f4f926f583b4691af7de11025b19ff6
177M	/var/log/journal
...
204M	/var/log

Щоб побачити лише загальне використання, використовуйте прапорець -s (підсумок).

[email protected]:~$ sudo du -hs /var/log
204M	/var/log

безкоштовно

Використовуйте команду free, щоб переглянути загальну, використану та вільну системну пам’ять. Використовуйте прапорець -h для читабельного формату.

ubuntu[email protected]:~$ free -h
              total        used        free      shared  buff/cache   available
Mem:           889M        272M        100M        712K        517M        443M
Swap:            0B          0B          0B
total - Total installed memory (memtotal + swaptotal)
used - used memory
free - unused memory (memfree + swapfree)
buffers - memory used by kernel buffers
cache - memory used by page caches
buff/cache - sum of buffers and cache
available - Estimated memory available for starting new applications, without swapping

ps

Використовуйте ps для відображення інформації про стан процесів, що виконуються в системі. Щоб побачити всі процеси, якими володіє користувач ubuntu, використовуйте прапорець -u з іменем користувача:

[email protected]:~$ ps -u ubuntu
   PID TTY          TIME CMD
  7804 ?        00:00:00 systemd
  7805 ?        00:00:00 (sd-pam)
  7940 ?        00:00:00 sshd
  7941 pts/0    00:00:00 bash
  8111 ?        00:00:00 sshd
  8112 pts/1    00:00:00 bash
 13868 ?        00:00:00 sshd
 13869 pts/2    00:00:00 bash
 13885 pts/0    00:00:00 man
 13895 pts/0    00:00:00 pager
 18111 pts/2    00:00:00 man
 18121 pts/2    00:00:00 pager
 18485 pts/1    00:00:00 ps

Щоб переглянути всі процеси, запустіть ps із допоміжними прапорцями:

[email protected]:~$ ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.7 160076  7020 ?        Ss   Jun29   0:34 /sbin/init
root          2  0.0  0.0      0     0 ?        S    Jun29   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        I<   Jun29   0:00 [rcu_gp]
root          4  0.0  0.0      0     0 ?        I<   Jun29   0:00 [rcu_par_gp]
root          6  0.0  0.0      0     0 ?        I<   Jun29   0:00 [kworker/0:0H-kb]
....

де

Заголовок
Значення
PID
Ідентифікаційний номер процесу
%ЦП
Відсоток процесорного часу, який використовує процес
%MEM
Процес використовує відсоток оперативної пам’яті
ВСЗ
Використовується віртуальна пам’ять у КБ
RSS
Фізична пам’ять, яку використовує процес у КБ
TTY
Термінал, пов’язаний з процесом
STAT
R – Запущено або готовий до запуску, S – Сплячий режим, I – Неактивний, T – Зупинений, Z – Зомбі, D – Очікування дискового вводу/виводу, X – Не працює, W – Замінено, N – Процес з низьким пріоритетом, < – Процес високого пріоритету

зверху

Тоді як команда ps показує знімок стану процесів у будь-який момент, top показує безперервно оновлюваний (кожні три секунди, за замовчуванням) список системних процесів у порядку активності процесу.

Верхній вихід команди складається з двох основних частин: системного підсумку вгорі та таблиці процесів, упорядкованих за активністю ЦП.

top - 14:25:32 up 44 days, 11:37,  1 user,  load average: 0.00, 0.00, 0.00
Tasks: 114 total,   1 running,  59 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.0 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   910992 total,   101208 free,   274712 used,   535072 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   458492 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND    
 50497 ubuntu    20   0   44528   3944   3368 R  0.7  0.4   0:00.15 top        
     1 root      20   0  160076   7020   4400 S  0.0  0.8   0:34.85 systemd    
     2 root      20   0       0      0      0 S  0.0  0.0   0:00.08 kthreadd   
     3 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 rcu_gp     
     4 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 rcu_par_gp 
     6 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 kworker/0:+
     9 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 mm_percpu_+

Нижче наведено деякі поля в системному підсумку:

  Як грати в The Witness на Linux

вгору
Час роботи. Час із часу останнього завантаження машини.
навантаження середнє
Середнє навантаження означає кількість процесів, які очікують на виконання, значення менше 1,0 означає, що машина не зайнята. Є 3 значення. Перше – середнє за останні 60 секунд, друге – за останні 5 хвилин, а третє – за останні 15 хвилин.
% ЦП

Цей рядок описує діяльність центрального процесора.
0,3 нас, користувач
0,3% CPU використовується для процесів користувача.
0,0 sy, система
0,0% CPU використовується для системних процесів.
0,0 ні, добре
0,0% ЦП використовується процесами з низьким пріоритетом (хорошими).
99,7 id, холостий
99,7% ЦП не працює
0,0 wa, IO-чекати
0,0% ЦП очікує на введення-виведення
0,0 привіт
час, витрачений на апаратні переривання
0,0 si
час, витрачений на програмні переривання
0,0 ст
камінь часу з цієї віртуальної машини гіпервізором

Поля таблиці процесів такі:

PID
Ідентифікаційний номер процесу
КОРИСТУВАЧ
Власник процесу
PR
Пріоритет
NI
Гарне значення
ВІРТ
Віртуальна пам’ять, яку використовує процес (КБ)
RES
Фізична пам’ять, яку використовує процес
SHR
Спільна пам’ять, яку використовує процес
С
Статус процесу. R – працює, S – спить, I – не працює, T – зупинено, Z – зомбі, D – очікує введення/виведення диска, W – замінено, X – мертвий
%ЦП
Використовується процесорний час у відсотках
%MEM
Використовується процес фізичної пам’яті
ЧАС[+]
Загальний час процесора, використаний процесом
КОМАНДА
Назва програми

Коли top працює, ви можете вводити декілька команд. Натисніть h або ? щоб побачити команди, які можна виконувати під час роботи top. Натисніть k, щоб завершити процес. Натисніть q, щоб вийти згори.

копати

dig — чудовий інструмент для DNS-запитів. Його використовують наступним чином:

dig <DNS server> <domain> <query-type>

де

  • — це ім’я DNS-сервера, яке ви хочете запитати
  • – це доменне ім’я, про яке ви хочете запитати
  • – це ім’я запису, який ви хочете знати – A, MX, NS SOA тощо.

Щоб придушити багатослівний вивід, використовуйте позначку +short.

Щоб переглянути запис для google.com, використовуйте:

[email protected]:~$ dig google.com +short
172.217.164.174

Щоб переглянути записи MX для google.com, використовуйте:

[email protected]:~$ dig google.com MX  +short
50 alt4.aspmx.l.google.com.
10 aspmx.l.google.com.
20 alt1.aspmx.l.google.com.
40 alt3.aspmx.l.google.com.
30 alt2.aspmx.l.google.com.

Якщо вам потрібно запитати записи DNS в Інтернеті, ви можете скористатися інструментом пошуку DNS.

хто і ж

хто показує користувачів, які ввійшли в систему.

[email protected]:~$ who
ubuntu   pts/0        2020-08-14 17:28 (183.83.211.129)
ubuntu   pts/1        2020-08-14 17:58 (183.83.211.129)

w показує користувачів, які зараз увійшли в систему, і їхні процеси. Заголовок показує поточний час, час безвідмовної роботи системи, кількість користувачів, які ввійшли в систему, і середнє завантаження системи.

[email protected]:~$ w
 18:07:33 up 46 days, 15:19,  2 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             [email protected]   IDLE   JCPU   PCPU WHAT
ubuntu   pts/0    183.83.211.129   17:28    2.00s  0.10s  0.00s w
ubuntu   pts/1    183.83.211.129   17:58    9:07   0.05s  0.01s vi

Наступна частина показує імена користувачів, термінал і віддалену IP-адресу, з якої вони ввійшли в систему, час входу, час простою, JCPU, PCPU і програму, яку вони запускають. JCPU – це час, який використовується всіма процесами, підключеними до tty, тоді як PCPU – це час, який використовується поточним процесом.

дьоготь

За допомогою GNU tar ви можете архівувати декілька файлів в один файл.

Як приклад, створіть каталог myfiles і три файли a.txt, b.txt, c.txt у каталозі myfiles:

[email protected]:~$ mkdir myfiles ; touch myfiles/{a.txt,b.txt,c.txt}

Тепер, щоб створити архів під назвою allfiles.tar, який містить усі файли в каталозі myfiles:

[email protected]:~$ tar -cvf allfiles.tar myfiles
myfiles/
myfiles/c.txt
myfiles/a.txt
myfiles/b.txt

Перерахувати всі файли в поточному каталозі. Ви можете побачити каталог myfiles і архів allfiles.tar:

[email protected]:~$ ls
allfiles.tar  myfiles

Ви можете розпакувати архів з прапорцем -x. Отже, щоб розпакувати allfiles.tar:

[email protected]:~$ tar -xvf allfiles.tar
myfiles/
myfiles/c.txt
myfiles/a.txt
myfiles/b.txt

Ви також можете стиснути цей архів за допомогою прапорця -z. Це створить архів, стиснутий за допомогою gzip.

[email protected]:~$ tar -zcvf allfiles.tar.gz myfiles
myfiles/
myfiles/c.txt
myfiles/a.txt
myfiles/b.txt
[email protected]:~$ ls
allfiles.tar.gz  myfiles

Щоб розпакувати стислий архів, використовуйте -z з прапорцем -x.

[email protected]:~$ tar -zxvf allfiles.tar.gz 
myfiles/
myfiles/c.txt
myfiles/a.txt
myfiles/b.txt

grep

grep використовується для пошуку шаблону у файлі або наборі файлів. Він друкує всі рядки, які відповідають цьому шаблону. Наприклад, щоб знайти рядок, що містить «ServerRoot» у /etc/apache2/apache2.conf:

[email protected]:~$ grep ServerRoot /etc/apache2/apache2.conf 
# ServerRoot: The top of the directory tree under which the server's
#ServerRoot "/etc/apache2"

Для пошуку в усіх файлах у каталозі використовуйте *. Щоб включити пошук у підкаталогах, використовуйте прапорець -r (рекурсивний). Отже, щоб знайти всі рядки, що містять шаблон «VirtualHost» у всіх файлах у /etc/apache2:

[email protected]:~$ cd /etc/apache2
[email protected]:/etc/apache2$ grep -r VirtualHost *
apache2.conf:# If you do not specify an ErrorLog directive within a <VirtualHost>
apache2.conf:# logged here.  If you *do* define an error logfile for a <VirtualHost>
conf-available/localized-error-pages.conf:# even on a per-VirtualHost basis.  If you include the Alias in the global server
conf-available/other-vhosts-access-log.conf:# Define an access log for VirtualHosts that don't define their own logfile
ports.conf:# have to change the VirtualHost statement in
sites-available/000-default.conf:<VirtualHost *:80>
...

rsync

rsync — це швидкий інструмент командного рядка для синхронізації файлів і каталогів між двома розташуваннями. Може використовуватися як для локального, так і для віддаленого копіювання та є швидким, оскільки надсилає лише відмінності між вихідними файлами та наявними файлами в місці призначення.

Він широко використовується для резервного копіювання та як вдосконалена команда копіювання для щоденного використання.

Ось приклад:

Щоб скопіювати/rsync всі файли з каталогу myfiles до каталогу резервних копій:

[email protected]:~$ rsync -avh myfiles/ /backups
sending incremental file list
./
a.txt
b.txt
c.txt

sent 218 bytes  received 76 bytes  588.00 bytes/sec
total size is 0  speedup is 0.00

Щоб синхронізувати всі файли з каталогу myfiles до каталогу резервних копій на віддаленому хості, додайте віддалений_користувач @віддалений_хост до імені призначення. Отже, щоб rsync папки myfiles на віддалений хост з IP 10.0.0.50:

[email protected]:~$ rsync -avh myfiles/ [email protected]:/home/vagrant
[email protected]'s password: 
sending incremental file list
./
a.txt
b.txt
c.txt

sent 230 bytes  received 76 bytes  47.08 bytes/sec
total size is 0  speedup is 0.00

ss

Команда ss використовується для скидання статистики сокетів, подібно до застарілої утиліти netstat. Щоб відобразити TCP-сокети, використовуйте прапорець -t.

[email protected]:~$ ss -t 
State       Recv-Q        Send-Q                 Local Address:Port                     Peer Address:Port         
ESTAB       0             0                           10.0.0.4:53852                   168.63.129.16:8037         
ESTAB       0             0                           10.0.0.4:ssh                    183.83.211.129:64118        
ESTAB       0             0                           10.0.0.4:33256                 169.254.169.254:http         
ESTAB       0             1080                        10.0.0.4:ssh                     222.186.30.35:11527        
ESTAB       0             0                           10.0.0.4:ssh                    183.83.211.129:63049

Це не відображатиме сокети, які прослуховують. Щоб включити як слухаючі, так і неслухаючі сокети, використовуйте прапорці -t і -a.

[email protected]:~$ ss -t -a 
State        Recv-Q        Send-Q                Local Address:Port                     Peer Address:Port         
LISTEN       0             128                         0.0.0.0:ssh                           0.0.0.0:*            
LISTEN       0             80                        127.0.0.1:mysql                         0.0.0.0:*            
LISTEN       0             128                   127.0.0.53%lo:domain                        0.0.0.0:*            
ESTAB        0             0                          10.0.0.4:53852                   168.63.129.16:8037         
ESTAB        0             0                          10.0.0.4:ssh                    183.83.211.129:64118        
ESTAB        0             0                          10.0.0.4:33256                 169.254.169.254:http         
ESTAB        0             1080                       10.0.0.4:ssh                     222.186.30.35:11527        
ESTAB        0             120                        10.0.0.4:ssh                    183.83.211.129:63049        
LISTEN       0             128                            [::]:ssh                              [::]:*            
LISTEN       0             128                               *:http                                *:*

знайти

Команда locate використовує базу даних для пошуку файлів і насправді може бути набагато швидшою, ніж команда find. Дуже простий у використанні, для пошуку файлу, скажімо, apache2.conf:

[email protected]:~$ locate apache2.conf
/etc/apache2/apache2.conf
/var/lib/dpkg/info/apache2.conffiles

Ви можете використовувати прапорець -c, якщо вам потрібна лише кількість файлів, які відповідають шаблону пошуку.

[email protected]:~$ locate -c apache2.conf
2

Іноді вам може знадобитися оновити базу даних, яку використовує locate, тобто mlocate. Для оновлення бази даних використовуйте команду updatedb. Для цього знадобляться права суперкористувача.

[email protected]:~$ sudo updatedb

знайти

Одна з найбільш часто використовуваних команд у Linux. Використовуйте його для пошуку файлів на основі імен файлів, дозволів, ідентифікатора користувача, ідентифікатора групи, розміру, типу файлу, окрім інших критеріїв.

Щоб шукати файл за назвою в поточному каталозі, скористайтеся прапорцем -name, а потім ім’ям файлу для пошуку.:

[email protected]:~$ find . -name a.txt
./myfiles/a.txt

Для пошуку каталогів використовуйте прапорець -type d:

[email protected]:~$ find . -type d
.
./.ssh
./myfiles
./.cache
./.gnupg
./.gnupg/private-keys-v1.d
./docker

Щоб шукати файли за розміром, скажімо, файли розміром понад 20 МБ, використовуйте прапорець -size:

[email protected]:~$ find . -size +20M
./docker/docker-ce-cli_5%3a19.03.12~3-0~ubuntu-bionic_amd64.deb
./docker/docker-ce_5%3a19.03.12~3-0~ubuntu-bionic_amd64.deb

systemctl

Тепер, коли systemd замінив процес ініціалізації SysV у більшості дистрибутивів Linux, використовуйте команду systemctl для керування службами та модулями systemd.

Щоб запустити службу, наприклад apache2:

[email protected]:~$ sudo systemctl start apache2.service

Ви можете залишити службовий суфікс.

Щоб зупинити службу:

[email protected]:~$ sudo systemctl stop apache2

Щоб переглянути статус служби, скористайтеся командою systemctl status. У наступному прикладі показано стан apache2 під час його роботи:

[email protected]:~$ sudo systemctl status apache2
● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since Wed 2020-08-19 11:34:04 UTC; 2s ago
  Process: 25346 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS)
  Process: 18202 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/SUCCESS)
  Process: 25536 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
 Main PID: 25555 (apache2)
    Tasks: 55 (limit: 1024)
   CGroup: /system.slice/apache2.service
           ├─25555 /usr/sbin/apache2 -k start
           ├─25558 /usr/sbin/apache2 -k start
           └─25559 /usr/sbin/apache2 -k start

Aug 19 11:34:04 ubuntu18 systemd[1]: Starting The Apache HTTP Server...
Aug 19 11:34:04 ubuntu18 systemd[1]: Started The Apache HTTP Server.

команда ufw

UFW – нескладний брандмауер – це простий у використанні інтерфейс для iptables. Він доступний за замовчуванням у дистрибутивах на основі Ubuntu. У CentOS ви можете встановити ufw зі сховища EPEL.

Щоб увімкнути ufw:

$ sudo ufw enable

Перевірте стан брандмауера за допомогою статусу ufw:

$ sudo ufw status
Status: active

Стандартні політики UFW дозволяють весь вихідний трафік і блокують увесь вхідний.

Наступна команда дозволяє вхідний трафік через порт HTTP:

$ sudo ufw allow http
Rule added
Rule added (v6)

Ви можете заборонити трафік на будь-якому порту. Ось приклад блокування трафіку на порту 21:

$ sudo ufw deny 21
Rule added
Rule added (v6)

journalctl

Використовуйте journalctl для перегляду журналів, зібраних systemd. systemd збирає журнал у центральному місці у двійковому форматі. Щоб переглянути ці журнали:

[email protected]:~$ sudo journalctl
-- Logs begin at Mon 2020-06-29 02:48:31 UTC, end at Wed 2020-08-19 15:07:59 UTC. --
Jun 29 02:48:31 ubuntu kernel: Linux version 5.3.0-1028-azure ([email protected]) (gcc version 7.5.0 (Ubuntu
Jun 29 02:48:31 ubuntu kernel: Command line: BOOT_IMAGE=/boot/vmlinuz-5.3.0-1028-azure root=UUID=b0dd9d06-536e-41
Jun 29 02:48:31 ubuntu kernel: KERNEL supported cpus:
Jun 29 02:48:31 ubuntu kernel:   Intel GenuineIntel
...

Здебільшого ви віддаєте перевагу перегляду журналів у зворотному порядку, тобто спочатку останні журнали:

[email protected]:~$ sudo journalctl -r
-- Logs begin at Mon 2020-06-29 02:48:31 UTC, end at Wed 2020-08-19 15:10:16 UTC. --
Aug 19 15:10:16 ubuntu18 sudo[31263]: pam_unix(sudo:session): session opened for user root by ubuntu(uid=0)
Aug 19 15:10:16 ubuntu18 sudo[31263]:   ubuntu : TTY=pts/1 ; PWD=/home/ubuntu ; USER=root ; COMMAND=/bin/journalc
Aug 19 15:10:11 ubuntu18 sudo[31213]: pam_unix(sudo:session): session closed for user root
Aug 19 15:07:59 ubuntu18 sudo[31213]: pam_unix(sudo:session): session opened for user root by ubuntu(uid=0)
Aug 19 15:07:59 ubuntu18 sudo[31213]:   ubuntu : TTY=pts/1 ; PWD=/home/ubuntu ; USER=root ; COMMAND=/bin/journalc
Aug 19 15:07:56 ubuntu18 sudo[31183]: pam_unix(sudo:session): session closed for user root
Aug 19 15:06:47 ubuntu18 sudo[31183]: pam_unix(sudo:session): session opened for user root by ubuntu(uid=0)
...

Щоб переглянути журнали певної служби, наприклад mysql, використовуйте прапорець -u:

[email protected]:~$ sudo journalctl -u mysql
-- Logs begin at Mon 2020-06-29 02:48:31 UTC, end at Wed 2020-08-19 15:11:34 UTC. --
Aug 16 12:30:02 ubuntu18 systemd[1]: Starting MySQL Community Server...
Aug 16 12:30:03 ubuntu18 systemd[1]: Started MySQL Community Server.
Aug 19 15:03:27 ubuntu18 systemd[1]: Stopping MySQL Community Server...
Aug 19 15:03:29 ubuntu18 systemd[1]: Stopped MySQL Community Server.

вбивати і вбивати

Можливо, вам знадобиться припинити процес, що не працює, або коли потрібно звільнити деякі системні ресурси. kill з прапорцем -l показує всі сигнали, які ви можете надіслати процесу.

[email protected]:~$ kill -l
 1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
 6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
....

Два найпоширеніші сигнали – SIGTERM ТА SIGKILL. Ви також можете використовувати -9 для SIGKILL і -15 для SIGTERM. SIGTERM дозволяє завершити процес до того, як він буде припинений, і тому називається м’яким припиненням. SIGKILL негайно завершує процес. Ось приклад:

Список усіх процесів apache2

[email protected]:~$ ps aux|grep apache2
root      45521  0.0  0.5  78188  4688 ?        Ss   Aug08   0:03 /usr/sbin/apache2 -k start
www-data  45524  0.0  0.5 830480  4816 ?        Sl   Aug08   0:00 /usr/sbin/apache2 -k start
www-data  45525  0.0  0.7 830480  6856 ?        Sl   Aug08   0:00 /usr/sbin/apache2 -k start
ubuntu    70374  0.0  0.1  14852  1040 pts/0    S+   07:45   0:00 grep --color=auto apache2

Щоб припинити процес apache2 з ідентифікатором процесу 45525:

[email protected]:~$ sudo kill -9 45525

Знову перегляньте список процесів apache2:

[email protected]:~$ ps aux|grep apache2
root      45521  0.0  0.5  78188  4688 ?        Ss   Aug08   0:03 /usr/sbin/apache2 -k start
www-data  45524  0.0  0.5 830480  4816 ?        Sl   Aug08   0:00 /usr/sbin/apache2 -k start
ubuntu    70525  0.0  0.1  14852  1052 pts/0    S+   07:52   0:00 grep --color=auto apache2

Використовуйте killall, щоб вбити програму за назвою. Це означає, що killall вбиває контрольний (батьківський) процес і всі дочірні процеси. Щоб знищити всі екземпляри процесу apache2 у прикладі вище:

[email protected]:~$ sudo killall apache2

Використовуйте kill і killall з обережністю. Ці команди можуть залишити систему в нестабільному стані.

IP

Команда ip замінює ifconfig у нових дистрибутивах Linux. Використовуйте його для налаштування та відображення мережевих інтерфейсів. Також використовується для відображення та зміни IP-адрес, маршрутів і сусідніх об’єктів.

Відображення інформації про всі мережеві інтерфейси:

[email protected]:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0d:3a:9b:88:d6 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.4/24 brd 10.0.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20d:3aff:fe9b:88d6/64 scope link 
       valid_lft forever preferred_lft forever

Щоб увімкнути або вимкнути інтерфейс, використовуйте ip link set dev, а потім назву пристрою. Наприклад, щоб перевести інтерфейс eth0 в режим онлайн:

[email protected]:~$ ip link set eth0 up

І щоб збити його:

[email protected]:~$ ip link set eth0 down

дата

Дуже часто використовувана команда, тут ми досліджуємо кілька цікавих способів використання цієї команди.

[email protected]:~$ date
Tue Aug 11 07:42:49 UTC 2020

Щоб побачити дату наступної неділі:

[email protected]:~$ date -d 'next sunday'
Sun Aug 16 00:00:00 UTC 2020

Щоб переглянути дату минулої неділі:

[email protected]:~$ date -d 'last sunday'
Sun Aug  9 00:00:00 UTC 2020

Ви також можете використовувати –date замість прапора -d:

[email protected]:~$ date --date="last sunday"
Sun Aug  9 00:00:00 UTC 2020

Щоб побачити дату 6 днів тому:

[email protected]ntu18:~$ date --date="6 days ago"
Wed Aug  5 08:06:37 UTC 2020

Дата через 6 днів:

[email protected]:~$ date --date="6 days"
Mon Aug 17 08:08:37 UTC 2020

Ви можете легко контролювати формат виведення дати. Ось приклад:

[email protected]:~$ date '+%d-%B-%Y'
11-August-2020

Резюме

Ви як системний адміністратор підтримуєте роботу світової обчислювальної інфраструктури. Вам потрібно вирішувати проблеми, підтримувати та підтримувати оптимальну роботу систем, забезпечуючи безпеку.

Сподіваюся, ці команди стануть у нагоді та допоможуть вам краще виконувати свою роботу.

Ось кілька клієнтів FTP/SFTP і найкращі шпаргалки Vim для розробників і системного адміністратора.

  Як знайти програмне забезпечення в незрозумілих дистрибутивах Linux