- 目录
- 1.帮助命令
- 2.文件和目录操作命令
- 3.查看文件及内容处理命令
- 4.文件压缩、解压缩
- 5.信息显示命令
- 6.搜索命令文件位置
- 7.用户管理命令
- 8.网络操作命令
- 9.深入网络操作命令
- 10.磁盘、文件系统的命令
- 11.系统关机
- 12.权限管理命令
- 13.查看系统用户登陆信息
- 14.系统性能监视
- 15.进程管理命令
- 16.四剑客
- 17.其他
1.帮助命令
man
man [章节] 命令
man ls
man 5 passwd
help info
2.文件和目录操作命令
ls
ls -l #显示文件详细信息
ls -a #显示全部文件,包括隐藏文件
cd
cd - #切换到上次操作所目录
cd .. #切换到上级目录
cd ~ #切换到用户家目录
mkdir
mkdir -p /dir/file #递归创建目录
cp
cp -r /dir /tmp #递归拷贝
cp test{,.bak}
mv
mv 1.txt /tmp #移动
mv 1.txt 1.yaml #重命名
rm
rm file
rm -rf #递归,强制删除
touch
touch file #文件存在会更新时间戳
basename dirname
basename 只显示文件、目录名
dirname 显示文件/目录前面的路径
chattr lsattr
chattr +i 1.txt #禁止删除,只能增加内容
lsattr #查看文件的第二扩展文件系统属性
md5sum
md5sum file #生成md5值
md5sum test.txt >test.md5
md5sum -c test.md5
test.txt: OK
3.查看文件及内容处理命令
vim vi
三种模式:一般模式、插入模式、命令行模式
a,bs/text/text2/g #a,b行进行查找替换,没用ab默认当前行匹配,g表示整行匹配到的都替换
a,i,o,O,I,A,C #都会进入编辑
dd,yy,p,P #删除,复制,粘贴
gg,G,0 #首行,最后一行,光标到行首
ZZ #wq
:$ #跳到最后一行行首
v #可视化
ctrl+v #可视化块
cat 查看文件内容
cat test.txt
nginx1 test4
nginx2 test5
nginx3 test6
cat ##test.txt <<EOF #格式这样,EOF可换
## 123
## EOF
cat test.txt
123
more less
less 可以pagdown pagup 分页多次
more 分页一次性
tail head
默认都是显示10行
head -n +N 显示前N行
head -n -N 去掉末尾N行
tail -n -N 显示后N行
tail -n +N 第N行到尾行
tail -f *.log 实时追踪文件变化,当文件被删除或改名终止
tail -F *.log 当文件被删除,改名后创建相同名字的文件,并进行追踪
cut 提取字段、字符
cut OPTION... [FILE]...
-d #指定分隔符
-f #指定列、字段
-c #提取字符
cut -d : -f1,3 /etc/passwd
root:0
bin:1
cut -c 1-4 /etc/passwd
root
bin:
uniq 去重
uniq去重只去除连续重复的行,通常和sort配合使用
-c #统计重复次数
sort 排序
sort [OPTION]... [FILE]...
-n #按照数字大小排序
-r #反向排序,默认升序
-f #忽略大小写
-u #输出结果删除重复的行
-k X #按照分隔符排序第X字段
-t #指定分隔符
sort -nr test.txt |uniq -c
wc 统计
wc -l 统计行数
-c 统计字节
-w 统计单词
tr 字符操作
-d 删除匹配的字符
echo "HELLO WORLD" | tr 'A-Z' 'a-z'
hello world
echo "hello 123 world 456" | tr -d '0-9'
hello world
vimdiff dos2unix
vimdiff diff 比较稳健差别,vimdiff可视化
dos2unix 将DOS格式文本文件转换成Unix格式
dos2unix file
4.文件压缩、解压缩
tar
tar [OPTION]... [FILE]...
-C #解压到指定目录
-c #创建tar包
-x #解压
-f #指定文件名称
-t #查看里面的内容
-z #gzip压缩
-j #bz2压缩
-J #xz压缩
tar zcvf /root/etc.tar.gz /etc
gzip zip unzip
gzip
-d #解压缩
-l #列出压缩文件的信息
-r #压缩一个tar备份文件,压缩文件的扩展名为.tar.gz
-N #压缩保留文件时间戳
-c #保留原始文件
gzip -c aa > aa.gz
gzip -r log.tar
zip
-r #递归压缩
-q #不显示过程
-x #排除指定目录
zip -q -r html.zip *
zip -r basic.zip example/basic/ -x "example/basic/node_modules/*" -x "example/basic/build/*" -x "example/basic/coverage/*"
zip -r httpdocs.zip httpdocs --exclude *.svn* --exclude *.git*
unzip
-n #解压不覆盖原有文件
-d #指定目录
-o #不询问覆盖原有文件
unzip -n test.zip -d /tmp
unzip -o test.zip -d tmp/
5.信息显示命令
uname
uname -a #查看主机相关信息、内核版本
Linux master 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
hostname查看主机名
hostname -I 查看主机ip
uptime w
#查看负载 1分钟 5分钟 15 分钟,负载状态和CPU核数相关
3为良好,多核则3*核数
w
19:53:18 up 1 day, 4:54, 2 users, load average: 0.14, 0.07, 0.12
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 07Dec22 6days 4.33s 4.33s -bash
root pts/0 11.0.1.1 15:07 6.00s 0.41s 0.41s -bash
stat 查看文件状态信息
stat test.txt
File: ‘test.txt’
Size: 296 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 2680022 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2023-05-07 18:05:02.703408797 +0800
Modify: 2023-05-07 18:05:00.763416490 +0800
Change: 2023-05-07 18:05:00.763416490 +0800
Birth: -
top 查看系统中进行的程序
-d #指定刷新间隔,或者用s进入交互模式
-p #根据pid监控进程
交互命令:
1 #监控逻辑CPU状态
c #切换命令名称和完成命令
M #按照内存排序
P #按照CPU百分比由大到小排序
T #根据时间排序
f #选择显示的内容
free 查看内存和swap
free -m
total used free shared buff/cache available
Mem: 3932 1077 232 39 2622 2392
Swap: 0 0 0
date
date -s "20120523 01:01:01" # 这样可以设置全部时间
date +"%F %T"
dmesg 显示系统启动过程信息
6.搜索命令文件位置
which
查找并显示给定命令的绝对路径
根据PATH变量遍历查找命令所在位置
which find
/usr/bin/find
whereis
查找二进制程序、代码等相关文件的路径
whereis docker
docker: /usr/bin/docker /etc/docker /usr/libexec/docker /usr/share/man/man1/docker.1.gz
locate
基于本地数据库查询updatedb
更新数据库,模糊匹配
locate file
-i 忽略大小写
-n 显示前n行
7.用户管理命令
su
su - root #切换用户,且切换系统环境变量
sudo visudo
通过配置/etc/sudoers实现提权,sudo以提权执行命令
sudo -i #切换到root用户且切换环境变量
sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33
visudo 更改配置文件使用,有错误会提示
useradd、userdel、usermod
/etc/passwd /etc/shadow
useradd user_name 创建用户
-u 指定用户uid
-g 指定用户主组所属组gid,前提组已存在
-G 指定附加组,组要存在
-a 追加附加组,一般与G一起使用
-c 指定描述信息
-d 指定用户家目录
-s 指定用户的登录shell
-M 不创建用户家目录
userdel username 删除用户
-r 删除用户家目录和邮箱
usermod username 修改用户信息
-u 修改uid
-g 修改主组的gid
-G 修改附加组
-a 追加附加组,与G一起使用
-c 修改描述信息
-d 修改家目录
-m 移动用户家目录
-s 修改登录shell
-l 修改名称
usermod -l newuser1 newuser
usermod -md /data/new_home lutixiaya
groupadd、groupmems、groupmod
#/etc/group 存放组信息
groupadd groupname #创建组
-g 指定组gid
groupadd -g 344 jsdigname
groupmod groupname #修改组信息
-g 修改组的gid
-n 指定组的新组名
groupmems #管理组内成员
-a 添加用户到组
-g 指定组名
-d 删除组的成员
-p 清空组内用户
-l 列出组成员
groupmems -g staff -a student
groupmems -g staff -l
groupmems -d mike SUPPORT -g SUPPORT
chage
#修改密码的期限
chage [选项] 用户
chage -m 0 -M 90 -W7 -l14 user 13 分别修改用户密码的最短期限,最长期限,警告天数,和失效期限
常用选项:
-m --min #密码最短期限
-M --Max #密码最长有效期
-W #到期警告天数
-I #密码过期后保持活跃天数
-E #失效日期 -E 2022-10-10
8.网络操作命令
ifconfig
ifconfig #查看网卡信息
ifconfig ens33 up/down #激活、禁用网卡
ip
命令 | 解释 |
---|---|
ip link [show] | 查看设备信息 |
ip link set ens160 up/down | 激活、禁用网卡 |
ip addr [show] | 查看网络地址 |
ip addr add ip/netmask dev ens160 | 添加地址 |
ip addr del ip/netmask dev ens160 | 删除地址 |
ip route [show] | 查看路由表信息 |
ip route add 目标ip[/netmask] via 网关ip | 添加路由 |
ip route del 目标ip[/netmask] | 删除路由 |
ip(选项)(对象)
ip addr add 192.168.0.1/24 dev eth0 # 为eth0网卡添加一个新的IP地址192.168.0.1
ip route add 192.168.4.0/24 via 192.168.0.254 dev eth0 # 设置192.168.4.0网段的网关为192.168.0.254,数据走eth0接口
ping
icmp arp 地址解析协议 内⽹通信基于arp协议进⾏⼴播
ping www.baidu.com -c 4
ping www.baidu.com -t
ping -I ens38 www.baidu.com #-I指定网卡发送数据包
route
route -n
route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0 #增加一条到达224.0.0.0的路由。
route add -net 224.0.0.0 netmask 240.0.0.0 reject #增加一条屏蔽的路由,目的地址为224.x.x.x将被拒绝。
telnet
登录远程主机和管理(测试ip端口是否连通)
telnet 192.168.188.132
ssh
ssh [email protected]
ssh -p 2211 [email protected]
scp
scp [email protected]:/opt/soft/nginx-0.5.38.tar.gz /opt/soft/ #将远程主机文件拷到本主机
scp -P 2222 /opt/soft/nginx-0.5.38.tar.gz [email protected]:/opt/soft/scptest #将本机文件传给远程主机,-P指定端口
wget
wget -O wordpress.zip http://www.jsdig.com/download.aspx?id=1080
#指定目录、文件名下载
nc
用于探测端口
-u 使用UDP传输协议
-w 超时时间
-z 使用0输入输出
-v 显示过程
#TCP扫描端口
nc -v -z -w2 192.168.0.3 1-100
netstat ss
用来打印Linux中网络系统的状态信息
-a或--all:显示所有连线中的Socket;
-c或--continuous:持续列出网络状态;
-l或--listening:显示监控中的服务器的Socket;
-n或--numeric:直接使用ip地址,而不通过域名服务器;
-p或--programs:显示正在使用Socket的程序识别码和程序名称;
-r或--route:显示Routing Table;
-t或--tcp:显示TCP传输协议的连线状况;
-u或--udp:显示UDP传输协议的连线状况;
-v或--verbose:显示指令执行过程;
-V或--version:显示版本信息;
#网络连接状态 STATE:
CLOSED : 初始(无连接)状态。
LISTEN : 侦听状态,等待远程机器的连接请求。
ESTABLISHED: 完成 TCP 三次握手后,主动连接端进入 ESTABLISHED 状态。此时,TCP 连接已
经建立,可以进行通信。
TIME_WAIT : 在 TCP 四次挥手时,主动关闭端发送了 ACK 包之后,进入 TIME_WAIT 状态,等
待最多 MSL 时间,让被动关闭端收到 ACK 包。
服务器上有大量 TIME_WAIT 连接,如何优化 TCP 连接,快速释放 tcp 连接
MSL,即 Maximum Segment Lifetime,一个数据分片(报文)在网络中能够生存的最长时间, 在 RFC 793 中定义 MSL 通常为 2 分钟,即超过两分钟即认为这个报文已经在网络中被丢弃了。对于一 个 TCP 连接,在双方进入 TIME_WAIT 后,通常会等待 2 倍 MSL 时间后,再关闭掉连接,作用是为了 防止由于 FIN(最后一个挥手包)报文丢包,对端重发导致与后续的 TCP 连接请求产生顺序混乱
#linux 下默认 MSL 等待时间是 60 秒
cat /proc/sys/net/ipv4/tcp_fin_timeout
60
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout #通过缩短时间
time_wait 时间来快速释放链接
9.深入网络操作命令
nslookup
查询域名DNS信息 /etc/resolv.conf
nslookup(选项)(参数)(DNS服务器)
nslookup会连接到默认的域名服务器即/etc/resolv.conf的第一个dns地址
nslookup www.baidu.com
nslookup www.baidu.com 8.8.8.8
dig
可以用来测试域名系统工作是否正常
dig(选项)(参数)
-b<ip地址>:当主机具有多个IP地址,指定使用本机的哪个IP地址向域名服务器发送域名查询请求
dig www.baidu.com
traceroute
用于追踪数据包在网络上的传输时的全部路径,它默认发送的数据包大小是40字节
traceroute(选项)(参数)
traceroute www.baidu.com
traceroute -m 10 www.baidu.com # 跳数设置
traceroute -n www.baidu.com # 显示IP地址,不查主机名
traceroute -p 6888 www.baidu.com # 探测包使用的基本UDP端口设置6888
traceroute -q 4 www.baidu.com # 把探测包的个数设置为值4
traceroute -r www.baidu.com # 绕过正常的路由表,直接发送到网络相连的主机
traceroute -w 3 www.baidu.com # 把对外发探测包的等待响应时间设置为3秒
mtr
MTR简介
- MTR(My traceroute)是几乎所有Linux操作系统发行版本预装的网络测试工具,此工具也有对应的Windows操作系统版本,名称为WinMTR。WinMTR是MTR工具在Windows操作系统下的图形化实现,但进行了功能简化,仅支持设置MTR的部分参数。
- MTR工具将ping和traceroute命令的功能并入了同一个工具中,实现更强大的功能。
- mtr命令默认发送ICMP数据包进行链路探测。Linux操作系统上可以通过
-u
参数来指定使用UDP数据包用于探测, 而Windows操作系统上,WinMTR无法切换UDP数据包
tcpdump
tcpdump抓包_tcpdump抓包命令_mayue_csdn的博客-CSDN博客
tcpdump命令 是一款抓包,嗅探器工具,它可以打印所有经过网络接口的数据包的头信息,也可以使用
-w
选项将数据包保存到文件中,方便以后分析。
tcpdump(选项)
tcpdump -i eth1 #监视指定网络接口的数据包
tcpdump -i eth0 src host hostname #截获主机hostname发送的所有数据
tcpdump -i eth0 dst host hostname #监视所有送到主机hostname的数据包
tcpdump tcp port 23 and host 210.27.48.1
#获取主机210.27.48.1接收或发出的telnet包
namp
namp命令是一种网络扫描器,可以用来探测主机、子网、端口、操作系统、服务等信息
Nmap [ 扫描类型 … ] [ 通用选项 ] { 扫描目标说明 }
Nmap 常用基础命令详解-腾讯云开发者社区-腾讯云 (tencent.com)
lsof
Linux lsof 命令 - sparkdev - 博客园 (cnblogs.com)
lsof 是 LiSt Open Files 的缩写,用于查看进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP),找回/恢复删除的文件
-a 指示其它选项之间为与的关系
-c <进程名> 输出指定进程所打开的文件
-d <文件描述符> 列出占用该文件号的进程
+d <目录> 输出目录及目录下被打开的文件和目录(不递归)
+D <目录> 递归输出及目录下被打开的文件和目录
-i <条件> 输出符合条件与网络相关的文件
-n 不解析主机名
-p <进程号> 输出指定 PID 的进程所打开的文件
-P 不解析端口号
-t 只输出 PID
-u 输出指定用户打开的文件
-U 输出打开的 UNIX domain socket 文件
-h 显示帮助信息
-v 显示版本信息
lsof /etc/passwd #那个进程在占用/etc/passwd
lsof -u1000 #查看uid是100的用户的进程的文件使用情况
lsof -i:80 #显示所有打开80端口的进程 -i TCP:1-1024
lsof -p 1152 #指定进程的 PID 可以输出该进程打开的所有文件
恢复删除文件
原理为:
当进程打开了某个文件时,只要该进程保持打开该文件,即使将文件删除,它依然存在于磁盘中。
lsof -i:80
找到使用被删除文件的进程,pid 和文件描述符
描述符所在路径 /proc/$pid/fd/文件描述符
cat /proc/8838/fd/7 >> file
10.磁盘、文件系统的命令
mount umount
mount 挂载磁盘
-a:将 /etc/fstab 中定义的进行挂载
-t: 指定文件系统 :nfs
-w: 读写挂载
-s-r: 只读挂载
-o
sync、async、defaults
umout 卸载磁盘
umount 挂载点/磁盘
du df
du
du -h file
-s, --summarize 仅显示总计,只列出最后加总的值。
df
df -hT
df -i #inode号使用情况
磁盘分区命令
fdisk
查看磁盘使用情况和磁盘分区
fdisk [选项] <磁盘>
-l, --list 显示分区
#进入分区后
n 创建分区
p 打印分区
w 保存
m 帮助
t 更改分区描述
parted
磁盘大于2T的场景使用
parted [选项] [设备名] [命令]
-a:指定对齐方式。
-s:不提示用户。
-l:列出所有分区信息
-i:交互式模式;
gdisk
gdisk 仅支持gpt
gdisk -l 查看gpt分区信息
gdisk 设备名 :分区
n:创建新分区
d:删除分区
p:打印分区表
t:修改分区id
w:保存分区表退出
q:不保存退出
resize2fs
用于调整ext
系列文件系统的大小
-P 显示预期操作
-p 显示进度
-s 显示详细信息
# 检查文件系统
e2fsck -f /dev/sda1
# 调整文件系统大小
resize2fs /dev/sda1 20G
xfs_growfs xfs_repair
xfs_growfs用于扩大xfs文件系统的容量
xfs_repair检查修复xfs文件系统
xfs_growfs [options] mountpoint
# 检查文件系统
xfs_repair /dev/sda1
# 扩展文件系统
xfs_growfs /mnt
fsck e2fsck
检查并且试图修复ext文件系统中的错误
-a:自动修复文件系统,不询问任何问题
-r:采用互动模式,在执行修复时询问问题,让用户得以确认并决定处理方式
fsck -y /dev/hda2
#e2fsck
-y 自动修复
-f 强制修复
dd
dd if=/dev/zero of=sun.txt bs=1M count=1
bs= 块大小;
count= 区块数
of=<文件>:输出到文件
if= 输入文件
dumpe2fs
显示ext2、ext3、ext4文件系统的超级快和块组信息
-b 显示文件系统中保留的损坏块
-o superblock=superblock 检查文件系统时,使用指定大小的超级块。此选项通常不需要,除非文件系统向导正在检查严重损坏的文件系统的剩余部分。
-o blocksize=blocksize 检查文件系统时,指定块大小。此选项通常不需要,除非文件系统向导正在检查严重损坏的文件系统的剩余部分。
-f 强制执行
-h 只显示superblock(超级块)信息,而不显示任何块组描述符详细信息
-i 显示从e2image获得的文件系统信息,使用设备作为image文件的路径名。
-x 以十六进制显示文件系统信息
-V 显示命令版本信息,并且退出
dumpe2fs -b /dev/sda1 #打印坏块
dumpe2fs /dev/sda1 #打印文件系统上的超级块和块组信息
dump
用于备份ext文件系统
dump(选项)(参数)
-0:表示进行完整备份。
-u:表示更新备份。
-f:表示指定备份文件名。
-z:表示使用 gzip 压缩。
-j:表示使用 bzip2 压缩。
dump -0uj -f /root/boot.bak.bz2 /boot/
mkfs
格式化文件系统
mkfs(选项)(参数)
fs:指定建立文件系统时的参数;
-t<文件系统类型>:指定要建立何种文件系统;
-v:显示版本信息与详细的使用方法;
-V:显示简要的使用方法;
-c:在制做档案系统前,检查该partition是否有坏轨。
mkfs -t ext4 /dev/sdb1
mkfs.ext4
mkfs.xfs
partprobe
分区后刷新分区表
mkswap swapon swapoff
创建swap交换分区
mkswap(选项)(参数)
-c:建立交换区前,先检查是否有损坏的区块;
mkswap /dev/sdb2
swapon 激活swap分区
-a:将/etc/fstab文件中所有设置为swap的设备,启动为交换区
-s:显示交换区的使用状况
mkswap -c /dev/hdb4 (-c是检查有无坏块)
swapon -v /dev/hdb4
swapoff关闭交换分区
swapoff /dev/sda2
sync
将内存中的数据写入硬盘
- buffer:为了解决写磁盘的效率
- cache:为了解决读磁盘的效率
11.系统关机
shutdown
shutdown -h now 指定现在立即关机
halt
halt -p # 关闭系统后关闭电源。
halt -d # 关闭系统,但不留下纪录。
init
#0 停机(千万不能把initdefault 设置为0)
#1 单用户模式
#2 多用户,没有 NFS(和级别3相似,会停止部分服务)
#3 完全多用户模式
#4 没有用到
#5 x11(Xwindow)
#6 重新启动(千万不要把initdefault 设置为6)
12.权限管理命令
文件目录权限:
r 4
w 2
x 1
目录默认最大777
文件默认最大666
- 文件:
r 读取文件内容,使用cat、more等命令查看
w 可以编辑修改文件内容
x 执行文件
- 目录:
r 可以查看目录下的文件,使用ls命令
w 可以新建,删除目录下的文件,重命名文件
x 能否进入到目录下
对于目录而言,至少要有rx权限
复制文件要对文件有r权限,对文件的目录有x权限
chmod
更改文件权限
chmod u+x test.txt
chmod 755 test.txt
- suid
以文件拥有人的身份执行程序(不能用在脚本上),二进制可执行文件/程序chmod u+s
chmod 4755
- sgid
以文件拥有组的身份执行程序(不能用在脚本上),二进制可执行文件/程序 用在目录上,该目录下创建的所有文件和目录的拥有组都继承该目录的拥有组,
chmod g+s
chmod 2755
- sticky
公共目录,每个用户只能管理自己的文件,root除外。
chmod o+t
chmod 1755
chown
更改文件拥有人,属组
chown user:group file
-R或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;
umask
/etc/profile中定义值
用户uid<199 umask默认为022
uid >=199的用户 umask值为002
setfacl
设置ACL权限 会改变文件的mask值,默认权限,文件的mask值,默认权限可能会影响用户设置的acl权限
setfacl 设置acl权限
getfacl 查看acl权限
- setfacl -m 设置和修改文件的acl权限
命令 | 功能 |
---|---|
setfacl -m u:user1:rwx /file | 给指定用户设置acl权限 |
setfacl -m u::rwx /file | 给文件的拥有人设置acl权限 |
setfacl -m g:group1:rwx /file | 给指定组设置acl权限 |
setfacl -m g::rwx /file | 给文件拥有组设置acl权限 |
setfacl -m o::rx /file | 给文件其他人设置acl权限 |
setfacl -m m::rwx /file | 设置文件的mask值 |
-n 可以避免设置acl权限时影响文件的mask值
-
setfacl -x 删除单个acl权限 :setfacl -x u:user1 /file
-
setfacl -b 清空文件的acl权限 setfacl -b /file
-R 递归acl权限
-
设置默认的acl权限,一般设置于目录 setfacl -m d:u:user1:rwx /directory
sudo 用户提权
配置文件
/etc/sudoers /etc/sudoers.d/
配置语法
支持别名,别名要大写
- 主机别名:Host_Alias 主机别名 = 主机1,主机2
- 用户别名:User_Alias 用户别名 = 用户1, 用户2
- 命令别名:Cmnd_Alias 命令别名 = 命令1,命令2
13.查看系统用户登陆信息
whoami
whoami
root
who
who
root tty1 2022-12-07 17:00
root pts/0 2023-05-07 15:07 (11.0.1.1)
w
w
16:12:52 up 2 days, 1:13, 2 users, load average: 0.67, 0.36, 0.27
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 07Dec22 7days 4.33s 4.33s -bash
root pts/0 11.0.1.1 Sun15 4.00s 0.71s 0.71s -bash
last lastb
last查看登录成功的信息
lastb查看登录失败的信息
14.系统性能监视
- 内存:top free vmstat mpstat iostat sar
- CPU: top vmstat mpstat iostat sar
- I/O: vmstat mpstat iostat sar
- 进程: ipcs ipcrm lsof strace ltrace ps
- 负载: uptime
vmstat
vmstat命令 的含义为显示虚拟内存状态(“Viryual Memor Statics”),但是它可以报告关于进程、内存、I/O等系统整体运行状态
vmstat(选项)(参数)
-a:显示活动内页;
-f:显示启动后创建的进程总数;
-m:显示slab信息;
-n:头信息仅显示一次;
-s:以表格方式显示事件计数器和内存状态;
-d:报告磁盘状态;
-p:显示指定的硬盘分区状态;
-S:输出信息的单位。
vmstat 1 5 # 每秒打印一次,共输出5次
vmstat -S m 1 10 # -S k 按kb单位展示,m 按mb单位展示,每秒打印一次,共输出10次
vmstat 3
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 320 42188 167332 1534368 0 0 4 7 1 0 0 0 99 0 0
0 0 320 42188 167332 1534392 0 0 0 0 1002 39 0 0 100 0 0
0 0 320 42188 167336 1534392 0 0 0 19 1002 44 0 0 100 0 0
0 0 320 42188 167336 1534392 0 0 0 0 1002 41 0 0 100 0 0
0 0 320 42188 167336 1534392 0 0 0 0 1002 41 0 0 100 0 0
字段说明:
Procs(进程)
- r: 运行队列中进程数量,这个值也可以判断是否需要增加CPU。(长期大于1)
- b: 等待IO的进程数量。
Memory(内存)
- swpd: 使用虚拟内存大小,如果swpd的值不为0,但是SI,SO的值长期为0,这种情况不会影响系统性能。
- free: 空闲物理内存大小。
- buff: 用作缓冲的内存大小。
- cache: 用作缓存的内存大小,如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小。
Swap
- si: 每秒从交换区写到内存的大小,由磁盘调入内存。
- so: 每秒写入交换区的内存大小,由内存调入磁盘。
注意:内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。有些朋友看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。
IO(现在的Linux版本块的大小为1kb)
- bi: 每秒读取的块数
- bo: 每秒写入的块数
注意:随机磁盘读写的时候,这2个值越大(如超出1024k),能看到CPU在IO等待的值也会越大。
system(系统)
- in: 每秒中断数,包括时钟中断。
- cs: 每秒上下文切换数。
注意:上面2个值越大,会看到由内核消耗的CPU时间会越大。
CPU(以百分比表示)
- us: 用户进程执行时间百分比(user time)
us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。
- sy: 内核系统进程执行时间百分比(system time)
sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。
- wa: IO等待时间百分比
wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。
- id: 空闲时间百分比
mpstat
mpstat命令 主要用于多CPU环境下,它显示各个可用CPU的状态信息。这些信息存放在/proc/stat
文件中
mpstat [选项] [<间隔时间> [<次数>]]
-P:指定CPU编号。
mpstat -P ALL 2 3 #2s一次 3次
mpstat
Linux 3.10.0-1160.71.1.el7.x86_64 (centos) 08/14/2022 _x86_64_ (4 CPU)
04:28:36 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
04:28:36 PM all 0.03 0.00 0.07 0.00 0.00 0.01 0.00 0.00 0.00 99.89
- %user:表示处理用户进程所使用CPU的百分比。
- %nice:表示在用户级别处理经nice降级的程序所使用CPU的百分比。
- %system:表示内核进程使用的CPU百分比。
- %iowait:表示等待进行I/O所占用CPU时间百分比。
- %irq:表示用于处理系统中断的CPU百分比。
- %soft:表示用于处理软件中断的CPU百分比。
- %steal:在管理程序为另一个虚拟处理器服务时,显示虚拟的一个或多个CPU在非自愿等待中花费的时间的百分比。
- %guest:表示一个或多个CPU在运行虚拟处理器时所花费的时间百分比。
- %gnice:表示一个或多个CPU在运行经nice降级后的虚拟处理器时所花费的时间百分比。
- %idle:CPU的空闲时间百分比。
iostat
iostat命令 被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析
iostat [选项] [时间间隔] [次数]
-c:仅显示CPU使用情况;
-d:仅显示设备利用率;
-k:显示状态以千字节每秒为单位,而不使用块每秒;
-m:显示状态以兆字节每秒为单位;
-p:仅显示块设备和所有被使用的其他分区的状态;
-t:显示每个报告产生时的时间;
-V:显示版号并退出;
-x:显示扩展状态。
iostat 2 3
iostat /dev/sda
Linux 3.10.0-957.el7.x86_64 (master) 05/08/2023 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
1.21 0.00 1.50 0.03 0.00 97.25
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 7.14 7.63 49.39 1410831 9136458
- 磁盘设备利用情况报告:
- Device:设备名称。
- tps:每秒向磁盘设备请求数据的次数,包括读、写请求。
- Blk_read/s:每秒从设备读取的数据量 (以扇区或者KB为单位)。
- Blk_wrtn/s:每秒向设备写入的数据量 (以扇区或者KB为单位)。
- Blk_read:从系统启动到当前读取的总数据量 (以扇区或者KB为单位)。
- Blk_wrtn:从系统启动到当前写入的总数据量 (以扇区或者KB为单位)。
- 网络文件系统利用情况报告:
- op/s:每秒执行的操作数。
- rpc_bklog/s:每秒RPC请求队列中等待执行的请求数。
如果使用-x选项,可以显示更详细的磁盘设备利用情况报告,包括以下内容:
- rrqm/s:每秒对该设备的读请求被合并次数。
- wrqm/s:每秒对该设备的写请求被合并次数。
- r/s:每秒完成的读 I/O 设备次数。
- w/s:每秒完成的写 I/O 设备次数。
- rkB/s:每秒读数据量 (以KB为单位)。
- wkB/s:每秒写数据量 (以KB为单位)。
- avgrq-sz:平均每次设备I/O操作的数据大小 (以扇区为单位)。
- avgqu-sz:平均I/O队列长度。
- await:平均每次设备I/O操作的等待时间 (以毫秒为单位)。
- svctm:平均每次设备I/O操作的服务时间 (以毫秒为单位)。
- %util:一秒中有百分之多少的时间用于 I/O 操作。
sar
系统运行状态统计工具
sar [options] [-A] [-o file] [interval] [count]
-A: 显示所有的报告信息;
-b: 显示I/O速率;
-B: 显示换页状态;
-c: 显示进程创建活动;
-d: 显示每个块设备的状态;
-e: 设置显示报告的结束时间;
-f: 从指定文件提取报告;
-i: 设状态信息刷新的间隔时间;
-n: 报告网络统计信息。
-P: 报告每个CPU的状态;
-R: 显示内存状态;
-u: 显示CPU利用率;
-v: 显示索引节点,文件和其他内核表的状态;
-w: 显示交换分区状态;
-x: 显示给定进程的状态。
-r: 以分页方式显示输出,每页最多显示 100 行。
-o: 输出选项,指定要显示的列。例如,`-o mrk,prt,cvg` 将显示 CPU 使用率、进程标识符、磁盘使用率 和 网络流量。
-t: 时间戳选项,指定要在输出中添加时间戳。
-s: 统计选项,指定要显示的统计数据的类型。例如,`-s us,ms` 将显示 CPU 使用率的 us 和 ms 时间段的平均值。
-c: 选项用于指定要发送的命令。例如,`-c ls` 将显示当前目录中的文件和子目录列表。
15.进程管理命令
ipcs ipcrm ipcmk
ipcs
分析消息队列共享内存和信号量,进程间通信的状态
ipcs(选项)
-a, --all 显示全部(默认值)
-q, --queues 消息队列
-m, --shmems 共享内存
-s, --semaphores 信号量
-t, --time 显示最后一次操作时间
-p, --pid 显示创建者和最后一次操作者的PID
-c, --creator 显示创建者和拥有者的 userid, groupid
-l, --limits 显示对资源的限制
-u, --summary 显示当前状态摘要
--human 以友好的方式显示大小(eg: 500K)
-b, --bytes 以字节为单位显示大小(仅影响`-l`选项)
-i, --id <id> 显示指定ID的资源
-h, --help 显示帮助文档并退出
-V, --version 显示版本信息并退出
ipcrm
删除消息队列、信号集、或者共享内存标识,删除IPC资源
ipcrm [ -m SharedMemoryID ] [ -M SharedMemoryKey ] [ -q MessageID ] [ -Q MessageKey ] [ -s SemaphoreID ] [ -S SemaphoreKey ]
ipcmk
创建IPC资源
ipcmk -M size 创建一个大小为size字节的共享内存
ipcmk -Q 创建一个消息队列
ipcmk -S number 创建一个包含number个元素的信号量数组
ipcmk -p mode 设置资源的访问权限,缺省为0644
kill pkill killall
kill
kill通过手动发送信号操作进程。
kill -15 pid
kill -l #查看信号
15 正常结束,默认值,让进程自己结束
9 强制结束,终端或者内核将进程结束。
1 重新加载配置文件
19 将进程后台暂停
killall
使用进程的名称来杀死一组进程
killall -9 vim
pkill
可以按照进程名杀死进程
pgrep -l gaim
2979 gaim
pkill gaim
pgrep
根据用户给出的信息在当前运行进程中查找并列出符合条件的进程ID(PID)
pgrep(选项)(参数)
选项
-U: 查找某个用户的进程id
-G: 查找某个组的进程id
-P: 根据父进程ID,查找所有子进程id
-l 打印进程名
-o 程序先启动的进程的pid
-n 程序后启动的进程pid
-d 定义多个进程之间的分隔符,默认换行符
ps pstree
ps
查看进程
-a 查看所有终端的进程
-u 打印进程的详细信息,包裹进程的拥有人,使用百分比
-x 打印不属于任何终端的进程
-e 所有进程 包括终端和非终端的
-f 额外信息 ef组合用
-o 指定输出信息格式 #ps -axo pid,user,command
--sort 指定排序参数 支持升/降序 +/- ps aux --sort=-%mem
pstree
pstree命令 以树状图的方式展现进程之间的派生关系
-p:显示pid;
-a:显示每个程序的完整指令,包含路径,参数或是常驻服务的标示;
-u:显示用户名称;
contab
周期计划任务
crontab -l #列出当前用户下的 cron 服务的详细内容
crontab -u user1 -l #列出指定用户 user1 下的 cron 服务的详细内容
crontab -r #删除 cron 服务
crontab -e #编辑 cron 服务
/var/spool/cron 存放计划任务
设置周期计划任务
建议不使用crontab管理命令来创建周期计划任务,而是在/etc下相关文件写周期任务
#相关文件
/etc/contab #系统任务调度配置文件
/etc/cron.d/ #自定义任务
/etc/cron.deny #拒绝的用户
/etc/cron.allow #允许的用户
cron.monthly/ #每月执行的脚本;
cron.weekly/ #每周执行的脚本;
cron.daily/ #每天执行的脚本;
cron.hourly/ #每小时执行的脚本;
任务书写规则
分 时 日 月 周 用户 命令(尽量写绝对路径)
分:0-59
时:0-23
日:1-31
月:1-12
周:0-7
特殊符号:
*代表任意
/指定间隔时间 */10 每隔10分钟执行
-代表从某个数字到某个数字之间执行 7-12
, 6,10-13,20 指定时间 6点,10到13点,20点执行
jobs,fg,bg
jobs查看当前终端的后台任务
vim 1.txt & #将任务放到后台运行
fg
fg %jobnum 将后台进程放在前台运行
bg
bg %jobnum (恢复)后台运行
strace lstrace
strace命令是用来跟踪进程执行时的系统调用和所接收的信号的,它可以帮助我们诊断、调试和统计程序的行为
深入分析使用
c 统计每一系统调用的所执行的时间,次数和出错的次数等.
-d 输出strace关于标准错误的调试信息.
-f 跟踪由fork调用所产生的子进程.
-t 在输出中的每一行前加上时间信息.
-T 显示每一调用所耗的时间.
-v 输出所有的系统调用.一些调用关于环境变量,状态,输入输出等调用由于使用频繁,默认不输出.
-V 输出strace的版本信息.
-e expr 指定一个表达式,用来控制如何跟踪.格式:[qualifier=][!]value1[,value2]...
-e trace=set 只跟踪指定的系统 调用.例如:-e trace=open,close,rean,write表示只跟踪这四个系统调用.默认的为set=all.
-e trace=file 只跟踪有关文件操作的系统调用.
-e trace=process 只跟踪有关进程控制的系统调用.
-e trace=network 跟踪与网络有关的所有系统调用.
-e strace=signal 跟踪所有与系统信号有关的 系统调用
-e signal=set 指定跟踪的系统信号.默认为all.如 signal=!SIGIO(或者signal=!io),表示不跟踪SIGIO信号.
-e read=set 输出从指定文件中读出 的数据.例如: -e read=3,5
-e write=set 输出写入到指定文件中的数据.
-o filename 将strace的输出写入文件filename
-p pid 跟踪指定的进程pid.
-u username 以username的UID和GID执行被跟踪的命令
ltrace
用来跟踪进程调用库函数的情况
ltrace [option ...] [command [arg ...]]
-a 对齐具体某个列的返回值。
-c 计算时间和调用,并在程序退出时打印摘要。
-C 解码低级别名称(内核级)为用户级名称。
-d 打印调试信息。
-e 改变跟踪的事件。
-f 跟踪子进程。
-h 打印帮助信息。
-i 打印指令指针,当库调用时。
-l 只打印某个库中的调用。
-L 不打印库调用。
-n, --indent=NR 对每个调用级别嵌套以NR个空格进行缩进输出。
-o, --output=file 把输出定向到文件。
-p PID 附着在值为PID的进程号上进行ltrace。
-r 打印相对时间戳。
-s STRLEN 设置打印的字符串最大长度。
-S 显示系统调用。
-t, -tt, -ttt 打印绝对时间戳。
-T 输出每个调用过程的时间开销。
-u USERNAME 使用某个用户id或组ID来运行命令。
-V, --version 打印版本信息,然后退出。
-x NAME treat the global NAME like a library subroutine.(求翻译)
16.四剑客
grep egrep
-AX #匹配行及后面X行
-BX #匹配行及前面X行
-CX #匹配行前后X行
-i #忽略大小写
-q #静默输出
-o #仅显示匹配到的内容
-n #显示行号
-c #统计匹配到的行数
-v #匹配结果取反
-E #扩展正则表达式
正则、扩展正则
字符 | 作用 |
---|---|
+ | 匹配前一个字符一次或多次 |
[
标签:实战,文件,显示,--,指定,2023.5,讲解,进程,CPU
From: https://www.cnblogs.com/BXXY5961/p/17386624.html
相关文章
|