一、相关常用命令
1. ls 查看文件列表命令
语法: ls [-a -l -h] [Linux路径]
- -a -l -h 是可选的选项 (-h需配合-l命令一起使用)
- Linux路径是此命令可选的参数
ls #查看当前目录所有非隐藏文件(平铺方式显示)
ls -a #查看当前目录下所有文件 -a=> all
ls -l #查看当前目录所有非隐藏文件(列表方式显示) -l => list
ls -lh #查看当前目录以可读方式显示 -h => human-readable
ls -alh #查看所有人间以可读方式显示
ls -l /root #查看/root下的文件列表
2. cd 切换工作目录
来源: Change Directory
语法: cd [Linux路径]
- cd命令无选项,只有参数,表示切换到哪个目录下
- cd命令直接执行,不写参数,表示回到用户的Home目录
3. pwd 查看当前工作目录
来源: Print Work Directory
语法:pwd
- pwd命令,无现象,无参数,直接输入pwd即可
4. mkdir创建文件夹命令
来源: Make Directory
语法: mkdir [-p] linux路径
- 参数必填,表示Linux路径
- -p 选项可选,表示自动创建不存在的父目录 。来源parents
5. touch、cat、more、cp、mv、rm 文件操作命令
5.1 touch 创建文件
语法:touch linux路径
- touch命令无选项,参数必填,表示要创建的文件路径,相对、绝对、特殊路径均可使用
5.2 cat查看文件
语法:cat linux路径
- cat命令无选项,参数必填,表示要查看的文件路径,相对、绝对、特殊路径均可使用
5.3 more查看文件,可翻页
语法:more linux路径
- more命令参数必填,表示要查看文件的路径,相对、绝对、特殊路径符都可以使用
- 使用空格进行翻页,b查看上一页,使用q退出查看
5.4 cp 复制文件/文件夹
来源:copy
语法:cp [-r] 参数1 参数2
- -r选项,可选,用于复制文件夹使用,表示递归,来源:recursive
- 参数1,linux路径,表示被复制的文件或文件夹
- 参数2,linux路径,表示要复制去的地方
5.5 mv 移动文件/文件夹
来源: move
语法:mv 参数1 参数2
参数1,linux路径,表示被移动的文件或文件夹
参数2,linux路径,表示要移动去的地方,如果目标不存在,则进行改名,确保目标存在
5.6 rm 删除文件、文件夹
来源:remove
语法:rm [-r -f] 参数1 参数2 ... 参数N
- -r选项,可选,用于递归删除文件夹使用,来源:recursive
- -f选项,强制删除 (不会弹出提示确认消息)
- 普通用户删除内容不会弹出提示,root管理员删除内容会有提示
- 所以一般用户用不到-f选项
- 参数1、参数2、....、参数N表示要删除的文件或文件夹路径,按照空格隔开
6. which 命令程序文件查找
语法:which 要查找的命令
我们可以通过which命令查看所使用的一系列命令的程序文件存放在哪里
7. find命令查找文件
7.1 find按文件名查找文件
语法: find 起始路径 -name "被查找文件名"
[root@master ~]# find / -name java* #在根目录查查找以java开头的文件
find: ‘/proc/40515’: 没有那个文件或目录
find: ‘/proc/40525’: 没有那个文件或目录
/etc/pki/ca-trust/extracted/java
/etc/pki/java
/etc/java
/etc/java/java.conf
/etc/bash_completion.d/javaws.bash
/etc/alternatives/java
/etc/alternatives/java.1.gz
/etc/alternatives/javaws
/etc/alternatives/javaws.1.gz
/var/lib/alternatives/java
/var/lib/docker/overlay2/c03734f930fcd52491fceb7e388db90242d56a11f4b83474c04a45bc746ed9f8/diff/usr/share/java
/var/cache/yum/x86_64/7/updates/packages/java-1.8.0-openjdk-headless-1.8.0.332.b09-1.el7_9.x86_64.rpm
/var/cache/yum/x86_64/7/updates/packages/java-1.8.0-openjdk-1.8.0.332.b09-1.el7_9.x86_64.rpm
/var/cache/yum/x86_64/7/updates/packages/java-1.8.0-openjdk-headless-1.8.0.402.b06-1.el7_9.x86_64.rpm
/var/cache/yum/x86_64/7/updates/packages/java-1.8.0-openjdk-1.8.0.402.b06-1.el7_9.x86_64.rpm
/usr/bin/java
....
7.2 find按文件大小查找文件
语法:find 起始路径 -size +/-n[kMG]
- +、- 表示大于和小于
- n表示大小数字
- 看MG表示大小单位,k(小写字母)表示kb,M表示MB,G表示GB
示例:
- 查找小于10KB的文件: find / -size -10k
- 查找大于100MB的文件:find / -size +100M
- 查找大于1GB的文件: find / -size +1G
[root@master ~]# find /proc/ -size +10k
/proc/kcore
8. grep命令
可以通过grep命令,从文件中通过关键字过滤文件行。
语法: grep [-n -v] 关键字 文件路径
- 选项-n,可选,表示在结果中显示匹配的行的行号
- 选项-v,可选,表示在结果中过滤掉不包括的行
- 参数,关键字,必填,表示过滤的关键字,带有空格或其他特殊符号,建议使用“ ” 将关键字包围起来
- 参数,文件路径,必填,表示要过滤内容的文件路径,可作为内容输入端口号
9. wc数量统计命令
可以通过wc命令行统计文件的行数、单词数量等
语法: wc [-c -m -l -w] 文件路径
- 选项,-c,统计bytes数量
- 选项,-m,统计字符数量
- 选项,-l,统计行数
- 选项,-w,统计单词数量
- 参数,文件路径,被统计的文件,可作为内容输入端口
10. | 管道符
将管道附件左边命令的结果作为右边命令的输入
11. echo 命令
可以使用echo命令在命令行内输出指定内容
语法:echo 输出的内容
- 无需选项,只有一个参数,表示要输出的内容,复杂内容可以用“ ”包围
在终端上显示:Hello Linux
- 带有空格或\等特符号,建议使用双引号包围。因为不包围的话,空格后很容易被识别为参数2,尽管echo不受影响,要养成好习惯
12、反引号 `
在控制台要用echo输出命令行的结果,可以用反引号配合使用,在编写shell脚本时会用的比较多
13、重定向符 >和>>
- >,将左侧命令的结果,覆盖写入到符号右侧指定的文件中
- >>,将左侧命令行的结果,追加到符号右侧指定的文件中
演示:
- echo "hello dolphin" > a.txt
- echo "hello dolphin1" > a.txt 再次执行覆盖内容
- echo "hello dolphin2" >> a.txt 执行命令行,追加新内容
命令行的执行结果写入指定文件中
- ls -l >a.txt, ls -l命令行的结果覆盖到a.txt
- ls >>a.txt,ls命令行的结果追加到a.txt
14. tail命令
使用tail命令,可以查看文件尾部内容,跟踪文件的最新更改
语法:tail [ -f -num ] Linux路径
- 参数,linux路径,表示被跟踪的文件路径
- 选项,-f,表示持续跟踪
- 选项,-num,表示,查看尾部多少行,不填默认10行
15. su 和 exit 命令
su命令,用于账户切换到系统命令
来源:Switch User
语法:su [ - ] [ 用户名 ]
- - 符号是可选的,表示是否在切换用户后加载环境变量,建议带上
- 参数:用户名,表示要切换的用户,用户名也可以省略,省略表示切换到root
- 切换用户后,可以通过exit命令返回上一个用户,也可以使用快捷键:ctrl + d
- 使用普通用户,切换到其他用户需要输入密码,如切换到root用户
- 使用root用户切换到其它用户,无需密码,可以直接切换
16. sudo 命令
在我们得知root密码的时候,可以通过su命令切换到root得到最大权限。但是我们不建议长期使用root用户,避免带来系统损坏。
我们可以使用sudo命令,为普通的命令授权,临时以root身份执行
语法:sudo 其它命令
- 在其他命令之前,带上sudo,即可为这一条命令临时赋予root授权
- 但是并不是所有的用户,都有权利使用sudo,我们需要为普通用户配置sudo认证
案例:
这里新建一个用户sudo mkdir /test-demo 创建文件夹提示 :
dolphin 不在 sudoers 文件中。此事将被报告。
# 创建用户并设置密码
[root@master ~]# useradd dolphin
[root@master ~]# passwd dolphin
更改用户 dolphin 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
# 切换dolphin用户
[root@master ~]# su - dolphin
# 普通命令在根目录创建文件夹test-demo
[dolphin@master ~]$ mkdir /test-demo
mkdir: 无法创建目录"/test-demo": 权限不够
# sudo 命令+ 命令行创建文件夹
[dolphin@master ~]$ sudo mkdir /test-demo
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:
#1) 尊重别人的隐私。
#2) 输入前要先考虑(后果和风险)。
#3) 权力越大,责任越大。
[sudo] dolphin 的密码:
dolphin 不在 sudoers 文件中。此事将被报告。
visudo 为普通用户配置sudo认证
- 切换到root用户,执行visudo命令,会自动通过vi编辑器打开:/etc/sudoers
- 在文件的最后添加:
dolphin ALL=(ALL) NOPASSWD: ALL
其中最后的NOPASSWD: ALL 表示使用sudo命令,无需输入密码
下边这种写法表示使用sudo命令,需要输入密码
dolphin ALL=(ALL) ALL
- 最后通过wq保存
- 切换普通用户
- 执行的普通命令,均以root运行
17. 用户组管理命令
-
groupadd 创建用户组
语法:groupadd 用户组名
-
groupdel 删除用户组
语法:groupdel 用户组名
-
getent group 查看有哪些用户组
语法:gentent group
同 cat /etc/group 一样
包含3份信息,组名称:组认证(显示未x):组ID
18. 用户管理命令
-
useradd 创建用户
语法:useradd [-g -d] 用户名
- 选项:-g 指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要组已经存在,如已存在同名组,必须使用-g
- 选项:-d 指定用户HOME路径,不指定,HOME目录默认在:/home/用户名
-
userdel 删除用户
语法:userdel [ -r ] 用户名
- 选项:-r,删除用户的HOME目录,不使用-r,删除用户时,HOME目录保留
-
id 查看用户所属组
语法: id [用户名]
- 参数:用户名,被查看的用户,如果不提供则查看自身
-
usermod 修改用户所属组
语法:usermode-aG 用户组 用户名,将指定用户加入指定用户组
[root@master ~]# id test
uid=1006(test) gid=1006(test) 组=1006(test)
[root@master ~]# getent group | tail -3
chendaoxin:x:1004:
testgroup:x:1005:
test:x:1006:
[root@master ~]# usermod -aG testgroup test
[root@master ~]# id test
uid=1006(test) gid=1006(test) 组=1006(test),1005(testgroup)
-
getent passwd 查看有哪些用户
语法:getent passwd
同cat /etc/passwd 一样
共有7分信息,分别是:
用户名:密码(x):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)
19. chmod 修改文件、文件夹权限命令
注意:只有文件、文件夹的所属用户或root用户可以修改
语法:chmod [ -R ] 权限 文件或文件夹
- 选项:-R,对文件夹内的全部内容应用同样的操作
示例:
- chmod u=rwx,g=rx,o=x hello.txt,将文件权限修改为:rwxr-x--x
- 其中:u表示user用户所属用户权限,g表示group组权限,o表示other其它用户权限
- chmod -R u=rwx,g=rx,o=x test,将文件夹test以及文件夹内全部内容设置为:rwxr-x--x
权限的数字序号
权限可以用3位数字来代表,第一位数字表示用户权限,第二位表示用户组权限,第三位表示其它用户权限。
数字的细节如下:r记为4,w记为2,x记为1,可以有:
- 0:无任何权限,即 ---
- 1:仅有x权限, 即 --x
- 2:仅有w权限, 即 -w-
- 3:有wx权限, 即 -wx
- 4:仅有r权限, 即 r--
- 5:有rx权限, 即 r-x
- 6:有rw权限, 即 rw-
- 7:有rwx权限, 即 rwx
示例:
- chmod u=rwx,g=rx,o=x hello.txt 等同于 chmod 751 hello.txt
- chmod -R u=rwx,g=rx,o=x test 等同于 chmod -R 751 test
增加or删除权限
[root@master cmdDemo]# ll
总用量 0
drwxr-xr-x 3 root root 30 4月 2 10:21 1
drwxr-x--x 2 root root 36 4月 7 14:19 test
- [root@master cmdDemo]# chmod -x 1 #给文件夹1删除可执行x权限
[root@master cmdDemo]# ll
总用量 0
drw-r--r-- 3 root root 30 4月 2 10:21 1
drwxr-x--x 2 root root 36 4月 7 14:19 test
- [root@master cmdDemo]# chmod -r 1 #给文件夹1删除可读r权限
[root@master cmdDemo]# ll
总用量 0
d-w------- 3 root root 30 4月 2 10:21 1
drwxr-x--x 2 root root 36 4月 7 14:19 test
- [root@master cmdDemo]# chmod +r 1 #给文件夹1增加可读权限
[root@master cmdDemo]# ll
总用量 0
drw-r--r-- 3 root root 30 4月 2 10:21 1
drwxr-x--x 2 root root 36 4月 7 14:19 test
20. chown命令 修改文件、文件夹的所属用户和用户组
注意:普通用户无法修改所有为其他用户或组,所以此命令只适用于root用户执行
语法: chown [ -R ] [ 用户 ] :[ 用户组 ] 文件或文件夹
- 选项,-R,同chmod,对文件夹内全部内容应用相同规则
- 选项,用户,修改所属用户
- 选项,用户组,修改所属用户组
- :用于分隔用户和用户组
示例:
- chown root hello.txt,将hello.txt所属用户修改为root
- chown :root hello.txt,将hello.txt所属用户组修改为root
- chown root:dolphin hello.txt,将hello.txt所属用户修改为root,用户组修改为dolphin
- chown -R root test,将文件夹test的所属用户修改为root并对文件夹内全部内容应用相同规则
21. 各类小技巧快捷键
-
ctrl + c 强制停止
-
ctrl + d 推出登录
-
history 查看历史命令
-
! + 命令前缀 自动匹配上一个命令
-
ctrl + r,搜索历史命令
-
ctrl + a | e ,光标移到开始或结束
-
ctrl + ⬅ | ➡,左右跳单词
-
ctrl + l 或clear命令清屏
22. yum命令(Centos)
yum: RPM包软件管理器,用于自动化安装配置Linux软件,并可以自动解决依赖问题。
语法:yum [ -y ] [ install | remove | search ] 软件名称
- 选项:-y,自动确认,无需手动确认安装或卸载过程
- install:安装
- remove:卸载
- search:搜索
yum命令需要root权限,可以su切换到root,或使用sudo提权
yum命令需要联网
22. apt命令(Ubuntu)
同yum命令
语法:apt [ -y ] [ install | remove | search ] 软件名称
- 选项:-y,自动确认,无需手动确认安装或卸载过程
- install:安装
- remove:卸载
- search:搜索
23. systemctl命令
Linux系统很容软件(内置或第三方)均支持使用systemctl命令控制:启动、停止、开机自启
能够被systemctl管理的软件,一般也称之为:服务
语法: systemctl start | stop | status | enable | disable 服务名称
- start 启动
- stop 关闭
- status 查看你状态
- enable 开机自启
- disable 关闭开机自启
系统内置的服务比较多,比如:
- NetworkManager,主网络服务
- network,副网络服务
- firewalld,防火墙服务
- sshd,ssh 服务
24. ln命令创建软链接
在系统中创建软链接,可以将文件、文件夹链接到其它位置。
类似window系统中的快捷键方式
语法: ln -s 参数1 参数2
- -s选项,创建软链接
- 参数1:被链接的文件或文件夹
- 参数2:要链接去的目的地
实例:
创建
删除
25. date日期命令
(1)date命令用法
通过date命令可以在命令行中查看系统的时间
语法:date [ -d ] [ +格式化字符串 ]
- -d,选项,按照规定的日期,一般用于日期计算
- 格式化字符串:通过特定的字符串标记,来控制显示的日期格式
- %Y 年
- %y 年份后两位数字(00,99)
- %m 月份(01,12)
- %d 日(01,31)
- %H 小时(00,23)
- %M 分钟(00,59)
- %S 秒(00,60)
- %s 自 1970-01-01 00:00:00 UTC到现在都秒数
[root@master ~]# date
2024年 04月 10日 星期三 22:44:07 CST
[root@master ~]# date "+%Y-%m-%d %H"
2024-04-10 22
[root@master ~]# date "+%Y-%m-%d %H:%M"
2024-04-10 22:45
[root@master ~]# date "+%Y-%m-%d %H:%M:%S"
2024-04-10 22:45:33
[root@master ~]# date "+%Y-%m-%d %H:%M:%S %s"
2024-04-10 22:45:38 1712760338
(2)date命令日期加减计算
-d 支持的时间标记为:
- year 年
- month 月
- day 天
- Minute 分钟
- second 秒
[root@master ~]# date "+%Y-%m-%d %H:%M:%S"
2024-04-10 22:49:53
[root@master ~]# date -d "-1 day" "+%Y-%m-%d %H:%M:%S"
2024-04-09 22:49:59
[root@master ~]# date -d "+1 day" "+%Y-%m-%d %H:%M:%S"
2024-04-11 22:50:04
[root@master ~]# date -d "-1 mounth" "+%Y-%m-%d %H:%M:%S"
date: 无效的日期"-1 mounth"
[root@master ~]# date -d "-1 month" "+%Y-%m-%d %H:%M:%S"
2024-03-10 22:50:28
[root@master ~]# date -d "-1 year" "+%Y-%m-%d %H:%M:%S"
2023-04-10 22:50:44
[root@master ~]# date -d "+1 year" "+%Y-%m-%d %H:%M:%S"
2025-04-10 22:50:51
[root@master ~]# date -d "+1 Minute" "+%Y-%m-%d %H:%M:%S"
2024-04-10 22:55:25
[root@master ~]# date -d "+1 minute" "+%Y-%m-%d %H:%M:%S"
2024-04-10 22:55:31
(3)修改Linux时区
使用root权限,执行如下命令,修改为东八区
rm rf /etc/locatime
ln -s /usr/share/zoneinf/Asia/Shanghai /etc/locatime
(4)ntp程序
我们可以通过ntp程序自动校准系统时间
安装ntp: yum -y install ntp
启动并开机自启:
- systemctl start ntpd
- systemctl enable ntpd
当ntpd启动后会定期的帮助我们联网校准系统的时间
也可以手动校准(需要root权限):ntpdate -u ntp.aliyun.com
26. ifconfig 查看IP地址
可以通过ifconfig,查看本机的IP地址
如无法使用ifconfig命令,可以安装: yum -y install net-tools
特殊的IP地址
-
127.0.0.1
这个IP地址用于指代本机
-
0.0.0.0
- 可以用于指代本机
- 可以在端口绑定中用来确定绑定关系
- 在一些IP地址限制中,表示所有IP的意思,如放行规则设置为0.0.0.0,表示允许任意IP访问
27. ping命令
可以通过ping命令,检查指定的网络服务是否是可联通状态
语法:ping [ -c num ] ip或主机名
- 选项:-c,检查的次数,不使用-c选项,将无限次数持续检查
- 参数:ip或主机名,被检查的服务的ip地址或主机名地址
示例:
[root@master ~]# ping baidu.com # 无限次
PING baidu.com (39.156.66.10) 56(84) bytes of data.
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=1 ttl=128 time=34.2 ms
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=2 ttl=128 time=34.2 ms
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=3 ttl=128 time=32.8 ms
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=4 ttl=128 time=33.3 ms
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=5 ttl=128 time=33.7 ms
^C #ctrl+c退出
--- baidu.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 32.886/33.689/34.284/0.543 ms
[root@master ~]# ping -c 3 39.156.66.10 # 检查3次后退出
PING 39.156.66.10 (39.156.66.10) 56(84) bytes of data.
64 bytes from 39.156.66.10: icmp_seq=1 ttl=128 time=33.7 ms
64 bytes from 39.156.66.10: icmp_seq=2 ttl=128 time=33.4 ms
64 bytes from 39.156.66.10: icmp_seq=3 ttl=128 time=33.1 ms
--- 39.156.66.10 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 33.109/33.436/33.744/0.259 ms
28. wget命令
wget是非交互式的文件下载器,可以在命令行内下载网络文件
语法: wget [ -b ] url
- 选项:-b,可选,后台下载,会将日志写入到当前工作目录的wget-log文件
- 参数:url,下载链接
示例:
# 直接下载
[root@master ~]# wget http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
--2024-04-11 10:56:09-- http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
正在解析主机 archive.apache.org (archive.apache.org)... 65.108.204.189, 2a01:4f9:1a:a084::2
正在连接 archive.apache.org (archive.apache.org)|65.108.204.189|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 301 Moved Permanently
位置:https://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz [跟随至新的 URL]
--2024-04-11 10:56:09-- https://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
正在连接 archive.apache.org (archive.apache.org)|65.108.204.189|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:500749234 (478M) [application/x-gzip]
正在保存至: “hadoop-3.3.0.tar.gz.1”
0% [ ] 295,881 72.6KB/s 剩余 1h 43m
#后台下载示例
[root@master ~]# wget -b http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
继续在后台运行,pid 为 48344。
将把输出写入至 “wget-log”。
[root@master ~]# tail -f wget-log #通过tail命令可以监控后台下载进度
2750K .......... .......... .......... .......... .......... 0% 2.59M 21m30s
2800K .......... .......... .......... .......... .......... 0% 190K 21m52s
2850K .......... .......... .......... .......... .......... 0% 166K 22m20s
2900K .......... .......... .......... .......... .......... 0% 86.2K 23m33s
2950K .......... .......... .......... .......... .......... 0% 73.0M 23m9s
3000K .......... .......... .......... .......... .......... 0% 147K 23m40s
3050K .......... .......... .......... .......... .......... 0% 166K 24m5s
3100K .......... .......... .......... .......... .......... 0% 86.1K 25m11s
3150K .......... .......... .......... .......... .......... 0% 483K 25m3s
3200K .......... .......... .......... .......... .......... 0% 113K 25m46s
3250K .......... .......... .......... .......... .......... 0% 79.4K 26m55s
3300K .......... .......... .......... .......... .......... 0% 128K 27m27s
3350K .......... .......... .......... .......... .......... 0% 62.9K 28m56s
3400K .......... .......... .......... .......... .......... 0% 59.3K 30m30s
3450K .......... .......... .......... .......... .......... 0% 80.0K 31m30s
3500K .......... .......... .......... .......... .......... 0% 56.9K 33m3s
3550K .......... .......... .......... .......... .......... 0% 73.8K 34m7s
3600K .......... .......^C
29. curl 命令
curl可以发送http网络请求,可用于下载文件、获取信息等
语法: curl [ -O ] url
- 选项: -O,用于下载文件,当url是下载链接时,可以用次选项保存文件
- 参数:url,要发起请求的网络地址
二、 基础知识
1 端口
端口,是设备与外界通讯交流的出入口。端口可分为:物理端口和虚拟端口两类
1.1 物理端口
物理端口又可以称之为接口,是可见端口,如usb接口,RJ45网口,HDMI端口等
1.2 虚拟端口
虚拟端口是指计算机内部的端口,是不可见的,是用来操作系统和外部进行交互使用的。
计算机之间的通讯,通过IP只能锁定计算机,但是无法锁定具体的程序。通过端口可以锁定计算机上的具体程序,确保程序之间进行沟通。
IP地址相当于小区地址,在小区内可以有许多住户(程序),而门牌号(端口)就是各个住户(程序)的联系地址。
Linux系统好比一个超大小区,可以支持65535个端口,这6万多个端口分为3类进行使用:
-
公认端口:1~1023
通常用于一些系统内置或知名程序的预留使用,如SSH服务的22端口,HTTPS服务的443端口,非特殊需要不要占用这个范围的端口
-
注册端口:1024~49151
通常可以随意使用,用于松散的板锭一些程序/服务
-
动态端口:49152~65533
通常不会固定绑定程序,而是当程序对外进行网络链接时,用于临时使用
1.3 nmap命令查看端口占用
语法:nmap IP地址 ,安装nmap:yum -y install nmap
通过命令看到,本机(127.0.0.1)上有6个端口被程序占用了
1.4 netstat命令查看指定端口占用情况
语法:netstat -anp | grep 端口号,安装netstat:yum -y install net-tools
如图,可以看到当前系统61616端口被程序(进程号13061)占用
其中,0.0.0.0:111 ,表示端口绑定在0.0.0.0这个IP地址上,表示允许外部访问
2. 进程
2.1 ps命令查看进程
语法: ps [ -e -f ]
选项:-e,显示全部的进程
选项:-f,以完全格式化的形式展示信息(展示全部信息)
一般来说,固定用法就是:ps -ef 列出全部进程的全部信息
从左到右分别是:
- UID: 进程所属的用户
- PID: 进程的进程号ID
- PPID:进程的父ID(启动此进程的其它进程)
- C: 进程的CPU占用率(百分比)
- STIME:进程的启动时间
- TTY: 启动此进程的终端序号,如显示?表示非终端启动
- TIME:进程占用CPU的时间
- CMD: 表示进程的对应名称或启动路径或启动命令
2.2 kill关闭进程
语法: kill [ -9 ] 进程ID
选项: -9,表示强制关闭进程
2.3 top命令 查看CPU、内存、进程信息
语法:top [ -p -d -c -n -b -i -u ]
选项:
-p: 只显示某个进程的信息
-d: 设置刷新时间,默认是5秒
-c: 显示产生进程的完整命令,默认是进程名
-n: 指定刷新次数,比如 top -n -3,刷新输出3次后退出
-b:以非交互全屏模式运行,以批次的方式执行top,一般配合-n指定输出几次统计信息,将输出重定向到指定文件,比如 top -b -n 3 > /tmp/top.tmp
-i: 不显示任何限制(idle)或无用(zombie)的进程
-u: 查找指定用户启动的进程
交互式选项:
当top以交互式运行(非-b选项启动),可以用一下交互式命令进行控制
按键 功能
h键 按下h键盘,会显示帮助画面
c键 按下c键盘,会显示陈胜进程的完整命令,等同于-c参数,再次按c键,变为默认显示
f 键 按下f键盘,可以选择需要展示的项目
M键 按下M键盘,根据驻留内存大小(RES)排序
P键 按下P键盘,根据CPU使用百分比大小进行排序
T键 按下T键盘,根据时间/累计时间进行排序
E键 按下E键盘,切换顶部内存显示单位
e键 按下e键盘,切换进程内存显示单位
l键 按下l键盘,切换显示平均负载和启动时间信息
i键 按下i键盘,不显示闲置或无用的进程,等同于-i参数,再次按下,变为默认显示
t键 按下t键盘,切换显示CPU状态信息
m键 按下m键盘,切换显示内存信息
执行top命令
- 第一行
top:命令名称;00:37:26:当前系统时间;up 1 day,3:07:启动1天3小时7分钟;4users:4个用户登录;load:1、5、15分钟负载
- 第二行
Tasks: 175个进程;2 runing:2个进程正在运行;243 sleeping:243个进程睡眠;0 stopped:0个停止进程;0 zombie:0个僵尸进程
- 第三行
CPU:9.7 us:用户CPU使用率9.7;36.6 sy:系统cpu使用率36.6;0.0 ni:高优先级进程占用CPU时间百分比0.0%;53.0 id:CPU空闲率53%;0.1 wa:IO等待CPU占用率;hi:CPU硬件中断率0.0%;0.6 si:CPU软件中断率;0.0 st:强制等待占用CPU率
- 第四五行
KiB Mem:物理内存;total:总内存;free:空闲内存;used:已使用内存;buff/cache:buff和cache占用;
KiB Swap:虚拟内存(交换空间);total:总内存;free:空闲内存;used:已使用内存;buff/cache:buff和cache占用;
- PID:进程ID
- USER:进程所属用户
- PR:进程优先级,越小越高
- NI:负值表示高优先级,正表示低优先级
- VIRT:进程使用虚拟内存,单位kb
- RES:进程使用物理内存,单位kb
- SHR:进程使用共享内存,单位kb
- S:进程状态(S休眠,R运行,Z僵死状态,N负数优先级,I空闲状态)
- %CPU:进程占用CPU率
- %MEM:进程占用内存率
- TIME+:进程使用CPU时间总计,单位10毫秒
- COMMAND:进程的命令或名称或程序文件路径
2.4 df 命令查看磁盘使用率
语法: df [ -h ]
选项:-h,以更加人性化的单位显示
2.5 iostat 命令查看磁盘速率等信息
语法:iostat [ -x ] [ num1 ] [ num2 ]
- 选项: -x ,显示更多信息
- num1:数字,刷新间隔时间,num2:数字,刷新几次
tps: 该设备每秒传输次数。
rrqm/s :每秒这个设备的相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的时候相同Block的数据,FS会将这个请求合并Merge,提高IO利用率,避免重复调用)
wrqm/s:每秒这个设备相关的写入请求有多少被Merge了。
rsec/s:每秒读取的扇区数;sectors
wsec/s: 每秒写入到扇区数
rkB/s:每秒发送到设备的读取请求数
wkB/s:每秒发送到设备的写入请求数
avgrq-sz:平均请求扇区的大小
avgqu-sz:平均请求队列的长度。毫无疑问,队列长度越短越好
await:每一个IO请求的处理的平均时间(单位是微妙毫秒)
svctm: 表示平均每次设备I/O操作的服务时间(以毫秒为单位)
%util :磁盘利用率
2.6 sar -n DEV查看网络情况
语法:sar -n DEV num1 num2
选项: -n , 查看网络,DEV表示查看网络接口
num1:刷新间隔(不填就查看一次结束) num2:查看次数(不填无限次数)
IFACE: 本地网络接口的名称
rxpck/s: 每秒接收的数据包
txpck/s: 每秒发送的数据包
rxkB/s 每秒接收到数据包大小,单位kb
txkB/s 每秒发送到数据包大小,单位kb
rxcmp/s 每秒接受的压缩数据包
txcmp/s 每秒发送到压缩包
rxmcst/s 每秒接收到多播数据包