top 命令
功能:经常用来监控linux的系统状况,是常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况
使用:
top
top - 15:55:37系统时间 up 11:27运行时长, 2 users登录用户, load average: 0.04(1), 0.04(5), 0.05(15)
Tasks: 197 total总进程, 1 running运行, 196 sleeping休眠, 0 stopped, 0 zombie
%Cpu(s): 1.7 us用户空间, 0.7 sy内核空间, 0.0 ni, 97.3 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st
KiB Mem : 1863004 total物理, 245272 free空闲, 774364 used使用, 843368 buff/cache缓存
KiB Swap: 2097148 total, 2089980 free, 7168 used. 909432 avail Mem
如果出于习惯去计算可用内存数,这里有个近似的计算公式:第四行的free + 第四行的buffers + 第五行的cached,按这个公式此台服务器的可用内存:18537836k +169884k +3612636k = 22GB左右。
对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了
PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)
多U多核CPU监控
在top基本视图中,按键盘数字“1”,可监控每个逻辑CPU的状况:
默认进入top时,各进程是按照CPU的占用量来排序的
top -c
显示完整进程命令COMMAND
top -n
top -n 2 表示更新两次后终止更新显示
top -d
top -d 3 表示更新周期为3秒
top -p
top -p 1 指定查看1号进程
交互模式命令
h 显示帮助画面,给出一些简短的命令总结说明
k 终止一个进程。
i 忽略闲置和僵死进程。这是一个开关式命令。
q 退出程序
r 重新安排一个进程的优先级别
S 切换到累计模式
s 改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s
f或者F 从当前显示中添加或者删除项目
o或者O 改变显示项目的顺序
l 切换显示平均负载和启动时间信息
m 切换显示内存信息
t 切换显示进程和CPU状态信息
c 切换显示命令名称和完整命令行
M 根据驻留内存大小进行排序
P 根据CPU使用百分比大小进行排序
T 根据时间/累计时间进行排序
W 将当前设置写入~/.toprc文件中
查看运行级别
who -r
runlevel
查看系统运行时间
uptime
查看默认网关
route -n
systemctl
systemctl start network
systemctl restart network
systemctl stop network
systemctl enable network
systemctl disable network
切换运行级别
init 0 关机
init 3 字符模式
init 5 图形模式
init 6 重启
kill
kill [参数] [进程号]
kill -9 254 无条件终止进程,一般来说先使用ps查询进程号grep过滤,然后使用kill命令去终止进程
killlall
killall magic_Linux02 killall 通过程序的名字,直接杀死所有进程
service
systemctl可以兼容service
service [服务] start
service [服务] restart
service [服务] stop
users
用于显示当前登录系统的所有用户的用户列表。每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话,那他的用户名将显示相同的次数
vmstat
最常见的Linux/Unix监控工具,属于sysstat包。可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况
vmstat 2 1 (2表示每个两秒采集一次服务器状态,1表示只采集一次)
find
在指定目录下查找文件
find + 目录名称 + 参数 + 关键字
find / -name initial-setup-ks.cfg
tail
用于查看文件的指定倒数内容
tail -2 111 查看111文件最后两行
tail -f 111 查看111文件的最后十行有新内容时更新
grep
用于查找文件里符合条件的字符串
-r选项可以递归查找目录下的所有文件
可以使用正则表达式,如下:
grep 111 “^a” 查找111文件以a为开头的行
grep 111 “a$” 查找111文件以a结尾的行
查询并打印;匹配行之前和之后各2行:
# 前2行
grep -rn '87419' web.log --color -A 2
# 后两行
grep -rn '87419' web.log --color -B 2
# 前后各两行
grep -rn '87419' web.log --color -C 2
chmod
控制用户对文件的权限的命令,只有文件所有者和超级用户可以修改文件或目录的权限
将文件 file1.txt 设为所有人皆可读取 :
chmod ugo+r file1.txt
将文件 file1.txt 设为所有人皆可读取 :
chmod a+r file1.txt
将文件 file1.txt 与 file2.txt 设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :
chmod ug+w,o-w file1.txt file2.txt
将目前目录下的所有文件与子目录皆设为任何人可读取 :
chmod -R a+r *
此外chmod也可以用数字来表示权限如 :
chmod 777 file
若用 chmod 4755 filename 可使此程序具有 root 的权限。
chmod 0755 file
chown
chown 需要超级用户 root 的权限才能执行此命令。
把 /var/run/httpd.pid 的所有者设置 root:
chown root /var/run/httpd.pid
将文件 file1.txt 的拥有者设为 runoob,群体的使用者 runoobgroup :
chown runoob:runoobgroup file1.txt
将当前前目录下的所有文件与子目录的拥有者皆设为 runoob,群体的使用者 runoobgroup:
chown -R runoob:runoobgroup *
把 /home/runoob 的关联组设置为 512 (关联组ID),不改变所有者:
chown :512 /home/runoob
hostname
hostname是主机名,用于在系统中标识一台机器
-
vi /etc/sysconfig/network下的HOSTNAME后,把HOSTNAME值改成TEST。修改完之后需要reboot重启服务器永久生效,如下:
HOSTNAME=test
-
临时性修改
echo test>/proc/sys/kernel/hostname
3.使用hostname 名称 更改(临时修改)
hostname test
ps/pstree
ps:查看 Linux 中当前运行的进程的命令。能列出系统中运行的进程,包括进程号、命令、CPU使用量、内存使用量等
示例:
ps -a - 列出所有运行中/激活进程
ps -ef |grep - 列出需要进程
ps -aux - 显示进程信息,包括无终端的(x)
和针对用户(u)的进程:如USER, PID, %CPU, %MEM等
pstree :linux中每一个进程都是由其父进程创建的。pstree以可视化方式显示进程,通过显示进程的树状图来展示进程间关系。如果指定了pid了,那么树的根是该pid,不然将会是init(pid: 1)
clear
清屏
防火墙
1.查看防火墙状态,开启或者关闭状态。not running 关闭状态 running 开启状态
//查看防火墙状态命令
firewall-cmd --state
2.开启防火墙
// 开启防火墙命令
systemctl start firewalld
3.设置防火墙开机自启
// 设置防火墙开机自启命令
systemctl enable firewalld
4.查看防火墙开机自启是否设置成功
// 查看防火墙开机自启是否设置成功命令
systemctl is-enabled firewalld;echo $?
5.重启防火墙
// 重启防火墙命令
systemctl restart firewalld
6.放行防火墙
1. 放行80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
2. 放行443端口
firewall-cmd --zone=public --add-port=443/tcp --permanent
3. 开放80到85端端口
firewall-cmd --zone=public --add-port=80-85/tcp --permanent
4.重新载入防火墙
firewall-cmd --reload #返回 success 代表成功
5.查看 返回 yes 代表开启成功
firewall-cmd --zone=public --query-port=80/tcp
6.删除端口 返回 success 代表成功
firewall-cmd --zone=public --remove-port=80/tcp --permanent #关闭80端口
7、重新载入 返回 success 代表成功
firewall-cmd --reload
8.查看所有打开的端口
firewall-cmd --zone=public --list-ports
9.查看端口占用
netstat -tunlp |grep 80
查看监听某个端口的进程所在位置
查看进程所在位置
有时候我们想知道某个应用在哪个目录,或者监听了某个端口的进程在哪个目录
ps aux | head -1;ps aux | grep redis
netstat -tunlp | grep 6379
得到PID 9468
然后执行:ll /proc/9468
第一个是所在目录,第二个是可执行程序的绝对路径
查看某个端口的所有网络连接
- 异常排查部分
- netstat -ano|grep #查看访问某端口的所有网络连接
查看系统环境变量
env
查看系资源
内存:
free –m
各分区使用情况:
df –h 查看磁盘剩余空间数
du -sh /gdsfApps/*(查看指定目录的大小)
du * -h | sort -hr | head -100 , 由大到小,查询前100个送占用磁盘的文件路径
网络:
ifconfig
磁盘io情况:
-x: 显示详细信息,,-x: 显示详细信息,,-k: 以 KB 为单位显示
iostat -xdk 2 3 每隔2秒,显示一次设备统计信息.总共输出3次, 显示的单位以kb为单位
rkB/s | 每秒读取数据量kb |
---|---|
wkB/s | 每秒写入数据量Kb |
svctm | I/O请求的平均时间,单位毫秒 |
await | I/O请求的平均等待时间,单位毫秒,值越小,性能越好 |
util | 一秒钟有百分几的时间用于处理I/O操作,当达到100%时,标识磁盘宽带跑满,需要优化程序或者增加磁盘,是重要的指标 |
如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷该磁盘可能存在瓶颈。
如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;
如果 await 远大于 svctm,说明I/O 队列太长,io响应太慢,则需要进行必要优化。
如果avgqu-sz比较大,也表示有当量io在等待
单独进程的磁盘IO pidstat -d 2 -p 进程号
| svctm | I/O请求的平均时间,单位毫秒 |
| await | I/O请求的平均等待时间,单位毫秒,值越小,性能越好 |
| util | 一秒钟有百分几的时间用于处理I/O操作,当达到100%时,标识磁盘宽带跑满,需要优化程序或者增加磁盘,是重要的指标 |
网络io:
需要安装ifstat