主要编写Linux系统常用命令、软件管理命令、文件管理命令、网络管理命令、磁盘管理命令、进程管理命令、驱动管理命令等。本文命令较多,目录在此。
目录
一、系统常用命令
本节只简单讲述功能,不展开详细说明。
命令 | 作用 |
ls | 查看那目录先文件信息 |
cd | 进入到目录 |
pwd | 查看绝对路径 |
clear | 清屏 |
touch | 创建文件,存在更新时间戳 |
mkdir | 创建目录 |
cp | 复制文件或目录 |
mv | 移动文件或目录 |
rm | 删除文件或目录 |
echo | 将内容追加到文件(默认追加到终端) |
cat | 打印文件中的内容 |
su | 切换用户 |
sudo | 以管理员身份执行一条指令 |
chmod | 修改文件权限 |
date | 修改或查看时间 |
grep | 在流中查找匹配行 |
env | 设置环境变量 |
uname | 获取系统信息 |
exit | 退出终端 |
二、软件管理命令
1.yum
1.说明
centos下载工具。
2.格式
yum [options] COMMAND 软件名
命令列表:
deplist 列出安装包的依赖关系
downgrade 降级包
info 显示详细信息
install 安装
list 列出安装包
reinstall 重装安装包
update 更新安装包
remove 删除选项:
-y/--assumeyes 自动应答yes
--assumeno 自动应答no
--skip-broken 忽略依赖问题
--downloadonly 只下载不安装
--downloaddir=DLDIR 指定安装包的下载目录3.例子:
(1)更新包yum update
(2)安装net-snmpyum install -y net-snmp
(3)卸载net-snmpyum erase/remove -y net-snmp
(4)清空缓存yum clean all
(5)搜索软件包net-snmpyum search net-snmp
(6)只下载不安装yum install --downloadonly --downloaddir /home/sml/
(7)查看net-snmp详细信息yum info net-snmp
4.注意:
单独的服务器系统中由于yum.repos.d的配置,安装软件需要更改指令为:
yum --disablerepo=* --enablerepo=c6-media install net-snmp
2.apt/apt-get
1.说明
deban下载工具。
2.格式
apt [options] command
apt-get [options] command
命令列表:
install 安装
download 下载
remove 删除3.例子:
(1)在线安装
32位系统:apt-get install 软件
apt-get download 软件(只下载,不安装)
64位系统:
apt install 软件
apt download 软件(只下载,不安装)
(2)离线安装
dpkg -i 软件
(3)卸载在线安装软件
32位系统:
apt-get auto remove 软件名
64位系统:
apt auto remove 软件名
(4)卸载离线安装软件
dpkg -r 软件名
三、文件管理命令
1.内容管理
1.sed(流编辑器)
1.说明
(1)每次仅读取一行内容;
(2)按照预先提供的规则对数据进行编辑;
(3)输出编辑的结果,重复(1)、(2)过程直到文件所有数据处理完成;
2.格式
sed [选项] [脚本语句] 文件名
选项
-n, --quiet, --silent
取消自动打印
-e script, --expression=script
将脚本添加到要执行的命令中-f script-file, --file=script-file
在需要执行的命令中添加script-file的内容--follow-symlinks
在处理时遵循符号链接-i[后缀], --in-place[=后缀]
直接编辑文件(如果提供了后缀则进行备份)-l N, --line-length=N
为' l'命令指定所需的换行长度
--posix
禁用所有GNU扩展-E, -r, --regexp-extended
在脚本中使用扩展正则表达式
-s, --separate
将文件视为独立的,而不是单一的、连续的流
--sandbox
在sandbox模式下操作
-u, --unbuffered
从输入文件加载最少的数据,更频繁地刷新输出缓冲区-z, --null-data
用NULL字符分隔行3.例子
注意:没有添加 -i 选项只是将输出结果修改,添加 -i 将在原文件基础上修改
(1)添加内容
在n行后添加字符串test
sed -e na\test 文件名
在n行前添加字符串test
sed 'n i\test' 文件名
(2)删除内容
删除n到m行
sed 'n,m d' 文件名
删除空白行
sed '/^$/d' 文件名
删除最后一行
sed '$d' 文件名
(3)修改内容
修改文件第n行为字符串test
sed -n 'n c\test' 文件名
修改文件第n到第m行字符串test替换为abcd
sed -n 'n,m s/test/abcd/ p' 文件名
修改文件字符串test替换为abcd(文件中所有匹配项)
sed 's/test/abcd/p' 文件名
(4)查看内容
查看文件n到m行
sed -n 'n,m p' 文件名
查看文件中包含test的行(忽略大小写)
sed -n '/test/ p' 文件名
查看文件中以test开头的行
sed -n '/^test/ p' 文件名
查看文件中包含test和abcd的行
sed -n '/test/,/abcd/p' 文件名
查看文件奇数行
sed -n 'p;n' 文件名
查看文件偶数行
sed -n 'n;p' 文件名
(5)对文件进行多个操作
在第n行后添加TEST,并将test修改为abcd
sed -e 'n i\TEST' -e 's/test/abcd/' 文件名
2.awk
1.说明
按行读取数据,将一行内容按照空格或者Tab键进行分隔并保存在变量中。awk主要针对被分隔的变量操作,而sed对整行数据处理。
2.格式
awk [选项] '模式或条件{操作}' 文件1 文件2...
awk -f 脚本文件 文件1 文件2 ...
(1)选项:
-v :awk开始前指定一个值给var,用于程序的BEGIN
-f :保存awk程序的文件,代替命令行指定awk程序
-F:设置列分隔符(分隔符默认是空格)
(2)变量:
FS :列分隔符。每行文本的字段分隔符,默认为空格或tab,同‘-F’
NF :当前处理的行的字段个数
NR :当前处理的行的行号
$0 :当前处理的行的整行内容
$n :当前处理的行的第n个字段
FILENAME :处理的文件名
RS :行分隔符。将文件分割,awk每次只读一条记录,预设值是‘\n’
OFS :输出字段分隔符
ORS :输出记录分隔符
(3)表达式:
print :打印指定内容
printf :格式化打印指定内容
toupper :将字符转为大写
tolower :将字符转为小写
BEGIN :用于初始化FS变量,打印标题或初始化后需要在程序中调用的全局变量
END :用于执行最后的运算或者打印最终的输出,BEGIN和END不是必须的
if :if判断语句
while :while循环语句
运算符 :+ - * / % ! == != > >= < <= && || ~(正则匹配中的包含)
// :使用正则表达式
3.例子
(1)获取每行字段数
awk '{print NF}' file
(2)打印每行第n个字段值
awk '{print $n}' file
(3)打印每行最后一个字段值
awk '{print $NF}' file
(4)打印第n,m两个字段,使用“=”分隔
awk '{print $n,$m }' OFS="=" file
(5)连续打印第n,m两个字段
awk '{print $n $m }' file
(6)以'/'为分隔符打印文件中的第一个字段
awk -F'/' '{print $1}' file
awk 'BEGINN{FS="/"} {print $1}' file
(7)以"=="作为第1个字段和第2个字段的输出分隔符
awk 'BEGIN{OFS="=="} {print $1,$2}' file
(8)将第n列装换为大写打印
awk -F',' '{print toupper($n)}' file
(9)将包含"test"的行打印
awk '/test/{print}' file
(10)将第n个字段为"test"的行打印
awk '$n=="test" {print}' file
(11)将不含"test"的行打印
awk '!/test/ {print}' file
(12)打印第一个字段为"test"的行
awk '$1~/test/{print }' file
(13)计算包含"test"行的第3个字段×第4个字段的结果
awk '/test/{print $3*$4}' file
(14)计算1-100之间的和
seq 100 | awk '{sum+=$0} END {print sum}'
(15)打印包含"test"和"123"的行
awk '$1~/test/ && /123/ {print}' file
(16)格式化打印
date| awk '{printf "%-4d/%-3s/%-2d\n", $6,$2,$3}'
%格式化输出分隔符
-n输出的长度为n
s表示字符串类型
d表示整形类型
(17)if语句(必须使用{}括起来,比较内容使用()括起来)
awk '{if($1~/test/){print}}' file
打印第一个字段为test的行
awk '{if($1~/test/){print $1} else{print $2}}' file
匹配到test打印行的第一个字段,否则打印第二个
(18)for语句(必须使用{}括起来,比较内容使用()括起来)
awk '{for(i=3;i<5;i++)} {printf $i}' file
打印每行第>3 <5的字段值
(19)while语句(必须使用{}括起来,比较内容使用()括起来)
awk '{i=1;while(i<3){print $i,i++}}' file
打印每行第>1 <3的字段值
3.grep
1.说明
进行全局搜索,将匹配的行打印。其中包括grep、egrep(相当于grep -E,使用正则表达式匹配)、fgrep(相当于grep -F,使用字符串匹配)
2.格式
grep [选项] 模式 [文件]
(1) 模式:
-E:使用正则表达式匹配
-F:使用字符串匹配
-e:多选项的逻辑或
-f :从文件中获取匹配模式
-i :不区分大小写
-w:全词匹配
-x :整行匹配(2)杂项:
-s :支持错误信息-v :反向匹配
(3)输出控制:
-n :打印行号
-o :仅显示匹配的字符串,不显示本行的所有信息
-q :静默模式,不将结果输出
-c :计算匹配次数,按行计算(4)环境控制:
-A:显示匹配行及之后指定行的内容-B:显示匹配行及之前指定行的内容
-C:显示匹配行及之前后指定行的内容3.例子
(1)在test.txt文件中搜索指定字符串"string",并将匹配的结果打印
grep -F 'string' test.txt 或 grep 'string' test.txt
(2)不区分大小写匹配
grep -i 'string'
(3)反向匹配(打印出不包含"string"的行)
grep -v 'string'
(4)同时检索"string"和"test"两个字符串
grep -E 'string|test'
(5)查找ip地址的行
ip address | grep -E '([0-9]{1,3}\.){3}[0-9]{1,3}'
(6)在test.txt文件中搜索指定字符串"string",并将匹配的结果打印
grep -F 'string' test.txt 或 grep -i 'string' test.txt
(7)打印检索到"string"的行及行号
grep -n 'string'
(8)检索到"string"出现的次数
grep -c 'string'
(9)查找以"str"开始的行
grep '^str'
(10)查找以')'指定字符结束的行(注意有些符号需要转义,在符号前加'\'转义符)
grep -n ')$' test.txt
(11)查找包含txxt的行
grep 't..t' test.txt
(12)在test.txt文件中搜索以字符串"#"开头的行,并将匹配的结果打印
grep “^#” test.txt
(13)在test.txt文件中搜索以字符串";"结尾的行,并将匹配的结果打印
grep ";$"test.txt
(14)在test.txt文件中搜索非空的行,并将匹配的结果打印
grep "^$"test.txt -v
(15)在test.txt文件中搜索包含小写字母的行,并将匹配的结果打印
grep "[a-z]" test.txt
(16)在test.txt文件中搜索包含大、小写字母的行,并将匹配的结果打印
grep "[a-zA-Z]" test.txt
(17)在test.txt文件中搜索包含数字的行,并将匹配的结果打印
grep "[0-9]" test.txt
(18)在test.txt文件中搜索包含字符串"test"和"1234"的行,并将匹配的结果打印
grep -E ’test|1234‘ test.txt 或 grep -e "test" -e "1234" test.sh
(19)在test.txt文件中搜索以大写字母开头的行,并将匹配的结果打印
grep -E "^[A-z]" test.txt -v
(20)在test.txt文件中搜索出现2到5次1的行,并将匹配的结果打印
grep -E '1{2,5}' test.txt
(21)在test.txt文件中搜索出现至少2次1的行,并将匹配的结果打印
grep -E '1{2,}' test.txt
(22)在/文件中递归搜索以字符串"#"开头的行,并将匹配的结果打印
grep -r "^#" /
4.more
1.说明
在加载文件时从文件卡头开始加载,以页为单位分段显示文件内容以便阅读。
2.操作
q :退出more
Enter :向下滚动n行(在more中,先输入想滚动的行数,再点击Enter)
空格键 :向下滚动一屏幕的内容
b :向上滚动一屏幕的内容
:f :显示当前文件名和行号
= :显示当前行号
3.格式
more [选项] <文件>
参数:
-c 清屏后显示内容
-d 显示帮助信息
-p 与选项"c"相似
-s 将多个空白行压缩成一行
-u 将文件中的下划线去掉显示
-<number> 显示的行数number
+<number> 从number行开始显示文件
+/<string> 搜索string,并从string前两行开始显示4.例子
(1)从第50行开始显示file
more +50 file
(2)从file文件中搜索string字符串并显示
more +/string file
如果字符串包含数字或者空格,需要将字符串用双引号括住,如:
more +/"hello word 123" file
5.less
1.说明
和more类似,以页为单位分段显示文件内容。区别在于more会加载整个文件并将内容显示到窗口,而less则类似vi那样打开文件。
2.操作
q/:q/Q/:Q/ZZ :退出less
e/^E/j/^N/Enter :向下滚动n行(^E和指Ctrl+E,^即Ctrl键,本小节不再赘述)
f/^F/^V/z/空格键:向下滚动一屏幕的内容
b/^B/w :向上滚动一屏幕的内容
d/^D :向下滚动一页半屏幕的内容
u/^U :向上滚动一页半屏幕的内容
/string :向下搜索字符串
?string :向上搜索字符串
n :重复刚才的搜索行为(跟在/string或?string之后)
N :反向刚才的搜索行为(跟在/string或?string之后)
:f/=/^G :显示当前文件名和行号
G :跳转到文件末尾
g :跳转到文件开头
3.格式
less [选项] <文件>
参数:同more
4.例子
less和more除了查看文件,还长用于配合管道查看命令的结果
(1)查看进程
ps aux | less
(2)查看文件较多的目录
ls /dev | less
6.file
1.说明
用于分辨文件的类型,不通过扩展名而通过文件头部信息获取。
2..格式
file [选项] [文件名]
-b:简单显示文件类型,不显示文件名
-i :输出 mime 类型的字符串
3.例子
(1)查看test文件类型
file test
(2)简要查看test文件类型
file -b test
(3)查看test文件mime类型字符串
file -i test
2.压缩/解压管理
1.tar压缩解压
1.参数:
-c:创建归档
-C:临时切换工作目录
-f:创建和释放的文件名
-P:绝对路径
-v:显示过程
-x:释放归档
2.例子
(1)压缩
tar zcvf lib64.tgz /uer/lib64
(2)解压
tar zxvf lib64.tgz
2.zip压缩解压
1.说明
本小节主要讲述gzip、bzip2、xz三种压缩,除了格式不同外,gzip压缩速度最快,xz压缩率最高,bz2适中。这三种一般用于压缩文件,由于运用较少,此处仅简单举例说明用法。
2.例子
(1)gzip
压缩:gzip 准备压缩文件
解压:gunzip 准备解压缩文件(.gz结尾的文件)
(2)bzip2
压缩:bzip2 压缩生成
解压:bunzip2 准备解压缩文件(.bz2结尾的文件)
(3)xz
压缩:xz 压缩生成
解压: unxz 准备解压缩文件(.xz结尾的文件)
四、网络管理命令
1.ifconfig
1.说明
Linux中用于查看、配置网络信息。与Windows中的ipconfig类似
2.格式
ifconfig [-a] [-v] [-s] <网口> [[<AF>] <ip地址>]
参数
-a :显示所有的网卡,已关闭的网卡也会显示出来
-s :简单显示网卡列表(会显示出网卡名、MTU、传输数据)
-v :冗余模式,会将出现的错误打印出来
3.例子
(1)显示网络设备信息
ifconfig 或 ifconfig -a
可以查看到如下结果:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.6.125 netmask 255.255.255.0 broadcast 192.168.6.255 inet6 fe80::2e0:4cff:fe68:11 prefixlen 64 scopeid 0x20<link> ether 00:e0:4c:68:00:11 txqueuelen 1000 (Ethernet) RX packets 1299820 bytes 159787996 (159.7 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 23059 bytes 1867322 (1.8 MB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 44902860 bytes 3417717216 (3.4 GB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 44902860 bytes 3417717216 (3.4 GB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth0表示网卡名;lo表示回环网卡,可用来在本机中进行通信;
UP表示网卡现行状态为开启状态;
BROADCAST表示支持广播;
RUNNING表示接口正在工作;
MULTICAST表示支持多播;
mtu 1500表示最大传输单元1500字节;
inet表示ip地址,一般为IPv4,lo中一般为127.0.0.1;
netmask表示子网掩码;
broadcast表示广播地址,IP地址同一网段的最后一个地址;
inet6表示IPv6地址, lo中一般为::1;
prefixlen表示IPv6的前缀长度(类似IPv4的子网掩码作用);
ether表示网卡的mac地址;
txqueuelen 表示设置的传送队列长度为1000;
(Ethernet)表示以太网连接类型,(Local Loopback)表示本地回环类型;
packets 接收/发送到正确的包的数据;
errors 接收/发送时产生错误的包数;dropped接收/发送时丢弃的包数;
overruns 接收/发送时速度过快而丢失的包数;
frame 接收时frame错误丢失的包数;
carrier 发送时carrier错误丢失的包数;
collisions 冲突信息的包数;
(2)查看指定网卡eth0
ifconfig eth0
(3)开启/关闭eth0网卡
ifconfig eth0 up/down
(4)配置eth0网卡的IP地址
①添加地址
ifconfig eth0 xxx.xxx.xxx.xxx netmask 255.255.255.0 (添加IPv4地址)
ifconfig eth0 add xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/prefixlen (添加IPv6地址)
②删除地址
ifconfig eth0 del xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/prefixlen (删除IPv6地址)
(5)配置eth0网卡的MAC地址
①先关闭网卡
ifconfig eth0 down
②修改MAC地址
ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx
③开启网卡
ifconfig eth0 up
(6)配置eth0最大传输单元为800
ifconfig eth0 mtu 800
(7)为eth0网卡绑定新的ip地址
ifconfig eth0:0 xxx.xxx.xxx.xxx
2.ip
1.说明
用于配置网口、路由等网络相关的任务。和ifconfig相似,但是功能比其更加强大,ifconfig很久之前已经停止维护。
2.格式
ip [ OPTIONS ] OBJECT { COMMAND | help }
OPTIONS
-f:指定协议族(inet | inet6 | mpls | bridge | link)
-4:使用IPv4的网络协议
-6:使用IPv6的网络协议
-0:使用link的网络协议
-l:IP地址刷新的最大循环数
-o:记录信息在一行中输出
OBJECT
address :IP地址信息
link :网络信息
neighbour:邻居表信息
route :路由信息
COMMAND
show :显示数据
add :添加
del :删除
set :设置
3.例子
(1)显示网络基本信息
ip address 或 ip addr 或 ip addr show
(2)开启/关闭网卡eth0设备
ip link set eth0 up/down
(3)设置网卡eth0的最大传输单元为1500
ip link set eth0 mtu 1500
(4)设置网卡eth0的MAC地址为xx:xx:xx:xx:xx:xx
ip link set eth0 address xx:xx:xx:xx:xx:xx
(5)网卡eth0添加IP地址xxx.xxx.xxx.xxx/xx
ip addr add xxx.xxx.xxx.xxx/xx dev eth0
(xxx.xxx.xxx.xxx为IP地址,xx为掩码或前缀长度)
(6)删除网卡eth0的IP地址xxx.xxx.xxx.xxx/xx
ip addr del xxx.xxx.xxx.xxx/xx dev eth0
(7)显示路由表
ip route 或 ip route list 或 ip route show
(8)在网卡eth0上添加网关xxx.xxx.xxx.xxx
ip route add default via xxx.xxx.xxx.xxx dev eth0
(9)删除网卡eth0的网关地址xxx.xxx.xxx.xxx
ip route delete default via xxx.xxx.xxx.xxx dev eth0
3.route
1.说明
用于获取或者配置内核ip路由表,通过创建静态路由指定网络的接口。
2.格式
route [-FC] {add|del|flush} ...
参数
add :添加一条新的路由
del :删除一条路由
-f :清除所有不是主路由的路由表
-n :不解析地址和端口号,以数字形式显示
-p :和add一起使用的时候可以是路由变为永久性的
3.例子
(1)显示网络基本信息
route
(2)在网卡eth0设置网关xxx.xxx.xxx.xxx
route add default gw xxx.xxx.xxx.xxx dev eth0
(3)删除网卡eth0的网关xxx.xxx.xxx.xxx
route del default gw xxx.xxx.xxx.xxx dev eth0
4.netstat
1.说明
用于统计并显示ip、tcp、udp、icmp协议相关的统计数据,此外还可以显示路右边、实际连接网络、网络接口设备的信息。
2.格式
netstat [-vWeenNcCF] [<Af>] -r
netstat [-vWnNcaeol] [<Socket> ...]
netstat { [-vWeenNac] -i | [-cnNe] -M | -s [-6tuw] }参数
-r, --route 显示路由表
-i, --interfaces 显示网口列表
-s, --statistics 像snmp协议一样显示网络数据
-v, --verbose 详细展示
-n, --numeric 不解析地址和端口号,以数字形式显示
-N, --symbolic 解析MAC地址
-e, --extend 显示显示以太网统计信息
-p, --programs 显示socket的pid、端口号
-o, --timers 显示定时器
-c, --continuous 连续监听
-l, --listening 显示监听服务的套接字
-a, --all 显示所有的套接字 (默认未连接模式)
-C, --cache 显示路由缓存而不是FIB
-t, --tcp 仅显示TCP相关选项
-u, --udp 仅显示UDP相关选项3.例子
(1)显示网络所有有效连接的信息列表(包括监听和已建立连接)
netstat -a
(2)显示网卡列表
netstat -i
(3)显示详细的网络统计信息(以不同协议类型进行区分)
netstat -s
(4)显示监听的套接字
netstat -l
(5)显示路由信息
netstat -r
(6)显示所有的tcp/udp端口
netstat -at 或 netstat -au
5.arp
1.说明
显示或设置MAC缓冲区的ip地址。
2.格式
参数
-a :以可选(BSD)样式显示(所有)主机
-e :以默认(Linux)方式显示(所有)主机
-s, --set :配置新的ARP表项
-d, --delete :删除指定条目
-v, --verbose :详细显示
-n, --numeric :不解析名称
-i, --device :指定网络接口(例如eth0)
-D, --use-device :从给定设备读取<hwaddr>
-A, -p, --protocol :指定协议族3.例子
(1)显示arp缓存表
arp
(2)将ipxxx.xxx.xxx.xxx和MACxx:xx:xx:xx:xx:xx绑定
arp -s xxx.xxx.xxx.xxx xx:xx:xx:xx:xx:xx
(3)删除缓存表中网卡eth0的arp项xxx.xxx.xxx.xxx
arp -i eth0 -d xxx.xxx.xxx.xxx
(4)使用eth0的MAC地址回答eth1中xxx.xxx.xxx.xxx的arp请求
arp -i eth1 -Ds xxx.xxx.xxx.xxx eth0 pub
6.ifup/ifdown
1.说明
ifup用于启动网口,ifdown用于关闭网口,配置的网口配置文件必须在“/etc/sysconfig/network-scripts/ifcfg-”或者“/etc/sysconfig/network”的文件。
2.格式
ifup/ifdown <options> <ifaces...>
参数
-a:处理所有标有“auto”的接口
-i:使用FILE来定义接口3.例子
(1)启动/关闭eth0网口
ifup/ifdown eth0
(2)启动/关闭所有网口
ifup/ifdown -a
五、磁盘管理命令
1.df
1.说明
显示每个文件所在的文件系统信息,默认显示所有文件系统信息。
2.格式
df [OPTION]... [FILE]...
参数
-a:显示所有的文件系统,包括伪的、重复的、不可访问的
-B:在打印前设置每块大小,按尺寸进行计数
-h:打印大小以1024为单位
-H:打印尺寸1000为单位
-i :列出索引节点信息而不是块使用情况
-l :在获取使用信息之前不调用sync(默认)使用FIELD_LIST定义的输出格式
-P:使用POSIX输出格式,删除所有对可用空间无关紧要的条目,并生成一个总数
-t :限制列出类型为type的文件系统
-T:打印文件系统类型
-x:限制列表不属于type类型的文件系统3.例子
(1)显示磁盘的使用情况(默认使用KB为单位)
df
(2)显示全部磁盘的使用情况
df -a
(3)以KB以上的单位来显示磁盘的使用情况
df -h
(4)显示磁盘的文件系统类型
df -T
(5)显示全部磁盘中类型为ext3
df -t ext3
2.du
1.说明
针对目录或文件,统计并显示磁盘占用空间。
2.格式
du [OPTION]... [FILE]...
参数
-0:显示时不换行
-a:显示所有文件,而不仅仅是目录
-B:设置显示时每块的大小
-b:以字节为单位列出磁盘空间使用状况
-c:附加显示统计结果
-h:以K、M、G为单位显示
-k:以1K为单位显示
-m:以1M为单位显示
-s:仅显示统计结果
-x:跳过不同文件系统上的目录3.例子
(1)显示根目录的磁盘使用情况(默认显示当前目录)
du /
(2)递归显示根目录的所有目录磁盘使用情况(默认显示当前目录)
du -a /
3.fdisk
1.说明
显示或操作磁盘分区表,是一个类似vi编辑器的交互式命令。分区就是把硬盘连续的区块当做一个独立的磁硬使用。
2.格式
fdisk [options] <disk> 修改磁盘分区表
fdisk [options] -l [<disk>] 显示磁盘分区表
参数
-b:物理和逻辑扇区大小
-B:创建新标签时不要擦除引导位
-c:模式为'dos'或'nondos'(默认)
-l :显示分区
-o:输出列
-t :只识别指定的分区表类型
-u:显示单位:'柱面'或'扇区'(默认)
-C:指定柱面数
-H:指定磁头数
-S:指定每个磁道的扇区数量3.操作
a:切换可引导标志
b:编辑嵌套的BSD磁盘标签
c:切换DOS兼容性标志
d:删除分区
F:列出空闲的未分区空间
l:列出已知分区类型
n:添加一个新分区
p:打印分区表
t:更改分区类型
v:验证分区表
i:打印分区信息
m:打印菜单
u:更改显示/输入单元
I:从sfdisk脚本文件加载磁盘输出
O:转储磁盘布局到sfdisk脚本文件
w:将表写入磁盘并退出
q:不保存更改而退出
g:创建一个新的空GPT分区表
G:创建一个新的空SGI (IRIX)分区表
o:创建一个新的空DOS分区表
s:创建一个新的空Sun分区表4.例子
(1)显示所有分区(包含起始、大小、类型)
fdisk -l
(2)在/dev/ram0创建分区
①终端输入fdisk /dev/ram0,进入fdisk分区界面;
②输入“p”回车,查看分区状态;
③输入“n”回车,开始分区;
④输入“p”回车,生成主分区;输入“e”回车,生成拓展分区;
⑤输入分区的序列号,默认为1;
⑥输入起始扇区;
⑦输入最后扇区;
⑧保存配置输入“w”;不保存退出输入“q”;(3)在/dev/ram0删除分区
①终端输入fdisk /dev/ram0,进入fdisk分区界面;
②输入“p”回车,查看分区状态;
③输入“d”回车,删除分区;
④输入分区的序列号,默认为1;
⑤保存配置输入“w”;不保存退出输入“q”;
4.dd
1.说明
复制文件,根据操作数进行转换和格式化。
2.格式
dd [OPERAND]...
参数
bs=BYTES :每次读取和写入最多BYTES字节(默认:512);
cbs=BYTES :一次BYTES字节
conv=CONVS :按照逗号分隔的符号列表转换文件
count=N :只复制N个输入块
ibs=BYTES :每次最多读取字节(默认:512)
if=FILE :从FILE而不是stdin读取
iflag=FLAGS :按照逗号分隔的符号列表阅读
obs=BYTES :每次写入字节数(默认:512)
of=FILE :写入到FILE而不是标准输出
oflag=FLAGS :按照逗号分隔的符号列表书写
seek=N :在输出开始时跳过N个字节大小的块
skip=N :在输入开始时跳过N个字节大小的块
ascii :从EBCDIC到ASCII
ebcdic :从ASCII转换为EBCDIC
ibm :从ASCII转换为备用EBCDIC
block :把每一行转换为长度为cbs,不足部分用空格填充
unblock :把每一行长度为cbs,不足部分用空格填充
lcase :将大写改为小写
ucase :将小写改为大写
nocreat :不创建输出文件
notrunc :不截断输出文件
noerror :读取错误后继续3.例子
(1)将u-boot.img烧录到/dev/ssb1分区
dd if=u-boot.img of=/dev/ssb1 conv=fdatasync
5.lsblk
1.说明
列出块设备信息(包含设备的主次设备号、大小、类型、挂载点)。
2.格式
lsblk [options] [<device> ...]
参数
-a:打印所有设备
-b:以字节显示大小
-d:不要打印从属关系
-D:打印丢弃功能
-e:按主机号排除设备(默认:RAM磁盘)
-f:输出文件系统信息
-i :只使用ASCII字符
-I :只显示指定主设备号的设备
-J:使用JSON输出格式
-l :使用列表格式输出
-T:使用树格式输出
-m:输出权限信息
-n:不打印标题
-o:输出列
-O:输出所有列
-p :打印完整的设备路径
-P:使用键值对输出格式
-r :使用原始输出格式
-s:反向依赖
-S:SCSI设备的输出信息
-t :拓扑输出信息
-x:work按<column>对输出进行排序3.例子
(1)显示所有的块设备
lsblk -a
6.stat
1.说明
显示文件或文件系统状态。
2.格式
stat [OPTION]... FILE...
参数
-L:显示连接文件的信息
-f :显示文件系统状态,而不是文件状态
-c:以指定格式输出
-t :简单模式输出格式
参数不包含-f时
%a:八进制访问权限(注意'#'和'0'打印标志)
%A:可读形式的访问权限
%b:分配的块数(见%B)
%B:%b显示的每个块的字节大小
%d:十进制设备编号
%D:十六进制设备编号
%f :十六进制的原始模式
%F:文件类型
%g:所有者组ID
%G:所有者组名
%h:硬链接数
%i :inode号
%m:挂载点
%n:文件名
%N:如果是符号链接,文件名带引号
%o:最佳I/0传输大小提示
%s:总大小,以字节为单位
%t :十六进制的主要设备类型,用于字符/块设备特殊文件
%T:十六进制的次要设备类型,用于字符/块设备特殊文件
%u:所有者的用户ID
%U:所有者的用户名参数包含-f时
%b:文件系统中的数据块总数
%c:文件系统中文件节点总数
%d:文件系统中空闲的文件节点
%f:文件系统中的空闲块
%i :十六进制文件系统ID
%l :文件名的最大长度TTTMTT here
%s:块大小(用于更快的传输)
%S:基本块大小(用于块计数)
%t :十六进制文件系统类型
%T:可读形式的文件系统类型3.例子
(1)显示test文件的详细信息(包含大小、文件类型、权限等信息)
stat test
(2)显示test文件在文件系统中的详细信息(包含大小、文件类型等信息)
stat -f test
(3)显示test文件的文件类型
stat -c %F test
(4)显示test文件在文件系统中文件节点总数
stat -f -c %c test
六、进程管理命令
补充说明:在Linux系统中,进程的状态主要包含R、S、D、I、T、Z状态,此外还有'<'、'N '、'l'、'+'、's'状态辅助表示进程状态。以下是对这些状态的详细说明:
R:运行态,表示进程在CPU的就绪队列中,正在运行或者等待CPU分配时间片后再运行;
S:可中断休眠态,表示进程等待事件而挂起,等待的事件发生,进程会被唤醒转为运行态;
D:不可中断休眠态,表示进程和硬件进行交互,交互过程中不可以被中断;
I :空闲态,一般用于不可中断休眠的内核进程中,和D状态的区别在于I状态没有任何负载;
T:停止态,收到信号SINSTOP导致进程暂时停止,可由SINCONT信号使其继续运行;
Z:僵尸态,进程已经结束,但是父进程没有结束,导致进程的资源没有被回收;
<:优先级高的进程;
N:优先级低的进程;
l :进程中包含线程(此处为小写字母'l',上一处为大写字母'I');
+ :前台进程,终端中运行的命令启动的进程;
s :会话首进程,会话是为了完成一个任务,一个或多个进程组成的一个集合;
1.ps
1.说明
列举系统中当前运行的进程。
2.格式
ps [options]
参数
-A:显示所有进程(和选项-e一致);
-a:显示终端的所有进程;
-f:可显示是进程的父进程PID;-j:显示进程同家族的进程;
-u:显示已知用户进程(包括进程的CPU/内存占有率、进程状态、启动指令);
-x:显示不受终端控制的进程(显示命令的路径);
e:显示启动指令是的环境变量;
h:不显示第一行;
v:以虚拟储存器格式显示;
s:以信号格式显示;3.例子
(1)查看全部进程状态(显示用户名、PID、CPU/MEM占有率、状态、开始时间等)
ps -aux
(2)查看全部进程的父进程(显示用户名、PID、PPID等)
ps -ef
(3)查看全部进程家族关系(显示PID、PPID、进程组ID即PGID、会话ID即SID等)
ps -ajx
2.top
1.说明
动态查看进程信息。
2.格式
top -hv | -bcHiOSs -d secs -n max -u|U user -p pid(s) -o field -w [cols]
参数
-hv :显示帮助信息和版本
-bcHiOSs :显示关键字
-d secs :设置信息刷新时间为secs秒
-n max :设置更新次数为max次
-u|U user :设置监控用户为user的进程
-p pid(s) :设置监控进程的PID
-o field :设置输出时排序的规则为field字段(使用-bcHiOSs获取的字段);
-w [cols] :设置输出的宽度为cols;3.例子
(1)动态查看进程
top
注意:top指令也是可用于交互的工具,运行top之后。
输入c:切换显示运行命令名和完整的命令行;
输入M:切换为按照内存占用率由高到低的顺序显示进程;
输入P:切换为按照CPU占用率由高到低的顺序显示进程;
(2)动态查看用户名为root的进程
top -U root
(3)动态监控PID为100的进程
top -p 100
(4)设定监控刷新时长为5秒
top -d 5
(5)动态按照内存占用率由高到低顺序查看进程
top -o %MEM
3.kill
1.说明
向进程发送信号,没有指定信号将会给进程发送SIGTERM(终止进程)。
2.格式
kill [-s sigspec | -n signum | -sigspec] pid | jobspec ...
kill -l [sigspec]
参数
-s sig:给进程发送的信号名为sig;
-l/L :列举所有信号;3.例子
(1)查看所有信号
kill -l
(2)杀死PID为100的进程
kill 100
(3)给PID为100的进程发送信号9
kill -9 100 或kill -s SIGKILL 100
(4)杀死用户root的所有进程
kill -u root
(5)杀死test进程
kill -9 $(ps -ef | grep test)
4.jobs
1.说明
查看被停止的进程列表,一般当一个正在运行时,收到Ctrl+Z的型号后,进程被停止,此进程就可以被jobs之后查看到,启动、停止、终止以及恢复作业的这些功能统称为作业控制。
2.格式
jobs [-lnprs] [jobspec ...]
jobs -x command [args]
参数
-l :除进程名信息外,还列出进程id
-n:仅列出自上次通知以来已更改状态的进程
-p:只列出PID
-r :显示正在运行的作业
-s:显示已停止的作业3.例子
(1)查看进程的PID和作业号
jobs -l
补充:
fg :会将后台暂停的进程恢复到前台去运行
fg + %序列号
bg :会将后台暂停程序在后台运行
bg + %序列号
5.pstree
1.说明
以树的形式显示进程关系。
2.格式
pstree [-acglpsStuZ] [ -h | -H PID ] [ -n | -N type ] [ -A | -G | -U ] [ PID | USER ]
参数
-a :显示命令行参数
-A :使用ASCII字符划线字符
-c :不压缩相同的子树
-h :突出显示当前进程及同组进程
-H :突出显示指定进程及同组进程
-g :work显示进程组id
-G :使用VT100线条绘制字符
-l :不截断长行
-n :PID输出排序
-N :按命名空间类型排序(cgroup, ipc, mnt, net, pid, user, uts)
-p :显示pid
-s :显示所选进程的父进程
-S :显示名称空间转换
-t :显示完整的线程名称
-T :隐藏线程,只显示进程
-u :显示uid转换
-U :使用UTF-8 (Unicode)划线字符
-V :显示版本信息
-Z :显示SELinux安全上下文
PID :从PID开始;默认为1 (init)
USER :只显示root于该用户进程的树3.例子
(1)以树的形式显示进程
pstree
(2)以树的形式显示进程及命令行指令
pstree -a
(3)以树的形式显示进程及PID
pstree -p
七、驱动管理命令
1.insmod
1.说明
将模块加载到内核。
2.格式
insmod [options] filename [args]
参数
-f:强制将模块载入;
-m:输出模块的载入信息;
-p:测试模块是否能正确地载入kernel;
-s:将所有信息记录在系统记录文件中;
-v:执行时显示详细的信息;3.例子
(1)加载test.ko模块
insmod test.ko
2.lsmod
1.说明
查看内核加载的所有模块。
2.格式
lsmod
3.例子
(1)查看内核加载的所有模块
lsmod
3.rmmod
1.说明
卸载内核驱动模块。
2.格式
rmmod [options] modulename ..
参数
-f:强制模块卸载并可能使机器崩溃。这需要内核中的强制模块移除选项
-s:打印到syslog,而不是stderr3.例子
(1)卸载test.ko模块
rmmod test.ko
4.dmesg
1.说明
显示或控制内核环缓冲区。
2.格式
dmesg [options]
参数
-C:清除内核环缓冲区
-c :阅读并清除所有消息
-D:禁用向控制台打印消息
-E:启用将消息打印到控制台
-F:使用该文件代替内核日志缓冲区
-f :限制输出到定义的设施
-H:输出为可读形式
-k:显示内核消息
-L:默认情况下,消息的颜色(自动、始终或从不)是启用的
-l :将输出限制为定义的级别
-n:设置打印到控制台的消息级别
-P:不要将输出管道输出到分页器中
-r :打印原始消息缓冲区
-S:强制使用syslog(2)而不是/dev/kmsg
-s :缓冲区大小查询内核环缓冲区
-u:显示用户空间消息
-w:等待新消息
-x:解码功能和级别为可读字符串
-d:显示打印消息之间的时间间隔
-e:以可读格式显示本地时间和时间增量
-T:显示可读的时间戳(可能不准确!)
-t :不要在消息中显示时间戳3.例子
(1)查看内核缓冲区中记录的所有数据
dmesg
(2)查看并清空内核缓冲区中记录的所有数据
dmesg -c
八、总结
在不同的设备中有些指令可能需要提前下载相关安装包。以上内容仅是Linux中常用的一些指令的常用用法,还有很多指令在此未能提及。