系统版本声明:RHEL7
https://www.linuxcool.com/uptime
# 查看系统运行时间、用户数、负载
uptime
# 显示本次系统的开机时间
uptime -s
# 查看系统负载
cat /proc/loadavg
ps -ef # 查看所有进程
top # 实时显示进程状态
查看内核启动时的内容
参考: https://cloud.tencent.com/developer/article/1554567?from=14588
dmesg
日志只记录本次启动之后的信息,但较messages
更详细。内核或应用软件bug发生的情况下大多有如下形式的calltrace
(栈回溯信息)记录,可用于问题定位:
https://www.linuxcool.com/dmesg
https://wangchujiang.com/linux-command/c/dmesg.html
# 以易读格式显示日志事件
dmesg -T
# 查看内核日志中的调用栈
## -T 显示易读的时间戳
## less防止太大屏幕滚动停不下来
dmesg -T|less
# 显示最后10条日志
dmesg -T | tail -n 10
# 从下往上看
# 查看内核启动时的内容
# 本次启动之后的日志
dmesg
## 日志的时间默认以时间戳方式显示
## 查看的是/var/log/dmesg文件
tail /var/log/dmesg
### 滚动查看
tailf /var/log.dmesg
tail -f /var/log.dmesg
dmesg
命令将Linux内核环形缓冲区
重定向到 本地文件
# 将Linux内核环形缓冲区 重定向到 本地文件
dmesg > dmesg_messages`
然后本地打开dmesg_messages
文件进行分析
内核及系统日志有系统服务rsyslog
统一管理,根据其主配置文件
/etc/rsyslog.conf
中的设置决定将内核消息及各种系统程序消息记录到什么位置.
/var/log/access-log
记录HTTP/WEB的信息
/var/log/dmesg
内核启动时的日志,开机时在屏幕显示,该命令查
看本地系统启动时的硬件和内核缓冲信息,用dmesg
命令查看
/var/log/boot.log
记录系统启动的软件日志信息
日志文件 | 日志作用 | 查看方式 |
---|---|---|
dmesg |
主要记录系统在开机时内核检测过程所产生的信息 | 通过执行dmesg 命令查看. |
/var/log/wtmp or /var/log/faillog |
这两个文件可以记录正确登陆系统者的账户信息(wtmp),与错误登陆时所使用的账户信息 | last 命令就是读取wtmp文件来获取的. |
/var/log/btmp |
记录错误登陆日志,这个文件是二进制的 | 不能使用cat 命令查看,而要使用lastb 命令查看. |
/var/run/utmp |
记录当前一登陆用户的信息 | 不能使用cat命令查看,而要使用w ,who ,users 命令来查询. |
/var/log/lastlog |
记录了系统上面所有账户最近一次登陆系统时的相关信息 | lastlog 命令就是读取这个文件里的记录来显示的. |
/var/log/secure |
系统安全日志,记录用户远程登录,认证过程中的事件信息,只要涉及到需要用户名和密码的操作,那么当登陆系统是(不论正确错误),都会记录到这里. | |
/var/log/messages |
这个文件非常重要,几乎系统发生的错误信息,或者重要信息都会被记录在这里.系统公共常规日志,记录内核消息,包括启动,IO/网络/程序错误日志 | |
/var/log/cron |
主要记录关于crontab 计划任务的相关信息,比如,系统计划任务的错误配置,计划任务的修改等. |
查看系统计划任务日志 tail --f /var/log/cron 使用关键字过滤计划任务日志 grep “alidata” /var/log/cron |
/var/log/malilog or /var/log/mail/* |
记录着邮件的往来信息,默认是postfix邮件服务器的一些信息. |
messages
日志位于/var/log
路径下,其中messages
是记录当前系统日志
的文件, 其他形如messages-YYYYMMDD
的文件是历史日志
信息。一般通过系统异常的时间点
或者关键字
在messages
日志中查找相关信息进行分析。
# 查看messages日志
more /var/log/messages
## tail用来查看最后十条log,和cat效果是一样的
# 查看最后10条系统常规日志
tail /var/log/messages
# 持续查看OS日志
tail -f /var/log/messages
# 查看系统安全日志
tail secure
tail /var/log/secure
## 读取的是/var/log/secure文件
# 持续查看系统安全日志
tail -f secure
tail -f /var/log/secure
https://blog.csdn.net/omaidb/article/details/120104880
#查看系统计划任务日志
tail -f /var/log/cron
Kdump
是一个用于收集系统崩溃
、死锁
或死机
时内核参数的一个服务。举例来说,如果有一天系统崩溃
了,在这时Kdump服务
就会开始工作
,将系统的运行状态和内核数据收集到一个“dump core
”的文件中,便于后续让运维人员分析找出问题所在。
• 触发panic
的情况下,在/var/crash
目录下会生成以问题发生时间点命名
的文件夹,其下有vmcore
文件(即kdump
)以及vmcore-dmesg.txt
文件。vmcore-dmesg
文件包含calltrace
信息,可用于基本的问题定界。
• 通过vmcore可以找到崩溃时间、kernel panic的原因等信息;
• 通过分析堆栈一般可以定位出系统故障的真正原因;
DATE
:发生panic
的时间。UPTIME
:系统发生panic
前持续运行的时间。LOAD AVERAGE
:1分钟,5分钟,15分钟内统计的CPU负载平均值(正在运行和准备运行的任务的数目)TASKS
:发生panic
时系统中进程总数,包括处于各种状态的进程总和。PANIC
:系统发生panic
的原因及相应信息。PID
:发生panic
的任务号。COMMAND
:发生panic
的任务正在执行的操作。TASK
:发生panic
的任务描述符。THREAD_INFO
:发生panic
时thread_info
结构体的地址。STATE
:发生panic
的任务当时的状态。• 确认系统异常重启
的大概时间点
(告警、日志、系统最后一次启动时间等)
• 通过/var/log/message
文件查找Command line
日志,确认在问题时间点附近有相关字段
来确认是否为正常reboot 命令调用:
• 通过/var/log/message
文件,确认是否有用户态程序调用导致的重启
• 通过/var/crash
目录下是否有以异常时间命名的文件夹
和crash日志
产生,确认是否为panic
导致的重启
或者oom
导致的重启
(oom
指的是程序在申请内存的时候,内存不足
导致系统的重启)
# 查看crash下是否有时间文件夹
ll /var/crash/
• 在虚拟机场景
下排查主机日志
看是否是主机发起的重启,在物理机场景
下查看BMC
日志看是否有物理机掉电
• 查看串口日志
打印是否有异常重启
的信息
Linux系统需要定期巡检,以检查服务器软硬件使用情况,相当于对人的体检,确保可以及时发现问题、解决问题,降低损失,常用的巡检命令如下:
https://www.linuxcool.com/who
who
命令读取/var/run/utmp
文件
# 查看使用系统的当前用户有哪些
# 查看活动用户
w
users
# 查看上次重启时间
who -b
# 查看指定用户信息
id < 用户名>
# 查看所有用户的定时任务
crontab -l
https://www.linuxcool.com/last
-a
:把从何处登入系统的主机名称或ip地址,显示在最后一行;
-d
:将IP地址转换成主机名称;
-f
: <记录文件>:指定记录文件。
-n
: <显示列数>或-<显示列数>:设置列出名单的显示列数;
-R
:不显示登入系统的主机名称或IP地址;
-x
:显示系统关机,重新开机,以及执行等级的改变等信息。
# 显示登录成功的用户信息
last
第一列 | 第二列 | 第三列 | 第四列 | 第五列 | 第六列 |
---|---|---|---|---|---|
用户名 | 终端位置 | 来源IP或主机名 | 登录开始时间 | 结束时间 | 持续时间 |
root | pts/2 | 192.168.0.1 | Tue Mar 22 14:30 | still | login in(还未退出) |
root | pts/0 | 192.168.0.1 | Tue Mar 22 13:47 | down(直到正常关机) | 00:01 |
reboot | system boot | 3.10.0-957.el7.x | Tue Mar 22 13:49 | crash(直到强制关机) |
https://www.linuxcool.com/lastb
常用参数:
-a
把从何处登入系统的主机名称或IP地址显示在最后一行。
-d
将IP地址转换成主机名称。
-f
<记录文件> 指定记录文件。
-n
<显示列数>或-<显示列数> 设置列出名单的显示列数。
-R
不显示登入系统的主机名称或IP地址。
-x
显示系统关机,重新开机,以及执行等级的改变等信息。
# 显示登录失败的用户信息
lastb
第一列 | 第二列 | 第三列 | 第四列 | 第五列 | 第六列 |
---|---|---|---|---|---|
用户名 | 终端位置 | 来源IP或主机名 | 登录开始时间 | 结束时间 | 持续时间 |
# 查看系统所有用户
cut -d: -f1 /etc/passwd
# 查看系统所有组
cut -d: -f1 /etc/group
# 查询特权用户特权用户(uid 为0)
awk -F: '$3==0{print $1}' /etc/passwd
# 查找远程可以登录的账户
## $1:MD5(长度 22个字符)
## $5:SHA-256(长度 43 个字符)
## $6:SHA-512(长度86 个字符)
awk '/\$1|\$5|\$6/{print $1}' /etc/shadow
# 检查sudo权限
cat /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL"
cat /proc/cpuinfo # 查看CPU信息
lspci -tv # 列出所有PCI设备
lsusb -tv # 列出所有USB设备
df -h # 查看各分区使用情况
du -sh < 目录名> # 查看指定目录的大小
grep MemTotal /proc/meminfo # 查看内存总量
grep MemFree /proc/meminfo # 查看空闲内存量
free -m # 查看内存使用量和交换区使用量
swapon -s # 查看所有交换分区
mount | column -t # 查看挂接的分区状态
fdisk -l # 查看所有分区
hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
dmesg | grep IDE # 查看启动时IDE设备检测状况
hostname # 查看计算机名
uname -a # 查看内核/操作系统/CPU信息
head -n 1 /etc/issue # 查看操作系统版本
lsmod # 列出加载的内核模块
env # 查看环境变量
# 查看所有网络接口的属性
ifconfig
# 查看防火墙设置
iptables -L
# 查看路由表
route -n
# 查看所有监听端口
netstat -lntp
# 查看所有已经建立的连接
netstat -antp
# 查看网络统计信息
netstat -s
使用 journalctl
命令获取日志并将日志传输到远程 rsyslog 服务器(IP 地址为 172.16.70.99)。
# 将日志传送到原创rsyslog服务器
journalctl -o short -f |nc -uv 172.16.70.99 514
## 打印
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Connected to 172.16.70.99:514.
https://blog.csdn.net/omaidb/article/details/120425069