首页 > 其他分享 >2023.5.9核心命令讲解实战

2023.5.9核心命令讲解实战

时间:2023-05-09 23:13:06浏览次数:54  
标签:实战 文件 显示 -- 指定 2023.5 讲解 进程 CPU

 

1.帮助命令

man

man  [章节]  命令
man  ls
man 5 passwd

image-20230507152823680

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工具使用说明与结果分析 (aliyun.com)

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)

namp常用命令_YUKIDDDD的博客-CSDN博客

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/

配置语法

image-20220416095652440

支持别名,别名要大写

  • 主机别名: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			#扩展正则表达式

正则、扩展正则

image-20220329220849119

字符作用
+ 匹配前一个字符一次或多次
[

标签:实战,文件,显示,--,指定,2023.5,讲解,进程,CPU
From: https://www.cnblogs.com/BXXY5961/p/17386624.html

相关文章

  • 编程一小时2023.5.9
    1.#include<iostream>#include<vector>usingnamespacestd;intn;voidsolve(){cin>>n;vector<string>vec;for(inti=0;i<n;i++){stringt;cin>>t;vec.push_back(t);}......
  • 2023.5.9每日总结
    packagewangzhan;importjava.sql.Blob;publicclassPd_stu{privateintid;privateStringname;privateStringsex;privateStringclasss;privateStringmajor;privateStringfaculty;privateStringpas;privateBlob......
  • 2023.5.9编程一小时打卡
    一、问题描述:定义基类Point(点)和派生类Circle(圆),求圆的周长。Point类有两个私有的数据成员floatx,y;Circle类新增一个私有的数据成员半径floatr和一个公有的求周长的函数getCircumference();主函数已经给出,请编写Point和Circle类。#include<iostream>#include<iomanip>using......
  • 2023.5.9
    完成“学生cpp成绩计算”之后,修改Person和Student类,各自增加两个无参构造函数。仍以Person类为基础,建立一个派生类Teacher,增加以下成员数据:intID;//教师工号Studentstu[100];//学生数组intcount;//学生数目,最多不超过100floatcpp_average;//班级cpp平均分......
  • Linux之select、poll、epoll讲解
    目录1select、poll、epoll1.1引言1.2IO和Linux内核发展1.2.1整体概述1.2.2阻塞IO1.2.3非阻塞IO1.2.4select1.2.5共享空间1.2.6零拷贝1.3select1.3.1简介1.3.2select缺点1.4poll介绍1.4.1与select差别1.4.2poll缺点1.5epoll1.5.1ep......
  • Redis查询之RediSearch和RedisJSON讲解
    来源于:https://www.cnblogs.com/jingzh/p/17033403.html目录1Redis查询1.1RedisMod介绍1.2安装Redis1.3RediSearch+RedisJSON安装1.3.1下载安装1.3.2修改配置1.4RedisJSON操作1.4.1基本操作1.4.1.1保存操作JSON.SET1.4.1.2读取操作JSON.GET1.4.1.......
  • day68(2023.5.9)
    1.jQuery遍历先用js来遍历一下 运行结果: 运行结果: 运行结果: 运行结果: ......
  • usb error -71 (2023.5.8)
    //pcie转usb模组的错误打印 //echo -1 > /sys/module/usbcore/parameters/autosuspend(这个应该不行,该报错紧挨init进程后面)在有些情况下,由于低功耗情况下,USB硬件的bug或者提高USBresume的速度,我们需要禁止USB的autosuspend,下面是两种方法。1:在bootloader的bootargs......
  • 2023.5.8编程一小时打卡
    一、问题描述:初始化int类型数组date1[]={1,3,5,7,9,11,13,15,17,19,2,4,6,8,10,12,14,16,18,20},应用本章的直接插入排序模板进行排序,对此函数模板稍作修改,加入输出语句,在每一个待排序元素后显示整个数组,观察排序过程中数据的变化,加深对插入排序算法的理解。二、解题思路:首先,定......
  • 2023.5.8
    1#include<iostream>2usingnamespacestd;3#include<fstream>4#include<iomanip>5voidtest()6{7intnum;8cout<<"请输入一个十进制整数:"<<endl;9cin>>num;10//十进制输出11cou......