介绍

我试着总结了一些被认为是运维所必需的命令。

我使用以下内容作为参考。

我参考了 LPIC Azuki Book 201 “Linux Textbook LPIC Level 2 Version 4.5 Compatible”。
我也在下面学习。
基础学院
https://infracollege.vamdemicsystem.black/linux/

查看日志的常用命令

少命令

*注意/etc下的日志只能由root用户查看。

由于经常使用“less”命令,因此它是最好的习惯命令。
一次显示一个屏幕。它是安全的,因为它是一个不可编辑的命令。

我从以下网站了解到。
https://www.wakuwakubank.com/posts/343-linux-less/

# less <ログファイル>

猫命令

cat 命令是显示所有行的命令。
在以下情况下,日志文件的所有行都通过管道传输,并在 grep 中搜索字符串。

经常使用以下命令,该命令在发生故障时仅从日志中提取错误部分。
最好记住。

grep i 选项用于不区分大小写的搜索。

# cat <ログファイル> | grep -i "<検索する文字列>"
以下は出力例です。
# cat /var/log/messages | grep -i "error"
Aug  6 10:20:29 localhost kernel: BERT: Boot Error Record Table support is disabled. Enable it by using bert_enable as kernel parameter.
Aug  6 10:20:30 localhost kernel: [drm:vmw_host_log [vmwgfx]] *ERROR* Failed to send host log message.
Aug  6 10:20:30 localhost kernel: [drm:vmw_host_log [vmwgfx]] *ERROR* Failed to send host log message.

cat 命令用于显示日志文件的所有行。

很少使用的命令

“view”命令是一次显示一个屏幕的命令。因为可以编辑,
不建议使用它来检查日志。

# view  <ログファイル>

* 我有使用 cat 的经验,并且视图不正确。 cat 是全屏显示日志的命令。
view 是一次显示一个屏幕的命令,因此请注意不要出错。

日志管理

日志(/var/log/messages)

/var/log/messagesは、OSのログで「シスログ」と呼ばれます。
最好记住这些词,因为它们经常在该领域中使用。

检查此日志以查看发生故障时操作系统中发生的情况。
*这通常是发生故障时要检查的第一件事。

以下日志是操作系统重启时的日志。

[root@localhost log]# cat /var/log/messages | grep "Kernel"
May 30 07:30:36 localhost kernel: Kernel command line: BOOT_IMAGE=/vmlinuz-3.10.0-1160.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=ja_JP.UTF-8
May 30 07:30:36 localhost systemd[1]: Listening on udev Kernel Socket.
May 30 07:30:36 localhost systemd[1]: Starting Apply Kernel Variables...
May 30 07:30:36 localhost systemd[1]: Started Apply Kernel Variables.
May 30 07:30:36 localhost systemd: Starting udev Kernel Device Manager...
May 30 07:30:36 localhost systemd: Started udev Kernel Device Manager.
May 30 07:30:38 localhost systemd: Stopping udev Kernel Device Manager...  ※カーネルの停止
May 30 07:30:38 localhost systemd: Stopped Apply Kernel Variables.
May 30 07:30:38 localhost systemd: Stopped udev Kernel Device Manager.
May 30 07:30:38 localhost systemd: Closed udev Kernel Socket.
May 30 07:30:38 localhost systemd: Started Remount Root and Kernel File Systems.
May 30 07:30:38 localhost systemd: Starting udev Kernel Device Manager...※カーネルの起動
May 30 07:30:38 localhost systemd: Started udev Kernel Device Manager.

日志(/var/log/boot.log)

这是操作系统启动时的日志。
个人看的不多,因为没有显示日志发生的日期和时间,所以很难理解。
我认为理解下面的日志需要一些技巧。

# less /var/log/boot.log
[ESC[32m  OK  ESC[0m] Started Show Plymouth Boot Screen.
[ESC[32m  OK  ESC[0m] Reached target Paths.
[ESC[32m  OK  ESC[0m] Started Forward Password Requests to Plymouth Directory Watch.
[ESC[32m  OK  ESC[0m] Reached target Basic System.
ESC%G[ESC[32m  OK  ESC[0m] Found device /dev/mapper/centos-root.
         Starting File System Check on /dev/mapper/centos-root...
[ESC[32m  OK  ESC[0m] Started File System Check on /dev/mapper/centos-root.
[ESC[32m  OK  ESC[0m] Started dracut initqueue hook.
[ESC[32m  OK  ESC[0m] Reached target Remote File Systems (Pre).
[ESC[32m  OK  ESC[0m] Reached target Remote File Systems.
         Mounting /sysroot...

日志(/var/log/cron)

这是执行 cron 时的日志输出。
cron 在下面的文章中进行了总结。如果你喜欢,请参考它。
https://qiita.com/gama1234/items/2df167899ebdd6c1c983

# less /var/log/cron
Aug  7 08:41:01 localhost run-parts(/etc/cron.daily)[1502]: starting man-db.cron
Aug  7 08:41:07 localhost run-parts(/etc/cron.daily)[11369]: finished man-db.cron
Aug  7 08:41:07 localhost anacron[1497]: Job `cron.daily' terminated
Aug  7 09:01:01 localhost anacron[1497]: Job `cron.weekly' started
Aug  7 09:01:01 localhost anacron[1497]: Job `cron.weekly' terminated

日志(/var/log/secure)

这是用户认证期间的日志输出。
这是从主机操作系统“192.168.0.14”ssh 到来宾操作系统时的日志。
然后我被提升为root。

# less /var/log/secure
#ssh接続のログ
Aug 14 10:35:05 localhost sshd[1353]: Accepted password for test from 192.168.0.14 port 53164 ssh2
Aug 14 10:35:05 localhost sshd[1353]: pam_unix(sshd:session): session opened for user test by (uid=0)
Aug 14 10:35:26 localhost sudo:    test : TTY=pts/0 ; PWD=/home/test ; USER=root ; COMMAND=/bin/less /var/log/secure
#rootに昇格のログ
Aug 14 10:35:26 localhost sudo: pam_unix(sudo:session): session opened for user root by test(uid=0)

检查用户登录的命令

w 命令

查看当前登录的用户。

下面是一个示例输出。

$ w
 11:00:46 up  1:25,  1 user,  load average: 0.00, 0.01, 0.02
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
test     pts/0    192.168.0.14     10:35    6.00s  0.01s  0.00s w

最后一个命令

检查过去的登录历史

下面是一个示例输出。

$ last
test     pts/0        192.168.0.14     Sun Aug 14 10:35   still logged in
test     pts/0        192.168.0.14     Sun Aug 14 09:36 - 10:34  (00:58)
reboot   system boot  3.10.0-1160.el7. Sun Aug 14 09:35 - 10:54  (01:18)
root     pts/0        192.168.0.14     Tue Aug  9 20:55 - crash (4+12:39)
reboot   system boot  3.10.0-1160.el7. Tue Aug  9 20:55 - 10:54 (4+13:59)
root     pts/2        10.0.0.1         Sun Aug  7 07:21 - 07:22  (00:00)
root     pts/1        10.0.0.1         Sun Aug  7 07:19 - 07:40  (00:21)
test     pts/0        192.168.0.14     Sun Aug  7 07:02 - 10:05  (03:02)

最后的日志命令

用户上次登录信息。
这是一个可以检查用户过去是否登录过的命令。

我参考了以下网站。
https://atmarkit.itmedia.co.jp/ait/articles/1903/29/news046.html

$ lastlog
Username         Port     From             Latest
root             pts/0                     Sun Aug 14 09:36:19 +0900 2022
bin                                        **Never logged in**
daemon                                     **Never logged in**
adm                                        **Never logged in**
lp                                         **Never logged in**
sync                                       **Never logged in**
shutdown                                   **Never logged in**
halt                                       **Never logged in**
mail                                       **Never logged in**
operator                                   **Never logged in**
games                                      **Never logged in**
ftp                                        **Never logged in**
nobody                                     **Never logged in**
systemd-network                            **Never logged in**
dbus                                       **Never logged in**
polkitd                                    **Never logged in**
sshd                                       **Never logged in**
postfix                                    **Never logged in**
chrony                                     **Never logged in**
test             pts/0    192.168.0.14     Sun Aug 14 10:35:05 +0900 2022
nginx                                      **Never logged in**
apache                                     **Never logged in**

发生故障时检查命令

正常运行时间命令

您可以检查 CPU 平均负载以及操作系统上次停止的小时数或天数。

在下面的示例中,系统已经运行了 1 小时 36 分钟。

# uptime
11:12:21 up  1:36,  1 user,  load average: 0.00, 0.01, 0.02

11:12:21 是当前时间 系统运行时间(1 小时 36 分钟) 用户连接期间用户负载平均
以下网站很有帮助。
https://wa3.i-3-i.info/word11667.html

关于平均负载

等待运行的进程数(1 分钟/5 分钟/15 分钟)
如果上述数量超过 CPU 核心数和 CPU 数量,则发生了某种处理等待
如果有 2 个 2 核的 CPU,如果平均负载超过 4,则存在某种等待

从上面可以看出CPU的负载情况。

我使用以下站点作为如何检查 CPU 内核数量的参考。
https://access.redhat.com/ja/solutions/2159401

以下是检查 CPU 核数等时的执行示例。

#論理プロセッサの数(有効なプロセッサーの数)
# cat /proc/cpuinfo | grep processor
processor       : 0

#物理CPU数
# cat /proc/cpuinfo | grep physical.id
physical id     : 0

#CPUコア数
# cat /proc/cpuinfo | grep "core"
core id         : 0
cpu cores       : 1

顶部命令

它是一个可以检查进程状态以及CPU和内存的负载状态的命令。
最好记住它,因为它经常用于商业。

1.系统正常运行时间
当前时间/正常运行时间(在下面的证据中增加了 2 分钟)/登录的用户数
*查看运行时间后,您可以查看操作系统上次重启的时间或天数。
2.负载情况
等待运行的进程数(1 分钟/5 分钟/15 分钟)
如果上述数字超过 CPU 内核数和 CPU 数,则发生了某种处理等待。
如果有 2 个 2 核的 CPU,如果平均负载超过 4,则存在某种等待

3. 内存满时使用交换。

这是 TOP 命令的执行示例。
添加了描述。 *如果描述中有任何错误,我深表歉意。

对于 top 命令,以下站点很有帮助。
https://atmarkit.itmedia.co.jp/ait/articles/1706/30/news018.html

※システム稼働時間、負荷状態
top - 08:46:10(現在の時刻) up 35 min(システム稼働時間),  2 users(ユーザー数),  load average: 0.00(1分負荷), 0.01(5分負荷), 0.01(15分負荷)
※プロセスの状態
Tasks: 104 total(総合プロセス数),   2 running(プロセス実行数), 102 sleeping,   0 stopped,   0 zombie
※CPU状態 
%Cpu(s):  0.0 us(ユーザープロセス割合),  0.0 sy(カーネル割合),  0.0 ni(優先度変更したプロセス割合),100.0 id(アイドル割合),  0.0 wa(ディス久IO割合),  0.0 hi(ハードウェア割り込み割合),  0.0 si(ソフトウェア割り込み割合),  0.0 st(ゲストOS未割当割合)
※メモリの状態
KiB Mem :  1014756 total(全部物理メモリ容量),   712528 free(空きメモリ容量),   175808 used(使用中メモリ容量),   126420 buff/cache(バッファとキャッシュサイズ)
KiB Swap:   839676 total(総合スワップ容量),   839676 free(空きスワップ容量),   0 used(使用中のスワップ容量).   700784 avail Mem(メモリ不足時に利用できるメモリ量)

※プロセスの状態
  PID USER      PR  NI    VIRT(仮想メモリ使用量)    RES(実メモリ使用量)  SHR S %CPU %MEM     TIME+ COMMAND
 1430 root      20   0  162084   2224   1560 R(実行可能状態)  0.3  0.2   0:00.28 top
    1 root      20   0  125352   3880   2584 S(実行待ち状態)  0.0  0.4   0:00.65 systemd
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd
    4 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H
    5 root      20   0       0      0      0 S  0.0  0.0   0:00.01 kworker/u2:0
    6 root      20   0       0      0      0 S  0.0  0.0   0:00.06 ksoftirqd/0
    7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0
    8 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_bh

为了确认 TOP 命令的操作,施加负载的命令如下。
这是一个简单地输出 yes 的命令。

# yes >> /dev/null

我检查了 TOP 命令,是的,该进程的 CPU 使用率为 99%。

# top
top - 12:07:01 up  2:31,  2 users,  load average: 1.82, 0.57, 0.22
Tasks: 111 total,   2 running, 109 sleeping,   0 stopped,   0 zombie
%Cpu(s): 95.7 us,  4.3 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1014756 total,   771064 free,   162808 used,    80884 buff/cache
KiB Swap:   839676 total,   839676 free,        0 used.   736536 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
 1582 root      20   0  108056    616    520 R 99.0  0.1   1:27.24 yes
 1511 root      20   0       0      0      0 D  0.3  0.0   0:00.21 kworker/0:1
    1 root      20   0  125352   3896   2584 S  0.0  0.4   0:02.14 systemd

df 命令

此命令允许您检查磁盘使用率。

# df -h
ファイルシス            サイズ  使用  残り 使用% マウント位置
devtmpfs                  484M     0  484M    0% /dev
tmpfs                     496M     0  496M    0% /dev/shm
tmpfs                     496M  6.8M  489M    2% /run
tmpfs                     496M     0  496M    0% /sys/fs/cgroup
/dev/mapper/centos-root   6.2G  1.6G  4.7G   25% /
/dev/sda1                1014M  137M  877M   14% /boot
tmpfs                     100M     0  100M    0% /run/user/1000

我尝试创建更大的文件并确认大小发生了变化。

下面的命令创建一个 1G 的文件。
指定 bs(块大小)/if(输入文件 /dev/zero 为空)/of(输出文件)

# dd if=/dev/zero of=1gfile bs=1M count=1024
# ls -ltr /tmp/1gfile
-rw-r--r-- 1 root root 1073741824  8月 14 11:39 /tmp/1gfile

我再次运行 df -h 命令。
安装位置“/”的使用从 1.6G 增加到 2.6G

# df -h
ファイルシス            サイズ  使用  残り 使用% マウント位置
devtmpfs                  484M     0  484M    0% /dev
tmpfs                     496M     0  496M    0% /dev/shm
tmpfs                     496M  6.8M  489M    2% /run
tmpfs                     496M     0  496M    0% /sys/fs/cgroup
/dev/mapper/centos-root   6.2G  2.6G  3.7G   41% /
/dev/sda1                1014M  137M  877M   14% /boot
tmpfs                     100M     0  100M    0% /run/user/1000

ps 命令

ps -ef 是一个分层显示所有进程的命令。
意识到您运行的命令在进程中也是可见的。

以下网站很有帮助。
https://atmarkit.itmedia.co.jp/ait/articles/1603/28/news022.html

下面的命令通过管道传输所有进程的状态,以按进程名称或脚本名称进行搜索。

作为使用示例,在重启服务之前,为了不中断脚本的处理,
您可以使用以下命令检查脚本是否正在运行。

# ps -ef | grep <プロセス名 or スクリプト名>

以下はnginxのプロセスが実行中であることを確認しました。
# ps -ef | grep nginx
root      1009     1  0 21:22 ?        00:00:00 nginx: master process /usr/sbin/nginx
nginx     1010  1009  0 21:22 ?        00:00:00 nginx: worker process
root      1266  1244  0 21:23 pts/0    00:00:00 grep --color=auto nginx

监视命令

以下网站很有帮助。
https://atmarkit.itmedia.co.jp/ait/articles/1806/29/news037.html

以下命令每秒使用 watch 命令显示搜索到的进程。
由于 grep 命令的进程显示是不必要的,所以用 grep -v 将其隐藏。

# watch -n <秒> "ps -ef | grep <プロセス名 or スクリプト名> | grep -v grep"

以下のコマンドは、1秒ごとにnginxのプロセスを表示するコマンドです。
# watch -n 1 "ps -ef | grep nginx | grep -v grep"

下面是执行结果。
linux 運用保守で必要なコマンドをまとめてみました

补充。

下面是检查 nagios 进程是否正在运行的命令。

# watch -n 1 "ps -ef | grep nagios | grep -v grep"

nagios 进程未运行,因为它仅显示您运行的 ps 命令。
linux 運用保守で必要なコマンドをまとめてみました
如果 nagios 进程正在运行,您将看到如下内容:
linux 運用保守で必要なコマンドをまとめてみました

概括

可能缺少一些命令,但我在本文中列出了所有必要的命令。
如果没有经验,发生故障时要检查什么日志以及使用什么命令
它可能不会马上出来。

记录您遇到的警报和
为了让任何人在出现未知警报时都能立即做出响应,
我个人认为最好准备一个日志列表和命令集合。

我希望你觉得这篇文章有帮助。


原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308623373.html

相关文章:

  • 2021-10-12
  • 2021-11-30
  • 2021-12-03
  • 2018-03-11
  • 2022-01-02
  • 2021-05-18
  • 2021-09-13
  • 2021-05-08
猜你喜欢
  • 2021-11-01
  • 2021-10-17
  • 2021-08-04
  • 2021-12-15
  • 2021-12-28
  • 2021-11-04
  • 2019-02-15
  • 2021-11-04
相关资源
相似解决方案