文章目录
SHell
Shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质。
认知root用户
- Linux系统的超级管理员用户是:root用户
su命令
-
可以切换用户,语法:
su [-] [用户名]
-
-表示切换后加载环境变量,建议带上
-
用户可以省略,省略默认切换到root
sudo命令
- 可以让一条普通命令带有root权限,语法:
sudo 其他命令
- 需要以root用户执行visudo命令,增加配置方可让普通用户有sudo命令的执行权限
用户、用户组管理
-
Linux用户管理模式
- Linux可以支持多用户、多用户组、用户加入多个组
- Linux权限管控的单元是用户级别和用户组级别
-
用户、用户组相关管理命令
以下命令需root用户执行
-
创建用户组
groupadd 用户组名
-
删除用户组
groupdel 用户组名
-
创建用户
useradd [-g -d] 用户名
- 选项:-g指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要组已经存在,如已存在同名组,必须使用-g
- 选项:-d指定用户HOME路径,不指定,HOME目录默认在:/home/用户名
-
删除用户
userdel [-r] 用户名
- 选项:-r,删除用户的HOME目录,不使用-r,删除用户时,HOME目录保留
-
查看用户所属组
id [用户名]
- 参数:用户名,被查看的用户,如果不提供则查看自身
- 修改用户所属组
-
修改用户组
usermod -aG 用户组 用户名
- 将指定用户加入指定用户组
-
getent passwd
共有7份信息,分别是:
用户名:密码(x):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)
-
getent group
包含3份信息,组名称:组认证(显示为x):组ID
查看权限控制
- ls -l 列出的权限信息如何解读
- 序号1,表示文件、文件夹的权限控制信息
- 序号2,表示文件、文件夹所属用户
- 序号3,表示文件、文件夹所属用户组
- -:文件 d:文件夹 l:软连接
- 权限细节如何解读
- rwx分别代表什么
-
r,针对文件可以查看文件内容
针对文件夹,可以查看文件夹内容,如ls命令
-
w,针对文件表示可以修改此文件
针对文件夹,可以在文件夹内:创建、删除、改名等操作
-
x,针对文件表示可以将文件作为程序执行(excecute)
针对文件夹,表示可以更改工作目录到此文件夹,即cd进入
chmod命令
-
功能,修改文件、文件夹的权限细节
-
限制,只能是文件、文件夹的所属用户或root有权修改
-
语法:
chmod [-R] 权限 文件或文件夹
-
选项:-R,对文件夹内的全部内容应用同样规则
权限的数字序号
-
r代表4,w代表2,x代表1
-
rwx的相互组合可以得到从0到7的8种权限组合
-
如7代表:rwx,5代表:r-x,1代表:–x
chown
普通用户无法修改所属为其它用户或组,所以此命令只适用于root用户执行
-
功能,修改文件、文件夹的所属用户、组
-
限制,只可root执行
-
语法:
chown [-R] [用户] [:] [用户组] 文件或文件夹
-
选项,-R,同chmod,对文件夹内全部内容应用相同规则
-
选项,用户,修改所属用户
-
选项,用户组,修改所属用户组
-
:用于分隔用户和用户组
各类小技巧(快捷键)
ctrl + c 强制停止
ctrl + d 退出登出
history 查看历史命令
!命令前缀,自动匹配上一个命令
ctrl + r,搜索历史命令
ctrl + a | e,光标移动到命令开始或结束
ctrl + ← | →,左右跳单词
ctrl + l 或 clear命令 清屏
软件安装
- 在CentOS系统中,使用yum命令联网管理软件安装
yum语法:yum [-y] [install | remove | search ] 软件名称
- 在Ubuntu系统中,使用apt命令联网管理软件安装
apt语法:apt [-y] [install | remove |search ] 软件名称
CentOS: .rpm ,yum
Ubuntu: .deb ,apt
Win: exe、msi
Mac: dmg, pkg
systemctl
- systemctl命令的作用是?
可以控制软件(服务)的启动、关闭、开机自启动
-
系统内置服务均可被systemctl控制
-
第三方软件,如果自动注册了可以被systemctl控制
-
第三方软件,如果没有自动注册,可以手动注册(后续学习)
-
语法
systemctl start | stop | status | enable | disable 服务名
-
start 启动
-
stop 关闭
-
status 查看状态
-
enable 开启开机自启
-
disable 关闭开机自启
系统内置的服务比较多,比如:
-
NetworkManager,主网络服务
-
network,副网络服务
-
firewalld,防火墙服务
-
sshd,ssh服务(FinalShell远程登录Linux使用的就是这个服务)
软连接
- 什么是软连接?
可以将文件、文件夹链接到其它位置
链接只是一个指向,并不是物理移动,类似Windows系统的快捷方式
- 软连接的使用语法
语法:ln -s 参数1 参数2
- -s选项,创建软连接
-
参数1:被链接的文件或文件夹
-
参数2:要链接去的目的地
日期和时区
- 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 到现在的秒数
- 如何修改Linux时区
rm -f /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
- ntp的作用
可以自动联网同步时间,也可以通过ntpdate -u ntp.aliyun.com
手动校准时间
IP地址和主机名
- 什么是IP地址,有什么作用?
IP地址是联网计算机的网络地址,用于在网络中进行定位
格式是:a.b.c.d,其中abcd是0~255的数字
特殊IP有:127.0.0.1,本地回环IP,表示本机。
0.0.0.0:也可表示本机,也可以在一些白名单中表示任意IP
- 什么是主机名?
主机名就是主机的名称,用于标识一个计算机
- 什么是域名解析(主机名映射)
可以通过主机名找到对应计算机的IP地址,这就是主机名映射(域名解析)
先通过系统本地的记录去查找,如果找不到就联网去公开DNS服务器去查找
- 可以使用命令:hostname查看主机名
-
可以使用命令:hostnamectl set-hostname 主机名,修改主机名(需root)
-
重新登录FinalShell即可看到主机名已经正确显示
配置Linux固定IP地址
当前我们虚拟机的Linux操作系统,其IP地址是通过DHCP服务获取的。
DHCP:动态获取IP地址,即每次重启设备后都会获取一次,可能导致IP地址频繁变更
-
在VMware Workstation(或Fusion)中配置IP地址网关和网段(IP地址的范围)
-
在Linux系统中手动修改配置文件,固定IP
- 使用vim编辑/etc/sysconfig/network-scripts/ifcfg-ens33文件,填入如下内容
- 执行:systemctl restart network 重启网卡,执行ifconfig即可看到ip地址固定为192.168.88.130了
网络传输:下载和网络请求
- 使用ping命令可以测试到某服务器是否可联通
语法:ping [-c num] ip或主机名
选项:-c,测试的次数
- 使用wget命令可以进行网络文件下载
语法:wget [-b] url
选项:-b,后台下载
- 使用curl命令可以发起网络请求
语法:curl [-O] url
选项:-O,用于下载使用
网络传输:端口
本机:127.0.0.1
0.0.0.0
- 什么是端口?
端口是指计算机和外部交互的出入口,可以分为物理端口和虚拟端口
-
物理端口:USB、HDMI、DP、VGA、RJ45等
-
虚拟端口:操作系统和外部交互的出入口
IP只能确定计算机,通过端口才能锁定要交互的程序
- 端口的划分
-
公认端口:1~1023,用于系统内置或常用知名软件绑定使用
-
注册端口:1024~49151,用于松散绑定使用(用户自定义)
-
动态端口:49152~65535,用于临时使用(多用于出口)
- 22端口,一般是SSH服务使用,即FinalShell远程连接Linux所使用的端口
- 查看端口占用
-
nmap IP地址,查看指定IP的对外暴露端口
-
netstat -anp | grep 端口号,查看本机指定端口号的占用情况
进程管理
从左到右分别是:
-
UID:进程所属的用户ID
-
PID:进程的进程号ID
-
PPID:进程的父ID(启动此进程的其它进程)
-
C:此进程的CPU占用率(百分比)
-
STIME:进程的启动时间
-
TTY:启动此进程的终端序号,如显示?,表示非终端启动
-
TIME:进程占用CPU的时间
-
CMD:进程对应的名称或启动路径或启动命令
- 什么是进程?
进程是指程序在操作系统内运行后被注册为系统内的一个进程,并拥有独立的进程ID(进程号)
- 管理进程的命令
-
ps [-e -f]
查看进程信息-
选项:-e,显示出全部的进程
选项:-f,以完全格式化的形式展示信息(展示全部信息)
-
-
ps -ef | grep 关键字
过滤指定关键字进程信息 -
kill [-9] 进程号ID
关闭指定进程号的进程- 选项:-9,表示强制关闭进程。
主机状态
yum install sysstat iostat
-
使用top命令可以:
-
第一行:
top:命令名称,14:39:58:当前系统时间,up 6 min:启动了6分钟,2 users:2个用户登录,load:1、5、15分钟负载
-
第二行:
Tasks:175个进程,1 running:1个进程子在运行,174 sleeping:174个进程睡眠,0个停止进程,0个僵尸进程
-
第三行:
%Cpu(s):CPU使用率,us:用户CPU使用率,sy:系统CPU使用率,ni:高优先级进程占用CPU时间百分比,id:空闲CPU率,wa:IO等待CPU占用率,hi:CPU硬件中断率,si:CPU软件中断率,st:强制等待占用CPU率
-
第四、五行:
Kib Mem:物理内存,total:总量,free:空闲,used:使用,buff/cache:buff和cache占用
KibSwap:虚拟内存(交换空间),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:进程的命令或名称或程序文件路径
当top以交互式运行(非-b选项启动),可以用以下交互式命令进行控制
-
类似Windows任务管理器
-
查看CPU、内存、进程的信息
-
使用df命令可以:
语法:
df [-h]
选项:-h,以更加人性化的单位显示
•查看磁盘使用率
- 使用iostat可以:
- 查看磁盘速率等信息
语法:iostat [-x] [num1] [num2]
-
选项:-x,显示更多信息
-
num1:数字,刷新间隔,num2:数字,刷新几次
使用iostat的-x选项,可以显示更多信息
rrqm/s: 每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge, 提高IO利用率, 避免重复调用);
wrqm/s: 每秒这个设备相关的写入请求有多少被Merge了。
rsec/s: 每秒读取的扇区数;sectors
wsec/: 每秒写入的扇区数。
rKB/s: 每秒发送到设备的读取请求数
wKB/s: 每秒发送到设备的写入请求数
avgrq-sz 平均请求扇区的大小
avgqu-sz 平均请求队列的长度。毫无疑问,队列长度越短越好。
await: 每一个IO请求的处理的平均时间(单位是微秒毫秒)。
svctm 表示平均每次设备I/O操作的服务时间(以毫秒为单位)
%util: 磁盘利用率
- 使用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 每秒钟接收的多播数据包
环境变量
- 什么是环境变量?
环境变量是一组信息记录,类型是KeyValue型(名称=值),用于操作系统运行的时候记录关键信息
-
通过env命令可以查看当前系统配置的环境变量信息
-
通过$符号,可以取出环境变量的值
-
什么是PATH,作用是?
环境变量PATH会记录一组目录,目录之间用:隔开。这里记录的是命令的搜索路径,当执行命令会从记录中记录的目录中挨个搜索要执行的命令并执行。
可以通过修改这个项目的值,加入自定义的命令搜索路径
如export PATH=$PATH:自定义路径
- 如何修改环境变量?
-
临时生效:
export 名称=值
-
永久生效:
-
针对用户:
~/.bashrc文件中配置
-
针对全部用户:
/etc/profile文件中配置
-
配置完成,可以通过
source
命令立刻生效
echo $PATH
echo ${PATH}ABC
上传、下载
注意,rz、sz命令需要终端软件支持才可正常运行
FinalShell、SecureCRT、XShell等常用终端软件均支持此操作
- rz、sz命令
-
通过 yum -y install lrzsz可以安装此命令
-
rz进行文件上传
-
sz 文件,进行文件下载
压缩、解压
- Linux系统常用的压缩格式有:
-
tar格式,归档文件,简单的将文件整合到一个文件内,无压缩效果
-
gzip格式,gzip压缩文件,不仅能整合到一个文件,同时有体积压缩效果
- tar命令
tar [-c -v -x -f -z -C] 参数...
-
-c,创建压缩文件,用于压缩模式
-
-v,显示压缩、解压过程,用于查看进度
-
-x,解压模式
-
-f,要创建的文件,或要解压的文件,-f选项必须在所有选项中位置处于最后一个
-
-z,gzip模式,不使用-z就是普通的tarball格式
-
-C,选择解压的目的地,用于解压模式
tar的常用组合为:
- tar -cvf test.tar 1.txt 2.txt 3.txt
将1.txt 2.txt 3.txt 压缩到test.tar文件内
- tar -zcvf test.tar.gz 1.txt 2.txt 3.txt
将1.txt 2.txt 3.txt 压缩到test.tar.gz文件内,使用gzip模式
注意:
-z选项如果使用的话,一般处于选项位第一个
-f选项,必须在选项位最后一个
常用的tar解压组合有
- tar -xvf test.tar
解压test.tar,将文件解压至当前目录
- tar -xvf test.tar -C /home/itheima
解压test.tar,将文件解压至指定目录(/home/itheima)
- tar -zxvf test.tar.gz -C /home/itheima
以Gzip模式解压test.tar.gz,将文件解压至指定目录(/home/itheima)
注意:
-f选项,必须在选项组合体的最后一位
-z选项,建议在开头位置
-C选项单独使用,和解压所需的其它参数分开
- zip命令
zip [-r] 参数...
- -r,被压缩的包含文件夹的时候,需要使用-r选项,和rm、cp等命令的-r效果一致
示例:
- zip test.zip a.txt b.txt c.txt
将a.txt b.txt c.txt 压缩到test.zip文件内
- zip -r test.zip test itheima a.txt
将test、itheima两个文件夹和a.txt文件,压缩到test.zip文件内
- unzip命令
unzip [-d] 参数
-
-d,指定要解压去的位置,同tar的-C选项
-
参数,被解压的zip压缩包文件
示例:
unzip test.zip,将test.zip解压到当前目录
unzip test.zip -d /home/itheima,将test.zip解压到指定文件夹内(/home/itheima)
解压test.tar,将文件解压至指定目录(/home/itheima)
- tar -zxvf test.tar.gz -C /home/itheima
以Gzip模式解压test.tar.gz,将文件解压至指定目录(/home/itheima)
注意:
-f选项,必须在选项组合体的最后一位
-z选项,建议在开头位置
-C选项单独使用,和解压所需的其它参数分开
- zip命令
zip [-r] 参数...
- -r,被压缩的包含文件夹的时候,需要使用-r选项,和rm、cp等命令的-r效果一致
示例:
- zip test.zip a.txt b.txt c.txt
将a.txt b.txt c.txt 压缩到test.zip文件内
- zip -r test.zip test itheima a.txt
将test、itheima两个文件夹和a.txt文件,压缩到test.zip文件内
- unzip命令
unzip [-d] 参数
-
-d,指定要解压去的位置,同tar的-C选项
-
参数,被解压的zip压缩包文件
示例:
unzip test.zip,将test.zip解压到当前目录
unzip test.zip -d /home/itheima,将test.zip解压到指定文件夹内(/home/itheima)