2023.5.9核心命令讲解实战

Posted BXXY5961

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2023.5.9核心命令讲解实战相关的知识,希望对你有一定的参考价值。

 

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 user1@172.24.210.101
ssh -p 2211 root@140.206.185.170

scp

scp root@10.10.10.10:/opt/soft/nginx-0.5.38.tar.gz /opt/soft/     #将远程主机文件拷到本主机
scp -P 2222 /opt/soft/nginx-0.5.38.tar.gz root@10.10.10.10:/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/

配置语法

支持别名,别名要大写

  • 主机别名: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:指

实战讲解磁盘分区命令fdisk

实战讲解磁盘分区命令fdisk

介绍MBR分区、主分区、扩展分区和逻辑分区

 

  柱面是分区的最少单位

主引导记录(Master Boot Record,缩写:MBR),又叫做主引导扇区

技术分享



分区表记录每个分区的属性,分区表每记录一个分区消耗16字节,分区表只能区分主分区和扩展分区

主分区:我们在硬盘划分出来可以直接使用的分区

扩展分区:我们在硬盘上划出来不能直接使用,要在上面再划分分区才能直接使用

逻辑分区:在硬盘上的扩展分区上再划分出来的分区

 

列出可用的磁盘设备使用情况和可用性

 

  一块硬盘最多只能划分的分区主分区+扩展分区=4  主分区只能划分4

扩展分区只能最多有一个

P+E<=4

E<=1

GBT类型的分区可以划分128个主分区

 

 

 

fdisk命令使用

查看分区信息

fdisk -l 查看本机上所有硬盘的分区信息

[[email protected] ~]# fdisk -l
 
Disk /dev/sda: 21.5 GB, 21474836480 bytes        <===显示硬盘大小
255 heads, 63sectors/track, 2610 cylinders                    <===显示柱面信息
Units = cylinders of 16065 * 512 = 8225280bytes    <===显示柱面单位和每个柱面大小
Sector size (logical/physical): 512 bytes /512 bytes
I/O size (minimum/optimal): 512 bytes / 512bytes
Disk identifier: 0x00088aac
下面是显示sda硬盘分区信息
  Device Boot      Start         End      Blocks  Id  System  /dev/sda1  *           1          26      204800  83  Linux
Partition 1 does not end on cylinderboundary.
/dev/sda2              26         287    2097152   82  Linux swap / Solaris
Partition 2 does not end on cylinderboundary.
/dev/sda3             287        2611   18668544   83  Linux
 
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280bytes
Sector size (logical/physical): 512 bytes /512 bytes
I/O size (minimum/optimal): 512 bytes / 512bytes
Disk identifier: 0x00000000

 

fdisk -l /dev/sda查看系统上某个硬盘的分区信息

[[email protected] ~]# fdisk -l /dev/sda
 
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280bytes
Sector size (logical/physical): 512 bytes /512 bytes
I/O size (minimum/optimal): 512 bytes / 512bytes
Disk identifier: 0x00088aac
 
   Device Boot      Start         End      Blocks  Id  System
/dev/sda1  *           1          26      204800  83  Linux
Partition 1 does not end on cylinderboundary.
/dev/sda2              26         287    2097152   82  Linux swap / Solaris
Partition 2 does not end on cylinderboundary.
/dev/sda3             287        2611   18668544   83  Linux

 

 

使用fdisk对硬盘sdb分区:

步骤:分区---更新分区表---格式化分区---挂载

[[email protected] ~]# fdisk /dev/sdb
Device contains neither a valid DOSpartition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with diskidentifier 0x885f5c02.
Changes will remain in memory only, untilyou decide to write them.
After that, of course, the previous contentwon‘t be recoverable.
 
Warning: invalid flag 0x0000 of partitiontable 4 will be corrected by w(rite)
 
WARNING: DOS-compatible mode is deprecated.It‘s strongly recommended to
        switch off the mode (command ‘c‘) and change display units to
        sectors (command ‘u‘).
 
Command (m for help): m        <------m显示当前帮助
Command action
  a   toggle a bootable flag
  b   edit bsd disklabel
  c   toggle the dos compatibilityflag
  d   delete a partition              <===删除一个分区
   l  list known partition types      <===列出己知分区类型
   m  print this menu                                   <===打印帮助
   n  add a new partition                    <===新建一个分区
  o   create a new empty DOSpartition table
  p   print the partition table          <===显示分区表信息
  q   quit without saving changes       <===不保存直接退出
  s   create a new empty Sundisklabel
  t   change a partition‘s system id      <===改变一个分区类型ID
  u   change display/entry units
  v   verify the partition table
  w   write table to disk and exit        <===保存并退出
  x   extra functionality (expertsonly)

 

~~新建一个分区:

fdisk /dev/sdb 然后按n,新建一个分区

[[email protected] ~]# fdisk /dev/sdb
Device contains neither a valid DOSpartition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with diskidentifier 0xc5331452.
Changes will remain in memory only, untilyou decide to write them.
After that, of course, the previous contentwon‘t be recoverable.
 
Warning: invalid flag 0x0000 of partitiontable 4 will be corrected by w(rite)
 
WARNING: DOS-compatible mode is deprecated.It‘s strongly recommended to
        switch off the mode (command ‘c‘) and change display units to
        sectors (command ‘u‘).
 
Command (m for help): n     <===新建一个分区
Command action
   e  extended           <===新建分区类型逻辑分区
   p  primary partition (1-4)     <===新建分区类型主分区
p                                                            <===我们选择分区类型为主分区
Partition number (1-4): 1      <===分区编号
Firstcylinder (1-652, default 1): 1         <===分区的开始柱面   
Last cylinder, +cylinders or+size{K,M,G} (1-652, default 652): 100  <===分区结束柱面     也可以用K、M、G来添加,如+1G、+500M 、+1024K
Command (m for help): p       <===分完区后按P打印分区信息
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280bytes
Sector size (logical/physical): 512 bytes /512 bytes
I/O size (minimum/optimal): 512 bytes / 512bytes
Disk identifier: 0xc5331452
 
  Device Boot      Start         End      Blocks  Id  System
/dev/sdb1               1         100      803218+ 83  Linux

 

 

 

~~删除一个分区

[[email protected] ~]# fdisk /dev/sdb  
 
WARNING: DOS-compatible mode is deprecated.It‘s strongly recommended to
        switch off the mode (command ‘c‘)and change display units to
        sectors (command ‘u‘).
 
Command (m for help): p   <===打印分区表信息
 
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280bytes
Sector size (logical/physical): 512 bytes /512 bytes
I/O size (minimum/optimal): 512 bytes / 512bytes
Disk identifier: 0x61a28730
 
  Device Boot      Start         End      Blocks  Id  System
/dev/sdb1               1         100      803218+ 83  Linux
/dev/sdb2             101         200      803250  83  Linux
 
Command (m for help): d          <===删除一个分区
Partition number(1-4): 2                             <===选择要删除的分区编号
 
Command (m for help): p         <===打印分区表信息
 
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280bytes
Sector size (logical/physical): 512 bytes /512 bytes
I/O size (minimum/optimal): 512 bytes / 512bytes
Disk identifier: 0x61a28730
 
  Device Boot      Start         End      Blocks  Id  System
/dev/sdb1               1         100      803218+ 83  Linux
 
Command (m for help): w   <===保存并退出


 

~~更新分区表

新建分区后,分区表是还没有新建的分区信息,要对分区表进行更新partprobe/dev/sda 更新分区表(对系统所在硬盘不生效,如果更新sdb,sdc系统不在的硬盘就会生效)

  partx –a/dev/sda   强制刷新分区表

 

 

~~格式化分区

更新完分区别后,要对该分区进行硬式化

mkfs/dev/sda7   sda7分区进行格式化(要重启系统)

默认mkfis格式化出来的文件系统是ext2,我们要是想把sda7格式化成ext4时,我们用mkfs.ext4来对sda7进行格式化并更改其文件系统类型 如:mkfs.ext4 /dev/sda7

mkfs.ext4 -b 1024 /dev/sdb3 可以格式化并修改分区block值为1024

 

格式化完分区后,会提示每隔23周或180天检查一下系统,

This filesystem will be automaticallychecked every 23 mounts or

180 days, whichever comes first.  Use tune2fs -c or -i to override.

我们用tune2fs -c -1 /dev/sdb3 来处理

 

~~挂载分区和删除挂载分区

把新建的分区挂载到/目录上才能进行防问

临时挂载分区:

mount–a /dev/sda3 /aa

umount/dev/sda3   umount 设备或挂载点

系统启动自动挂载:

1   mkdir /aa 先在/目录新建一个目录并命名  如:aa

     2   vim /etc/fstab  配置fstab把新建好的分区sda7挂载到/aa目录里,让其在系统启动时自动挂载到/aa目录里(要重启系统)

[[email protected] ~]# vi /etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Jan  9 18:07:20 2014
#
# Accessible filesystems, by reference, aremaintained under ‘/dev/disk‘
# See man pages fstab(5), findfs(8),mount(8) and/or blkid(8) for more info
#
UUID=02835af0-7725-42ec-90a4-b4cf397823c3/                       ext4    defaults        1 1
UUID=3350ecad-ac12-4807-966b-f187a32838d6/boot                   ext4    defaults        1 2
UUID=0ee03381-3521-477c-ac99-703a1a7dbc20swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/sdb3               /mnt                    ext4    defaults        0 0

 

 

 

 

 

 

 

~~修改分区类型

 [[email protected] ~]# fdisk /dev/sdb
 
WARNING: DOS-compatible mode is deprecated. It‘sstrongly recommended to
        switch off the mode (command ‘c‘) and change display units to
        sectors (command ‘u‘).
 
Command (m for help): p
 
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x33b8ad83
 
   DeviceBoot      Start         End      Blocks  Id  System
/dev/sdb1               1         100      803218+ 83  Linux
/dev/sdb2            101         200      803250  83  Linux
/dev/sdb3            201         500     2409750  83  Linux
 
Command (m for help): t       <===修改分区类型
Partition number (1-4): 3                   <===选择要修改的分区编号
Hex code (type L to list codes): 82   <===填写修改的分区类型ID  可以按L来列出ID列表
Changed system type of partition 3 to 82 (Linux swap/ Solaris)
 
Command (m for help): p
 
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x33b8ad83
 
   DeviceBoot      Start         End      Blocks  Id  System
/dev/sdb1               1         100      803218+ 83  Linux
/dev/sdb2            101         200      803250  83  Linux
/dev/sdb3            201         500     2409750  82  Linux swap / Solaris
 
Command (m for help): w         <===保存并退出
The partition table has been altered!
 
Calling ioctl() to re-read partition table.
Syncing disks.

 

 

刷新分区表:

在我们对分区类型进行了修改之后,一定刷新分区表才能有效

partprobe  /dev/sda  linx5以下的对系统所在硬盘分区生效,对linux5以上的硬盘中有系统所在分区的不会生效,如sda中有系统分区,就不生效,sdb中就生效

partx a /dev/sda  强制刷新分区表

 

 

fdisk只对于小于2T的硬盘进行分区,大于2T的硬盘我们只能用parted来对硬盘进行分区

 


本文出自 “Mr.Xiong`s 运维日志” 博客,请务必保留此出处http://mrxiong2017.blog.51cto.com/12559394/1932657

以上是关于2023.5.9核心命令讲解实战的主要内容,如果未能解决你的问题,请参考以下文章

偏重实战案例的Linux命令图书

2023.5.9每日总结

《机器人SLAM导航核心技术与实战》先导课:如何安装Ubuntu系统

《机器人SLAM导航核心技术与实战》先导课:SLAM的应用价值与技术难点

实战讲解磁盘分区命令fdisk

Shiro 核心功能案例讲解 基于SpringBoot 有源码