❤️新版Linux零基础快速入门到精通——第三部分❤️
- 非科班的我!Ta!还是来了~~~
- 3. Linux权限管控
- 3.1 认知root用户
- 3.1.1 `Switch User`——su
- 3.1.2 `sudo`命令
- 3.1.3 为普通用户配置`sudo`认证
- 3.2 用户和用户组
- 3.2.1 用户、用户组
- 3.2.2 用户组管理
- 3.2.3 用户管理
- 3.3 显示inode的内容:stat
- 3.4 文件访问权限
- 3.5 修改文件权限:chmod
- 3.5.1 字母法:`chmod u/g/o/a +/-/= rwx 文件`
- 3.5.2 数字法:“rwx” 这些权限也可以用数字来代替
- 3.6 修改文件所有者:chown
- 3.7 修改文件所属组:chgrp
- 3.8 查看当前用户:whoami
- 3.9 查看登录用户:who
- 3.10 退出登录账户: exit
- 4. Linux系统管理
- 4.1 查看当前日历:cal
- 4.2 显示或设置时间:date
- 4.3 查看网络状态:netstat
- 4.4 查看进程信息:ps
- 4.5 以树状图显示进程关系:pstree
- 4.6 动态显示进程:top
- 4.7 终止进程:kill
- 4.8 检测磁盘空间:df
- 4.9 检测目录所占磁盘空间:du
- 4.10 查看或配置网卡信息:ifconfig
- 4.11 测试远程主机连通性:ping
- 5. Linux小技巧
- 5.1 软件安装
- 5.1.1 Linux系统的应用商店
- 5.1.2 yum命令
- 5.1.3 apt命令
- 5.2 systemctl控制软件启动关闭
- 5.3 软连接
- 5.4 ip地址和主机名
- 5.4.1 ip地址
- 5.4.2 特殊ip地址
- 5.4.3 主机名
- 5.5 配置Linux固定ip
- 5.6 网络传输
- 5.6.1 网络请求和下载
- 5.6.1.1 ping命令
- 5.6.1.2 wget命令
- 5.6.1.3 curl命令
- 5.6.2 端口
- 5.6.2.1 端口的作用
- 5.6.2.2 端口的分类
- 5.6.2.3 端口使用的注意事项
- 5.6.2.4 查看端口占用
- 5.7 环境变量
- 5.8 上传、下载
- 5.9 压缩 、解压
- 5.9.1 压缩格式
- 5.9.2 tar命令压缩
- 5.9.3 tar命令解压
- 5.9.4 zip命令压缩
- 5.9.5 unzip命令解压
非科班的我!Ta!还是来了~~~
Linux一开始就不是为桌面用户准备的,林纳斯自己本身就是一个Unix极客,他设计Linux就参考了Unix的设计哲学,也就是说Linux从一开始就是为专业用户设计的。 不管是Unix操作系统也好,还是Linux操作系统也好,本质上都是为了提高生产效率。Linux的设计者林纳斯,自己就是一个Unix极客,他是不满意Unix当时的版权问题,于是他吸收了很多Unix的优点,在这个基础上设计了Linux操作系统。Linux的设计哲学,让Linux很多场景下都需要命令行操作,并且Linux设计者并不是很鼓励大家使用桌面,或者更合理的说法是,Linux的设计初衷是即使你要用一个桌面,也希望你能掌握好各种命令行操作,Vim/Emacs、GCC等各种软件,都更加鼓励大家用命令行操作
Linux诞生的时机吧,运气也确实不太好,我们且不说苹果的Mac OS X,Linux在1991年的时候由林纳斯开发,内核开发出来之后,1991年10月5日,林纳斯将Linux V0.01版内核源代码释放出来供众多的开发者进行完善,一直到93年才有10万用户,这些用户也基本都是程序员,96年的时候也才350万用户。这个发展其实是有点太慢了,跟Windows、MacOS动辄几千万、上亿的用户没办法比。言归正传,Linux只是一门基本计算机技能,它对学习者的背景、知识结构、年龄都没啥要求,只要坚持不懈的进步,Linux没啥学不会的。当然在学习中总会遇到瓶颈,这个时候就需要自我调节、坚持下去。学习Linux有大量的东西需要记忆,如果你懒得背、懒得学习、懒得去搞清 ,那当然会觉得难学了。还是那句话,脚踏实地,总会有所收获。
❤️积极的学习心态意味着好的开始❤️
“Linux这个操作系统难用吗?难!一片黑漆漆的命令行窗口闪烁着谜一样的光标,本来英语就是老大难,现在竟然让我背那么多命令?”“Linux这个操作系统难吗?简单,纯命令行设计、个性化强、工作效率高、黑漆漆的窗口天生自带神秘感。”
3. Linux权限管控
3.1 认知root用户
root用户拥有最大的操作权限,普通用户权限受限
无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理。在Linux系统中,拥有最大权限的账户名为: root (超级管理员)。而在前期,我们一直使用的账户是普通的用户: itheima
- 普通用户的权限在home是不受限的
3.1.1 Switch User
——su
切换用户:
su [-] [用户名]
-
符号是可选的,表示是否在切换用户后加载环境变量(后续讲解),建议带上参数:用户名
,表示要切换的用户,用户名也可以省略,省略表示切换到root
- 切换用户后,可以通过
exit
命令退回上一个用户,也可以使用快捷键:ctrl+ d
- 使用普通用户,切换到其它用户需要输入密码,如切换到
root
用户 - 使用
root
用户切换到其它用户,无需密码,可以直接切换
3.1.2 sudo
命令
- 在我们得知root密码的时候,可以通过su命令切换到root得到最大权限。但是我们不建议长期使用root用户,避免带来系统损坏。
- 我们可以使用
sudo
命令,为普通的命令授权,临时以root身份执行。
语法:
sudo 其它命令
-
在其它命令之前,带上
sudo
,即可为这一条命令临时赋予root
授权 -
但是并不是所有的用户,都有权利使用
sudo
,我们需要为普通用户配置sudo认证
3.1.3 为普通用户配置sudo
认证
- 切换到root用户,执行
visudo
命令,会自动通过vi编辑器打开:/etc/sudoers
- 在文件的最后添加:
itheima ALL=(ALL)
NOPASSWD: ALL
- 其中最后的
NOPASSWD
:ALL表示使用sudo命令,无需输入密码 - 最后通过
wq
保存
切换回普通用户
[itheimadlocalhost ~]$ sudo ls /root
anaconda-ks.cfg original-ks.cfg
[itheimadlocalhost ~]$ sudo mkdir /test
[itheimadlocalhost ~]$
执行的命令,均以root运行
3.2 用户和用户组
3.2.1 用户、用户组
Linux系统中可以:
- 配置多个用户
- 配置多个用户组
- 用户可以加入多个用户组中
Linux中关于权限的管控级别有2个级别,分别是:
- 针对用户的权限控制
- 针对用户组的权限控制
比如,针对某文件,可以控制用户的权限,也可以控制用户组的权限。
所以,我们需要学习在Linux中进行用户、用户组管理的基础命令,为后面学习权限控制打下基础。
3.2.2 用户组管理
以下命令需root用户执行
- 创建用户组
groupadd 用户组名
- 删除用户组
groupdel 用户组名
为后续演示,我们创建一个itcast
用户组: groupadd itcast
3.2.3 用户管理
以下命令需root用户执行
-
创建用户
- useradd [-g -d] 用户名
- 选项:
-g
指定用户的组,不指定-g
,会创建同名组并自动加入,指定一g需要组已经存在,如已存在同名组,必须使用-g - 选项:
-d
指定用户HOME路径,不指定,HOME目录默认在:/home/用户名
-
删除用户
- userdel [-r] 用户名
- 选项:
-r
,删除用户的HOME目录,不使用-r
,删除用户时,HOME目录保留
-
查看用户所属组
- id [用户名]
- 参数:用户名,被查看的用户,如果不提供则查看自身
-
修改用户所属组
- usermod -aG 用户组 用户名 ,将指定用户加入指定用户组
getent命令:
-
可以查看当前系统中有哪些用户
getent passwd
-
查看当前系统有哪些组
getent group
3.3 显示inode的内容:stat
stat [文件或目录]
查看 testfile 文件的inode内容内容,可以用以下命令:
3.4 文件访问权限
用户能够控制一个给定的文件或目录的访问程度,一个文件或目录可能有读、写及执行权限:
- 读权限(r) :对于文件,具有读取文件内容的权限;对于目录,具有浏览目录的权限。
- 写权限(w) :对于文件,具有修改文件内容的权限;对于目录,具有删除、移动目录内文件的权限。
- 可执行权限(x): 对于文件,具有执行文件的权限;对于目录,该用户具有进入目录的权限。
通常,Unix/Linux系统只允许文件的属主(所有者)或超级用户改变文件的读写权限。
示例:
第1个字母代表文件的类型:
- “d” 代表文件夹
- “-” 代表普通文件
- “c” 代表硬件字符设备
- “b” 代表硬件块设备
- “s”表示管道文件
- “l” 代表软链接文件。
后9个字母分别代表三组权限:文件所有者、用户组、其他用户拥有的权限。
3.5 修改文件权限:chmod
chmod 修改文件权限有两种使用格式:字母法与数字法。
3.5.1 字母法:chmod u/g/o/a +/-/= rwx 文件
[ u/g/o/a ] | 含义 |
---|---|
u | user 表示该文件的所有者 |
g | group 表示与该文件的所有者属于同一组( group )者,即用户组 |
o | other 表示其他以外的人 |
a | all 表示这三者皆是 |
[ ±= ] | 含义 |
---|---|
+ | 增加权限 |
- | 撤销权限 |
= | 设定权限 |
rwx | 含义 |
---|---|
r | read 表示可读取,对于一个目录,如果没有r权限,那么就意味着不能通过ls查看这个目录的内容。 |
w | write 表示可写入,对于一个目录,如果没有w权限,那么就意味着不能在目录下创建新的文件。 |
x | excute 表示可执行,对于一个目录,如果没有x权限,那么就意味着不能通过cd进入这个目录。 |
除此之外,还有快捷写法:chmod 751 hello.txt
3.5.2 数字法:“rwx” 这些权限也可以用数字来代替
字母 | 说明 |
---|---|
r | 读取权限,数字代号为 “4” |
w | 写入权限,数字代号为 “2” |
x | 执行权限,数字代号为 “1” |
- 不具任何权限,数字代号为 “0”
如执行:chmod u=rwx,g=rx,o=r filename
就等同于:chmod u=7,g=5,o=4 filename
chmod 751 file:
- 文件所有者:读、写、执行权限
- 同组用户:读、执行的权限
- 其它用户:执行的权限
chmod 777 file:所有用户拥有读、写、执行权限
注意:如果想递归所有目录加上相同权限,需要加上参数“ -R ”。 如:chmod 777 test/ -R 递归 test 目录下所有文件加 777 权限
数字的细节如下: r记为4、w记为2、 x记为1、可以有:
数字 | 解释 | 转化 |
---|---|---|
0 | 无任何权限 | --- |
1 | 仅有x权限 | --x |
2 | 仅有w权限 | -W- |
3 | 有w和x权限 | -WX |
4 | 仅有r权限 | r-- |
5 | 有r和x权限 | r-X |
6 | 有r和w权限 | rW- |
7 | 有全部权限 | rwx |
3.6 修改文件所有者:chown
使用chown
命令,可以修改文件、文件夹的所属用户和用户组
普通用户无法修改所属为其它用户或组,所以此命令只适用于root用户执行
语法:
chown [-R] [用户][:] [用户组] 文件或文件夹
-
选项,
-R
,同chmod,对文件夹内全部内容应用相同规则 -
选项,用户,修改所属用户
-
选项,用户组,修改所属用户组
-
:
用于 分隔用户和用户组
python@ubuntu:~/test$ ll h.txt
-rw------- 1 python python 4 11月 22 22:35 h.txt
python@ubuntu:~/test$ chown mike h.txt
chown: 正在更改'h.txt' 的所有者: 不允许的操作
python@ubuntu:~/test$ sudo chown mike h.txt
python@ubuntu:~/test$ ll h.txt
-rw------- 1 mike python 4 11月 22 22:35 h.txt
3.7 修改文件所属组:chgrp
python@ubuntu:~/test$ ll h.txt
-rw------- 1 mike python 4 11月 22 22:35 h.txt
python@ubuntu:~/test$ sudo chgrp mike h.txt
python@ubuntu:~/test$ ll h.txt
-rw------- 1 mike mike 4 11月 22 22:35 h.txt
3.8 查看当前用户:whoami
查看当前系统当前账号的用户名。可通过cat /etc/passwd查看系统用户信息。
3.9 查看登录用户:who
who
命令用于查看当前所有登录系统的用户信息。
常用选项:
选项 | 含义 |
---|---|
-m或am I | 只显示运行who命令的用户名、登录终端和登录时间 |
-q 或–count | 只显示用户的登录账号和登录用户的数量 |
-u | 在登录时间后显示该用户最后一次操作到当前的时间间隔 |
-u或–heading | 显示列标题 |
3.10 退出登录账户: exit
如果是图形界面,退出当前终端;
如果是使用ssh远程登录,退出登陆账户;
如果是切换后的登陆用户,退出则返回上一个登陆账号。
4. Linux系统管理
4.1 查看当前日历:cal
cal命令用于查看当前日历,-y显示整年日历:
4.2 显示或设置时间:date
设置时间格式(需要管理员权限):
date [MMDDhhmm[[CC]YY][.ss]] +format
MM为月,DD为天,hh为小时,mm为分钟;CC为年前两位,YY为年的后两位,ss为秒。
如: date 010203042016.55。
显示时间格式(date ‘+%y,%m,%d,%H,%M,%S’):
format格式 | 含义 |
---|---|
%Y,%y | 年 |
%m | 月 |
%d | 日 |
%H | 时 |
%M | 分 |
%S | 秒 |
自动校准时间的软件ntp
4.3 查看网络状态:netstat
netstat命令用于显示网络状态。
利用netstat指令可让你得知整个Linux系统的网络情况。
语法:
netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]
参数说明:
-a
或-all
显示所有连线中的Socket。-A<网络类型>
或-<网络类型>
列出该网络类型连线中的相关地址。-c
或-continuous
持续列出网络状态。-C
或-cache
显示路由器配置的快取信息。-e
或-extend
显示网络其他相关信息。-F
或-fib
显示FIB。-g
或-groups
显示多重广播功能群组组员名单。-h
或-help
在线帮助。-i
或-interfaces
显示网络界面信息表单。-l
或-listening
显示监控中的服务器的Socket。-M
或-masquerade
显示伪装的网络连线。-n
或-numeric
直接使用IP地址,而不通过域名服务器。-N
或-netlink
或–symbolic
显示网络硬件外围设备的符号连接名称。-o
或-timers
显示计时器。-p
或-programs
显示正在使用Socket的程序识别码和程序名称。-r
或-route
显示Routing Table。-s
或-statistice
显示网络工作信息统计表。-t
或-tcp
显示TCP传输协议的连线状况。-u
或-udp
显示UDP传输协议的连线状况。-v
或-verbose
显示指令执行过程。-V
或-version
显示版本信息。-w
或-raw
显示RAW传输协议的连线状况。-x
或-unix
此参数的效果和指定"-A unix"参数相同。-ip
或-inet
此参数的效果和指定"-A inet"参数相同。
常用:
4.4 查看进程信息:ps
进程是一个具有一定独立功能的程序,它是操作系统动态执行的基本单元。
ps命令选项:
ps a
显示现行终端机下的所有程序,包括其他用户的程序。ps -A
显示所有程序。ps c
列出程序时,显示每个程序真正的指令名称,而不包含路 径,参数或常驻服务的标示。ps -e
此参数的效果和指定"A"参数相同。ps e
列出程序时,显示每个程序所使用的环境变量。ps f
用ASCII字符显示树状结构,表达程序间的相互关系。ps -H
显示树状结构,表示程序间的相互关系。ps -N
显示所有的程序,除了执行ps指令终端机下的程序之外。ps s
采用程序信号的格式显示程序状况。ps u
以用户为主的格式来显示程序状况。ps x
显示所有程序,不以终端机来区分。
选项 | 含义 |
---|---|
-a | 显示终端上的所有进程,包括其他用户的进程 |
-u | 显示进程的详细状态 |
-x | 显示没有控制终端的进程 |
-w | 显示加宽,以便显示更多的信息 |
-r | 只显示正在运行的进程 |
常见用法:
ps -e 查看所有进程信息(瞬时的)
ps -u root -N 查看所有不是root运行的进程
ps ax 显示所有进程状态状态
ps -ef |grep xxx 显示含有xxx的进程
实例:
显示指定用户信息:
显示所有进程信息,连同命令行
4.5 以树状图显示进程关系:pstree
显示进程的关系
特别表明在运行的进程:
# pstree -apnh //显示进程间的关系
同时显示用户名称:
# pstree -u //显示用户名称
4.6 动态显示进程:top
top命令用来动态显示运行中的进程。top命令能够在运行后,在指定的时间间隔更新显示信息。-d参数可以指定显示信息更新的时间间隔。
在top命令执行后,可以按下按键得到对显示的结果进行排序:
按键 | 含义 |
---|---|
M | 根据内存使用量来排序 |
P | 根据CPU占有率来排序 |
T | 根据进程运行时间的长短来排序 |
U | 可以根据后面输入的用户名来筛选进程 |
K | 可以根据后面输入的PID来杀死进程。 |
q | 退出 |
h | 获得帮助 |
一、top前五条信息解释
top - 14:49:28 up 1:33, 1 user, load average: 0.00, 0.00, 0.00
内容 | 含义 |
---|---|
14:49:28 | 表示当前时间 |
up 1:33 | 系统远行时间,格式为时:分 |
1 user | 当前登陆用户数 |
load average: 0.00, 0.00, 0.00 | 系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值 |
Tasks: 80 total, 2 running, 78 sleeping, 0 stopped, 0 zombie
内容 | 含义 |
---|---|
Tasks: 80 total | 进程总数 |
2 running | 正在运行的进程数 |
78 sleeping | 睡眠的进程数 |
0 stopped | 停止的进程数 |
0 zombie | 僵尸进程数 |
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
内容 | 含义 |
---|---|
0.0%us | 用户空间占用CPU百分比 |
0.0%sy | 内核空间占用CPU百分比 |
0.0%ni | 用户进程空间内改变过优先级的进程占用CPU百分比 |
100.0%id | 空闲CPU百分比 |
0.0%wa | 等待输入输出的CPU时间百分比 |
0.0%hi | 硬中断(Hardware IRQ)占用CPU的百分比 |
0.0%si | 软中断(Software Interrupts)占用CPU的百分比 |
0.0 st | 用于有虚拟cpu的情况,用来指示被虚拟机偷掉的cpu时间 |
Mem: 1922488k total, 406936k used, 1515552k free, 11940k buffers
内容 | 含义 |
---|---|
1922488k total | 物理内存总量 |
406936k used | 使用的物理内存总量 |
1515552k free | 空闲内存总量 |
11940k buffers | 用作内核缓存的内存量 |
Swap: 835576k total, 0k used, 835576k free, 111596k cached
内容 | 含义 |
---|---|
835576k total | 交换区总量 |
0k used | 使用的交换区总量 |
835576k free | 空闲交换区总量 |
111596k cached | 缓冲的交换区总量 |
二、进程信息
列名 | 含义 |
---|---|
PID | 进程id |
USER | 进程所有者的用户名 |
PR | 优先级 |
NI | nice值。负值表示高优先级,正值表示低优先级 |
VIRT | 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES |
RES | 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA |
SHR | 共享内存大小,单位kb |
S | 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程 |
%CPU | 上次更新到现在的CPU时间占用百分比 |
%MEM | 进程使用的物理内存百分比 |
TIME+ | 进程使用的CPU时间总计,单位1/100秒 |
COMMAND | 命令名/命令行 |
默认进入top时,各进程是按照CPU的占用量来排序的。
更高级的命令是htop,但需要安装:
[root@VM_0_9_centos ~]# htop
CPU[|| 1.3%] Tasks: 55, 29 thr; 1 running
Mem[||||||||||||||||||||||||||||||||||||||||||||||||||||||||||184M/1.80G] Load average: 0.00 0.01 0.05
Swp[ 0K/0K] Uptime: 42 days, 03:29:48
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
2609 root 20 0 156M 9132 1784 S 0.7 0.5 39:01.13 barad_agent
2610 root 20 0 660M 14168 1976 S 0.7 0.8 3h35:20 barad_agent
1158 root 20 0 120M 2576 1492 R 0.0 0.1 0:00.01 htop
4.7 终止进程:kill
kill命令指定进程号的进程,需要配合 ps 使用。
使用格式:
kill [-signal] pid
信号值从0到15,其中9为绝对终止,可以处理一般信号无法终止的进程。
关机重启:reboot、shutdown、init
命令 | 含义 |
---|---|
reboot | 重新启动操作系统 |
shutdown –r now | 重新启动操作系统,shutdown会给别的用户提示 |
shutdown -h now | 立刻关机,其中now相当于时间为0的状态 |
shutdown -h 20:25 | 系统在今天的20:25 会关机 |
shutdown -h +10 | 系统再过十分钟后自动关机 |
init 0 | 关机 |
init 6 | 重启 |
4.8 检测磁盘空间:df
df命令用于检测文件系统的磁盘空间占用和空余情况,可以显示所有文件系统对节点和磁盘块的使用情况。
选项 | 含义 |
---|---|
-a | 显示所有文件系统的磁盘使用情况 |
-m | 以1024字节为单位显示 |
-t | 显示各指定文件系统的磁盘空间使用情况 |
-T | 显示文件系统 |
4.9 检测目录所占磁盘空间:du
du命令用于统计目录或文件所占磁盘空间的大小,该命令的执行结果与df类似,du更侧重于磁盘的使用状况。
du命令的使用格式如下: du [选项] 目录或文件名
选项 | 含义 |
---|---|
-a | 递归显示指定目录中各文件和子目录中文件占用的数据块 |
-s | 显示指定文件或目录占用的数据块 |
-b | 以字节为单位显示磁盘占用情况 |
-l | 计算所有文件大小,对硬链接文件计算多次 |
4.10 查看或配置网卡信息:ifconfig
ifconfig显示所有网卡的信息:
python@ubuntu:~$ ifconfig
ens33 Link encap:以太网 硬件地址 00:0c:29:59:65:f2
inet 地址:192.168.40.11 广播:192.168.40.255 掩码:255.255.255.0
inet6 地址: fe80::432f:6c4a:f47d:5f6b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1
接收数据包:422794 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:208666 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1000
接收字节:603741383 (603.7 MB) 发送字节:12819550 (12.8 MB)
lo Link encap:本地环回
inet 地址:127.0.0.1 掩码:255.0.0.0
inet6 地址: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 跃点数:1
接收数据包:2248 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:2248 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1
接收字节:497588 (497.5 KB) 发送字节:497588 (497.5 KB)
修改ip:
python@ubuntu:~$ sudo ifconfig ens33 192.168.40.10
python@ubuntu:~$ ifconfig ens33
ens33 Link encap:以太网 硬件地址 00:0c:29:59:65:f2
inet 地址:192.168.40.10 广播:192.168.40.255 掩码:255.255.255.0
inet6 地址: fe80::432f:6c4a:f47d:5f6b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1
接收数据包:422818 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:208692 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1000
接收字节:603745130 (603.7 MB) 发送字节:12822615 (12.8 MB)
4.11 测试远程主机连通性:ping
python@ubuntu:~$ ping 192.168.40.1
PING 192.168.40.1 (192.168.40.1) 56(84) bytes of data.
64 bytes from 192.168.40.1: icmp_seq=1 ttl=64 time=0.699 ms
64 bytes from 192.168.40.1: icmp_seq=2 ttl=64 time=0.372 ms
^C
--- 192.168.40.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.372/0.535/0.699/0.165 ms
python@ubuntu:~$ ping 192.168.40.1 -c 3
PING 192.168.40.1 (192.168.40.1) 56(84) bytes of data.
64 bytes from 192.168.40.1: icmp_seq=1 ttl=64 time=0.409 ms
64 bytes from 192.168.40.1: icmp_seq=2 ttl=64 time=0.367 ms
64 bytes from 192.168.40.1: icmp_seq=3 ttl=64 time=0.373 ms
--- 192.168.40.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.367/0.383/0.409/0.018 ms
python@ubuntu:~$
5. Linux小技巧
ctrl + c
强制停止ctrl + d
退出或登出history
显示历史命令!命令前缀
,自动执行上一次匹配的命令ctrl + r
历史命令搜索
光标移动快捷键
ctrl+a
,跳到命令开头ctrl+ e
,跳到命令结尾ctrl+键盘左键
,向左跳一个单词ctrl+键盘右键
,向右跳一个单词
清屏
- 快捷键
ctrl +l
,可以清空终端内容 clear
得到同样效果
5.1 软件安装
5.1.1 Linux系统的应用商店
操作系统安装软件有许多种方式,一般分为:
- 下载安装包自行安装
- 如win系统 使用
exe
文件、Msi
文件等 - 如mac系统使用
dmg
文件、pkg
文件等
- 如win系统 使用
- 系统的应用商店内安装
- 如win系 统有
Microsoft Store
商店 - 如mac系统有
AppStore
商店
- 如win系 统有
Linux系统同样支持这两种方式,我们首先,先来学习使用: Linux命令行内的"应用商店" , yum命令安装软件
5.1.2 yum命令
yum
: RPM包软件管理器,用于自动化安装配置Linux软件,并可以自动解决依赖问题。
语法: yum [-y] [install | remove | search] 软件名称
- 选项:-y,自动确认,无需手动确认安装或卸载过程
- install: 安装
- remove: 卸载
- search: 搜索
yum命令需要root权限,可以su切换到root,或使用sudo提权。
yum命令需要联网
案例:
yum [-y] install wget
通过yum命令安装wgetyum [-y] remove wget
通过yum命令卸载wget
5.1.3 apt命令
- CentOS: .rpm——yum
- Ubuntu:.deb——apt
小结:
- 在CentOS系统中,使用yum命令联网管理软件安装。
- yum语法:
yum [-y] [install | remove | search] 软件名称
- yum语法:
- 在Ubuntu系统中,使用apt命令联网管理软件安装。
- apt语法:
apt [-y] [install | remove | search] 软件名称
- apt语法:
5.2 systemctl控制软件启动关闭
Linux
系统很多软件(内置或第三方)均支持使用systemctl
命令控制:启动、停止、开机自启
能够被
systemctl
管理的软件,一般也称之为:服务
语法:
systemctl start | stop | status | enable| disable 服务名
start
——启动stop
——关闭status
——查看状态enable
——开启开机自启disable
——关闭开机自启
系统内置的服务比较多,比如:
-
NetworkManager——主网络服务
-
network——副网络服务
-
firewalld——防火墙服务
-
sshd,ssh服务——(FinalShell远程登录Linux使用的就是这个服务)
除了内置的服务以外,部分第三方软件安装后也可以以systemctl进行控制。
yum install -y ntp
——安装ntp软件- 可以通过
ntpd
服务名,配合systemctl
进行控制
- 可以通过
yum install -y httpd
——安装apache服务器软件- 可以通过
httpd
服务名,配合systemctl
进行控制
- 可以通过
5.3 软连接
在系统中创建软链接,可以将文件、文件夹链接到其它位置。
类似Windows系统中的【快捷方式】
语法:
ln -s 参数1 参数2
-s
选项, 创建软连接:参数1
: 被链接的文件或文件夹参数2
: 要链接去的目的地
实例:
ln -s /etc/yum.conf ~/yum.conf
ln -s /etc/yum ~/yum
5.4 ip地址和主机名
5.4.1 ip地址
- 每一台联网的电脑都会有一个地址,用于和其它计算机进行通讯
- IP地址主要有2个版本,
V4版本
和V6版本
(V6很少用,课程暂不涉及) - IPv4版本的地址格式是: a.b.c.d, 其中abcd表示0~255的数字,如192.168.88.101就是一个标准的IP地址
5.4.2 特殊ip地址
-
127.0.0.1 本机地址
-
0.0.0.0 特殊IP地址
- 可以用于指代本机
- 可以在端口绑定中用来确定绑定关系
- 在一些IP地址限制中, 表示所有IP的意思,如放行规则设置为
0.0.0.0
,表示允许任意IP访问
5.4.3 主机名
- 每一台电脑除了对外联络地址(IP地址)以外,也可以有一个名字,称之为主机名
- 无论是Windows或Linux系统,都可以给系统设置主机名
修改主机名
hostnamectl set-hostname主机名
,修改主机名(需root)
域名解析:
即:
- 先查看本机的记录(私人地址本)
- Windows看:
C:\Windows\System32\drivers\etclhosts
- Linux看:
/etc/hosts
- Windows看:
- 再联网去DNS服务器询问
5.5 配置Linux固定ip
为什么需要固定IP
当前我们虚拟机的Linux操作系统,其IP地址是通过DHCP服务获取的。
DHCP
:动态获取IP地址,即每次重启设备后都会获取一次,可能导致IP地址频繁变更
- 原因1:办公电脑IP地址变化无所谓,但是我们要远程连接到Linux系统,如果IP地址经常变化我们就要频繁修改适配很麻烦
- 原因2:在刚刚我们配置了虚拟机IP地址和主机名的映射,如果IP频繁更改,我们也需要频繁更新映射关系
综上所述,我们需要IP地址固定下来,不要变化了。
【linux】linux系统配置静态IP地址(超详细,手把手教会)
5.6 网络传输
5.6.1 网络请求和下载
5.6.1.1 ping命令
5.6.1.2 wget命令
5.6.1.3 curl命令
5.6.2 端口
端口,是设备与外界通讯交流的出入口。端口可以分为:物理端口和虚拟端口两类
- 物理端口:又可称之为接口,是可见的端口,如USB接口,RJ45网口, HDMI端口等
- 虚拟端口:是指计算机内部的端口,是不可见的,是用来操作系统和外部进行交互使用的
计算机程序之间的通讯,通过IP只能锁定计算机,但是无法锁定具体的程序。
通过端口可以锁定计算机上具体的程序,确保程序之间进行沟通
IP地址相当于小区地址在小区内可以有许多住户(程序),而门牌号(端口)就是各个住户(程序)的联系地址
5.6.2.1 端口的作用
端口号的主要作用是表示一台计算机中的特定进程所提供的服务。网络中的计算机是通过IP地址来代表其身份的,它只能表示某台特定的计算机,但是一台计算机上可以同时提供很多个服务,如数据库服务、FTP服务、Web服务等,我们就通过端口号来区别相同计算机所提供的这些不同的服务,如常见的端口号21表示的是FTP服务,端口号23表示的是Telnet服务,端口号25指的是SMTP服务等。
5.6.2.2 端口的分类
TCP与UDP段结构中端口地址都是16比特,可以有在0—65535范围内的端口号。
按照端口号分类:
- 公认端口:0~1023。它们紧密绑定于一些服务,通常这些端口的通讯明确表明了某种服务的协议,如:80端口对应与HTTP通信,21端口绑定与FTP服务,25端口绑定于SMTP服务,135端口绑定与RPC(远程过程调用)服务。
- 注册端口:1024~49151。它们松散的绑定于一些服务,也就是说有许多服务绑定于这些端口,这些端口同样用于其他许多目的,如:许多系统处理端口从1024开始
- 动态或私有端口:49152~65535。理论上,不应为服务分配这些端口,通常机器从1024开始分配动态端口。例外:SUN的RPC端口从32768开始。
按照协议类型分类:按协议类型划分可分为TCP端口、UDP端口、IP端口、ICMP。
- TCP端口:即传输控制协议端口,需要在客户端和服务器之间建立连接,这样可以提供可靠的数据传输。常见的包括FTP的21端口,Telnet的23端口,SMTP的25端口,HTTP的80端口。
- UDP端口:即用户数据报协议端口,无需在客户端和服务器端建立连接,安全性得不到保障。常见的DNS的53端口,SNMP(简单网络管理协议)的161端口,QQ使用的8000和4000端口。
- 保留端口:UNIX有保留端口号的概念,只有超级用户特权的进程才允许给它自己分配一个保留端口号。这些端口号介于1~1023之间,一些应用程序将它作为客户与服务器认证的一部分。
5.6.2.3 端口使用的注意事项
- 不要使用端口号小于1024的端口。
- 端口号一般习惯为4位整数,在同一台计算机上端口号不能重复,否则,会产生端口号冲突。
- 客户端端口号因存在时间很短暂又称临时端口号,大多数TCP/IP实现给临时端口号分配1024—5000之间的端口号。大于5000的端口号是为其他服务器预留的 。
5.6.2.4 查看端口占用
1. 使用 netstat 命令
netstat 是一个用于显示网络状态信息的命令。要查看特定端口是否被占用,可以使用以下命令:
netstat -tuln | grep 端口号
- -t: 显示 TCP 连接信息
- -u: 显示 UDP 连接信息
- -l: 仅显示监听状态的端口
- -n: 使用数字格式显示端口号,而不是服务名
- grep 端口号: 使用 grep 命令过滤出指定的端口号信息
例如,要查看端口号 80 是否被占用,可以执行:
netstat -tuln | grep 80
2. 使用 ss 命令
ss 是一个更现代化的工具,用于显示套接字统计信息。它比 netstat 更快速和高效。要查看端口占用情况,可以使用以下命令:
ss -tuln | grep 端口号
-t: 显示 TCP 连接信息
-u: 显示 UDP 连接信息
-l: 仅显示监听状态的端口
-n: 使用数字格式显示端口号,而不是服务名
grep 端口号: 使用 grep 命令过滤出指定的端口号信息
例如,要查看端口号 80 是否被占用,可以执行:
ss -tuln | grep 80
3. 查看所有端口占用情况
如果你想查看系统上所有端口的占用情况,只需省略 grep 命令即可:
使用 netstat:
netstat -tuln
或者使用 ss:
ss -tuln
这将显示所有 TCP 和 UDP 端口的监听情况。
5.7 环境变量
是key-value
的结构
用来记录一些关键信息
输入env查看
自行设置环境变量:
5.8 上传、下载
5.9 压缩 、解压
5.9.1 压缩格式
市面上有非常多的压缩格式
- zip格式: Linux、Windows、MacOS,常用
-7zip: Windows系统常用 - rar: Windows系统常用
- tar: Linux、MacOS常用
- gzip: Linux、MacOS常用
在Windows系统中常用的软件如: winrar bandizip等软件,都支持各类常见的压缩格式,这里不多做讨论。
我们现在要学习,如何在Linux系统中操作: tar. gzip. zip这三种压缩格式完成文件的压缩、解压操作。
Linux和Mac系统常用有2种压缩格式,后缀名分别是:
-
.tar
,称之为tarball,归档文件,即简单的将文件组装到一个.tar的文件内,并没有太多文件体积的减少,仅仅是简单的封装 -
.gz
,也常见为.tar.gz
, gzip格式压缩文件,即使用gzip压缩算法将文件压缩到一一个文件内,可以极大的减少压缩后的体积
针对这两种格式,使用tar命令均可以进行压缩和解压缩的操作
语法:
tar [-c -v -x -f -z -C] 参数1 参数2 ... 参数n
下表列出了tar命令的一些常用参数及其功能:
参数 | 功能 |
---|---|
-c | 创建新的归档文件(打包) |
-x | 从归档文件中提取文件(解包) |
-f <文件名> | 指定归档文件名 |
-v | 显示操作的详细信息 |
-z | 通过gzip压缩归档文件 |
-j | 通过bzip2压缩归档文件 |
-C <目录> | 切换到指定目录 |
–exclude=<模式> | 排除匹配模式的文件 |
–list | 列出归档文件的内容 |
–help | 显示帮助信息 |