Linux之运维命令

查看日志

1、系统今日小于warning级别的日志

man journalctl | grep -C 2 "debug" | journalctl -xen all --since today -p warning [-o json | -o json-pretty] 

2、 系统启动日志、内核日志

# 启动 journalctl -b [-0] 
# 内核 journalctl -k 

3、指定服务或进程最新日志

# 指定服务 journalctl -xen 10 -fu sshd 
# 指定进程 ss -tnlp | grep -P '(?<=pid=)\d+' 
journalctl -xen 10 _PID=1 -f 
journalctl /usr/bin/bash 

4、管理日志

# 空间使用 journalctl --disk-usage 
# 保留500M journalctl --vacuum-size 500M 
# 保留1年 journalctl --vacuum-time 1years 

巡检命令

  • CPU
//查看系统cpu使用情况
top
//查看所有cpu核信息
mpstat -P ALL 1
//查看cpu使用情况以及平均负载
vmstat 1 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 1379800   2188 2044368    0    0     0     2    1    1  0  0 100  0  0
 0  0      0 1379676   2188 2044400    0    0     0     0  398  805  0  0 100  0  0
 0  0      0 1379552   2188 2044400    0    0     0     0  371  804  0  0 100  0  0
 0  0      0 1379552   2188 2044400    0    0     0     0  346  766  1  1 99  0  0
一般r的数量不超过CPU核数数量

//进程cpu的统计信息
pidstat -u 1 -p pid
//跟踪进程内部函数级cpu使用情况
perf top -p pid -e cpu-clock

使用 uptime 和 w 可打印出系统过去 1, 5, 15 分钟内的平均负载。同时,你可以使用 sar -q 查看动态的平均负载。

$ uptime
 19:28:49 up 290 days, 20:25,  1 user,  load average: 2.392.641.55

$ w
 19:29:50 up 290 days, 20:26,  1 user,  load average: 2.582.631.61
USER     TTY      FROM          LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    172.16.0.1    19:27    6.00s  0.05s  0.00s tmux a

在 uptime 的 man 手册中这么解释平均负载
System load averages is the average number of processes that are either in a runnable or uninterruptable state.
翻译过来就是指系统中处于可运行状态和不可中断状态的平均进程数。
对于 4 核的 CPU,如果平均负载高于 4 就代表负载过高

  • 内存
//查看系统内存使用情况
free -m
//虚拟内存统计信息
vmstat 1
//查看系统内存情况
top
//1s采集周期,获取内存的统计信息
pidstat -p pid -r 1 5

-r: 查看进程的内存信息
-s: 查看进程的 stack 信息
-p: 指定 PID
1: 每间隔 1s 打印一次
5: 共打印 5 组

//查看进程的内存映像信息
pmap -d pid
//检测程序内存问题
valgrind --tool=memcheck --leak-check=full --log-file=./log.txt  ./程序名
  • 磁盘IO
//查看系统io信息
iotop
//统计io详细信息
iostat -d -x -k 1 10
//查看进程级io的信息
pidstat -d 1 -p  pid
//查看系统IO的请求,比如可以在发现系统IO异常时,可以使用该命令进行调查,就能指定到底是什么原因导致的IO异常
perf record -e block:block_rq_issue -ag
^C
perf report
  • 网络
//显示网络统计信息
netstat -s
//显示当前UDP连接状况
netstat -nu
//显示UDP端口号的使用情况
netstat -apu
//统计机器中网络连接各个状态个数
netstat -a | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
//显示TCP连接
ss -t -a
//显示sockets摘要信息
ss -s
//显示所有udp sockets
ss -u -a
//tcp,etcp状态
sar -n TCP,ETCP 1
//查看网络IO
sar -n DEV 1
//抓包以包为单位进行输出
tcpdump -i eth1 host 192.168.1.1 and port 80 
//抓包以流为单位显示数据内容
tcpflow -cp host 192.168.1.1
  • 系统负载
//查看负载情况
uptime
top
vmstat
//统计系统调用耗时情况
strace -c -p pid
//跟踪指定的系统操作例如epoll_wait
strace -T -e epoll_wait -p pid
//查看内核日志信息
dmesg
  • 进程
按照实际使用 CPU,从大到小排序显示所有进程列表
注:-pcpu 可以显示出进程绝对路径,方便找出木马程序运行的路径。
[root@host ~]# ps aux --sort -pcpu | head -10
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root     38182  0.5  3.7 690904 143484 ?       Tl    2024 903:26 /titan/agent/titanagent -d -b /etc/titanagent
root     41197  0.3  0.8 930672 34732 ?        Sl    2024 626:04 /opt/heka/bin/hekad -config=/opt/heka/conf/hekad.toml -ip=192.66.255.130
root     75894  0.1  0.4 718720 15996 ?        Ssl   2024 106:48 /usr/local/node_exporter/node_exporter
root         1  0.0  0.1  54448  6696 ?        Ss    2024 131:31 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root         2  0.0  0.0      0     0 ?        S     2024   0:08 [kthreadd]
root         3  0.0  0.0      0     0 ?        S     2024   0:50 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<    2024   0:00 [kworker/0:0H]
root         7  0.0  0.0      0     0 ?        S     2024   0:32 [migration/0]
root         8  0.0  0.0      0     0 ?        S     2024   0:00 [rcu_bh]

# iotop -o -d 1                    
-o:仅显示正在执行磁盘 I/O 的进程。
-d:指定更新间隔(以秒为单位)。例如,-d 1 表示每秒更新一次。


常用命令

1、临时配置主机IP

ifconfig eth0 192.168.1.1
ip a add 192.168.1.100/24 dev eth0                       #设置IP地址和子网掩码
ip r add default via 192.168.1.100 dev  eth0             #设置默认网关
ip r add 0.0.0.0/0 via 192.168.1.254 dev eth0            #添加路由

2、windwos文本在linux格式问题

sed -i -e 's/\r$//'  install.sh

3、查看所在的公网IP

curl cip.cc
curl ipinfo.io
curl ip.cn
curl myip.ipip.net
curl ifconfig.me
curl ip.sb
curl inet-ip.info
curl ident.me
curl icanhazip.com
curl myip.ipip.net

4、持续测试业务可用性

while true; do curl 172.31.76.10/service/colors; sleep 0.$RANDOM; done

# 持续请求服务上的特定路径/livez
while true; do curl 172.31.18.2/livez && echo -e "\t" && curl 172.31.18.2; sleep 1; done

持续请求服务,可发现,请求均被调度至优先级为0的webservice1相关的后端端点之上;
while true; do curl 172.31.29.2; sleep .5; done

5、快速定位占用文件系统过高的文件或目录

find / -type f -size +200M -print0 | du --files0-from=- --max-depth=1 -h | sort -hr

find /:从根目录开始搜索;
-type f:仅查找类型为文件的条目;
-size +200M:查找大小超过200MB的文件:
-print0:将找到的文件名打印出来,每个文件名之间用空字符分隔(为了处理包含特殊字符的文件名);
du:显示文件或目录所占用的磁盘空间;
--files0-from=-:从标准输入读取文件名列表;
--max-depth=1:限制对文件结构的递归深度为1,即只计算文件本身所占用的空间,而不计算其子目录的内容
-h:格式以人类易读的形式输出;
sort:命令用于对文本文件中的行进行排序;
-hr:根据文件大小进行降序排序,同时处理人类可读的数字字段

6、定位占用资源率过高的服务及文件

列出cpu使用率最高的进程:
ps -eo pid,ppid,user,%cpu,%mem,cmd --sort=-%cpu | head -10

列出内存使用率最高的进程: 
ps -eo pid,ppid,user,%cpu,%mem,cmd --sort=-%mem | head -10

列出swap使用率最高的进程:
top (按Shift+F进入fileds management,按d选择swap,按s做排序)
查看进程详情:
ps-p <PID> -o comm,cmd

查看所属服务:
cat /proc/<PID>/cmdline

查看打开文件:
lsof -o <PID>

查看打开文件数量:
ls -l /proc/<PID>/fd/ | wc -l

7、释放内存空间
当你读写文件的时候,Linux内核为了提高读写性能与速度,会将文件在内存中进行缓存,这部分内存就是Cache Memory(缓存内存)。即使你的程序运行结束后,Cache Memory也不会自动释放。这就会导致你在Linux系统中程序频繁读写文件后,你会发现可用物理内存会很少。

其实这缓存内存(Cache Memory)在你需要使用内存的时候会自动释放,所以你不必担心没有内存可用。如果你希望手动去释放Cache Memory也是有办法的。

释放内存方式:

[root@node1 ~]# sync
[root@node1 ~]# echo 3 > /proc/sys/vm/drop_caches
posted @   *一炁化三清*  阅读(46)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示