茫茫人海千千万万,感谢这一秒你看到这里。希望我的文章对你的有所帮助!
愿你在未来的日子,保持热爱,奔赴山海!
1. Linux的用户管理
- Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统
- Linux的用户需要至少要属于一个组。
- root 是超级管理员用户。
1.1 添加用户
命令:
useradd [选项] 用户名:创建一个用户
password 用户名:给用户名指定密码
参数详情介绍:
具体演示:
1.2 删除用户
命令:
userdel [选项] 用户名:删除一个用户
参数详情介绍:
具体演示:
1.3 查询用户信息
命令:
id 用户名:查询用户信息
具体演示:
1.4 切换用户
在操作 Linux中,如果当前用户的权限不够,可以通过su-指令,切换到高权限用户,比如root。
命令:
su - 用户名:切换用户
具体演示:
注意:
- 从权限高的用户切换到权限低的用户,不需要输入密码,反之需要。
- 当需要返回到原来用户时,使用exit指令
1.5 对组操作
命令:
groupadd 用户组 :增加组
groupadd 用户组 :删除组
useradd -g 用户组 用户名 :增加用户时加组
usermod -g 用户组 用户名 : 修改用户的组
具体演示:
2. Linux的文件权限
在Linux中的每个用户必须属于一个组,不能独立于组外。
在 Linux中每个文件有所有者、所在组、其它组的概念。
- 所有者 :资源拥有者,又叫属主, 使用u表示给拥有者设置权限
- 所在组 :拥有者所在的组,又叫属组,使用g表示, 通过g给组员设置权限
- 其它组 : 其他组其他人,其他用户,使用o标识, 通过o给其他人人员设置权限
- 使用a表示所有人(包含了上面用户的3大类)
设置权限就是给这3大类人员设置文件的操作权限。
2.1 查看资源的权限
这里代表root用户hhh目录具备的条件,那下面我们可以看看这些参数代表什么?
参数详解:
第0位确定文件类型(d,-,1,c,b),然后接下来几位数字代表着每一类用户都有3个权限。
第1-3位确定所有者(该文件的所有者)拥有该文件的权限。-User
第4-6位确定所属组(同用户组的)拥有该文件的权限,-Group
第7-9位确定其他用户拥有该文件的权限--Other
其中参数rwx:
- r:读取权限, 只读 --> 可以使用4代表
- w: 写入权限 , 可以编辑文件 --> 可以使用2代表
- x: 执行权限, 由于某些文件是可以执行的,如有有执行权限才可以执行 --> 可以使用1代表
2.2 添加权限语法
命令:
chmod 用户或组+权限 目录或文件 :对指定的文件或目录,给用户或组赋予权限。多种类型的用户之间使用逗号分隔
chmod g+w hhh 2.3 删除权限语法
chmod 用户或组-权限 目录或文件 :对指定的文件或目录,给用户或组删除权限。多种类型的用户之间使用逗号分隔
chmod g-w hhh 2.4 修改权限语法
chmod 用户或组=权限 目录或文件 :对指定的文件或目录,给用户或组修改权限。多种类型的用户之间使用逗号分隔
chmod g=rw hhh 2.5 实现演示
使用数字权限设置:
3. Linux的进程管理
- 在 Linux中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个ID号
- 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如www服务器
- 每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行
- 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束
3.1 查看进程ps(process)
命令:
ps
ps -aux : 一般使用这个。
文件可以1个或多个。
参数详情:
- a :显示当前用户通过终端启动的进程
- u:显示当前用户通过终端启动的进程的详细信息
- x:显示所有用户的所有的进程
查看进程:
进程信息的参数详解:
列标题说明%CPU | CPU(处理器)使用百分比 | %MEM | 真实内存使用百分比 | COMAND | 正被执行的命令的名称 | COMMAND | 正被执行的命令的完整名称 | PID | 进程ID | PPID | 父进程的进程ID | RSS | 内存驻留空间大小(内存管理) | START | 定时启动的时间 | STAT | 状态代码(O,R,S,T,Z) | TIME | 积累CPU时间 | TTY | 控制终端的完整名称(?表示没有控制终端,该进程为守护进程) | USER | 用户名 | VSZ | 虚拟大小(单位为KB) | 3.2 查看内存耗用
动态监控进程。
top与ps命令很相似。它们都用来显示正在执行的进程。
top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的的进程。
命令
top:查看系统内存整体耗用, 系统负载,使用q退出。
3.3 杀死进程
若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程使用kill命令来完成此项任务。
命令
kill [选项] 进程号:通过进程号杀死进程。
参数:
用处:比如踢掉某个非法登录用户,或者强行关闭某个终端
4. Linux的筛选过滤
4.1 grep
grep可以是一种强大的文本搜索工具(文件内容过滤器),它能使用字符串搜索文本,并把匹配的行和行号打印出来。
也可以与管道符|一起做过滤筛选
参数介绍:
- n:搜索指定文件中字符串内容
- v:显示不匹配的行
- i:忽略大小写进行搜索
演示搜索:
4.2 管道符|
管道符一般与grep命令一起使用作为过滤筛选功能。
演示管道与grep搭配:
5. Linux的crontab定时任务
任务调度:是指系统在某个时间执行的特定的命令或程序。
任务调度分类:
1. 系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等
2. 个别用户工作:个别用户可能希望执行某些程序,比如对 mysql数据库的备份 crontab进行定时任务的设置。
命令参数:
- l:显示当前用户所有的定时任务机
- e:使用vim编辑当前用户的定时任务,一行一个定时任务
- r:删除当前用户的定时任务
演示:
5.1 配置定时任务
格式:分 时 日 月 周 命令
crontab定时命令只能最快按照分钟去执行,不能安装毫秒执行,如果需要按照毫秒执行可以使用java
含义:按照指定的时间执行命令, 就是定时任务
- minute:表示分钟,从0-59的任何整数
- hour:表示小时,从0-23的任何整数
- day:表示日,从1-31的任何整数
- month:表示月,从0112的任何整数
- week:表示周,从0-7的任何整数,0或者7代表星期日,1-6代表周一到周六
- command:表示要执行的命令
特殊字符介绍:
星号 :代表所有可能的值。
逗号,:用逗号隔开的值指定某个时间点
短横- :表示一个整数范围
正斜杠/ :表示指定时间的间隔频率
eg:
* * command --> 每1分钟执行
30 21 * command --> 每天的21点30分执行
3,15 * command --> 每小时的第3和第15分钟执行
6,12 3-4 * command --> 每天上午3点到4点的第6和第12分钟执行
/3 * * command --> 每隔三分钟执行 输出系统当前时间命令:
date 案例:每分钟打印系统当前时间输出到/root/mydate.log文件中
实现步骤:
6. Linux的服务管理
服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql,shd防火墙等)。
6.1 服务管理
命令:
sysytemctl 【选项】 服务名
参数详情介绍:
- start:启动服务。
- stop:停止服务。
- status:查看服务的状态。
- restart:重启服务。
- reload:不停止定时器,重新加载新的配置文件,使其生效。
6.2 服务自启动
命令相关:
- systemctI list-units service :查看服务运行状态
- systemcti list-unit-files --type=service :查询所有服务是的开机状态
- systemctl enable 服务名:设置某个服务开机自启动
- systemctl disable 服务名:设置某个服务器开机不自动启动。
- systemctI is-enabled 服务名:查询指定服务器开机启动状态
- systemctl list-unit-files 服务名.service:查询指定服务器开机启动状态
注意:
服务默认状态分类:
- enable : 开启自启动
- disable: 手动启动
- daemon的默认状态除了enable和disable之外,还有其他类型:
- static:这个服务不可以自己启动,但是可能被其他的enable类型的服务唤醒(相依属性的服务)。
- mask:这个服务无论如何都不会被启动!因为已经被强制注销(非删除),可通过systemctl unmask方式改回原本状态。
服务当前状态分类
- active (running):表示正有一个或多个程序正在系统中执行。
- active (exited):表示仅执行一次就正常结束的服务。
- active (waiting):表示正在执行当中,不过还在等待其他的事情才能继续处理。
- inactive:表示这个服务目前没有运行。
6.3 演示效果
7. Linux的网络管理
7.1 网络管理——主机名管理
命令:
hostname:查看计算机的名字
hostnamectl set-hostname 名字:永久修改计算机名字,需要重启或使用bash刷新
演示:
7.2 网络管理——网络服务管理
命令相关:
- systemctI start network:启动网络服务
- systemctl stop network :停止网络服务
- systemctl restart network:重新启动网络服务
- systemctl status network:查看网络服务的状态
客户端操作:
虚拟机服务器操作:
再回到客户端操作:
7.3 网络管理——网卡激活与关闭管理
通过之前的学习,我们也了解了如何查看网卡列表
ifconfig 需要知道:所有linux系统的网卡都有对应的配置文件:/etc/sysconfig/network-scripts/目录下。
7.3.1 那如何关闭网卡呢?
7.3.2 重新激活网卡
- 去虚拟机里面修改配置文件ifcfg-ens33,开启网卡
ONBOOT=yes
7.4 网络管理——配置静态ip
我们知道虚拟机的linux默认采用dhcp动态生成获取ip,这个ip不稳定偶尔会发生改变的。以后作为服务器的linux系统是对外提供服务的,所以ip不能变化的应该是固定的,那么怎么实现呢?
7.4.1 ip配置的类型
dhcp, ip是动态分配生成的,适合个人电脑
==static, ip是静态不变的,适合服务器,ip不能变==
以后服务器是对外提供服务的,ip不可以变化,否则客户段找不到服务器
7.4.2 查询vmnet8网卡nat模式的网关信息
7.4.3 配置静态ip
修改linux的网卡配置文件ifcfg-ens33,里面设置静态ip
- 进入配置文件目录
cd /etc/sysconfig/network-scripts/
- 编辑配置文件
vim ifcfg-ens33
- 修改以下内容并保存
增加、修改的内容详情:
修改ip的生成类型, 将原来的值dhcp修改为static
BOOTPROTO=static
- IPADDR 配置ip地址
- GATEWAY配置网关
- NETMASK 配置子网掩码
- DNS1配置首选DNS
- DNS2配置备选DNS
IPADDR=192.168.66.128
GATEWAY=192.168.66.2
NETMASK=255.255.255.0
DNS1=223.5.5.5
DNS2=114.114.114.114
- 重启网络服务
systemctl restart network
7.5 网络管理——虚拟机快照
虚拟机由于其不稳定型,虚拟机经常通过某些配置或安装软件后导致系统不可用,一般我们的做法是重装虚拟机linux系统解决,那么这样操作很浪费时间,有没有什么好办法不用重装系统呢?
在系统可用(没有问题)的时候进行设置系统快照,在系统不可用的时候恢复快照就可以!
7.5.1 快照介绍
虚拟机“快照”是虚拟机磁盘文件在某个时间点及时的复本备份。系统崩溃或系统异常,你可以通过使用恢复到快照指定时间点系统状态。当升级应用和服务器及给它们打补丁的时候,快照是救世主。VMware 快照是VMwareWorkstation 里的一个特色功能。
7.5.2 实现步骤
- 生成快照
点击如图菜单,进行管理快照
- 新建快照,生成当前操作系统磁盘文件的复本(相当于备份一个系统)
- 当系统不可用时,通过恢复指定快照进行恢复系统使用
7.6 网络管理——克隆虚拟电脑
企业开发中经常需要准备多台一模一样的虚拟机电脑linux系统环境,那么如何根据当前的虚拟电脑快速搭建多台一样的虚拟电脑呢?
虚拟机克隆,可以克隆出多台一模一样的虚拟电脑
实现步骤:
- 关闭当前虚拟机linux系统
- 选中点击当前linux系统虚拟电脑,再鼠标右键如图操作
注意:必须先关闭,才能克隆,然后选择完整克隆。 - 修改克隆出来的静态ip
需要将克隆出来的电脑修改静态ip为192.168.66.129, 要与原本的虚拟机的ip不一样才可以。
- 修改计算机的名字
使用bash刷新。
7.7 网络管理——查询网络进程使用端口号
在企业开发中经常要查询软件使用的端口号,那么如何查询linux系统某一个运行软件使用的端口?
命令:
netstat:可以查看出系统网络的情况
参数详情:
无参显示网络状态
-nnumber显示程序的IP地址和端口号
-ttcp只显示TCP协议连接的程序,-u显示udp协议的程序
-llistenter显示监听中的Socket
-pprograms显示程序的名字演示:
netstat -nutlp #查看端口、udp、tcp、正在监听、显示程序名的所有程序
常见命令:
- netstat -ntlp : 只查tcp协议
- netstat -nulp : 只查udp协议
- netstat -nutlp :只查udp与tcp协议
8. Linux的防火墙管理
防火墙是防止外界访问系统内部的程序,防火墙设置指定服务的通信权限,如果允许服务外网访问需要进行防火墙配置。
linux系统安装的任何软件默认都不可以访问外网,必须经过防火墙的放行才可以。
命令详情:
- systemctl status firewalld:查看防火墙的状态
- systemctI start firewalld:开启防火墙
- systemctl stop firewalld:关闭防火墙
- systemctl enable firewalld:让防火墙在开机的时候自启
- systemctl disable firewalld:让防火墙在开机的时候不要自启
8.1 作用1:开放端口允许外部连接
外网或内网需要连接到当前系统内的程序进行操作,需要 linux 系统防火墙开放程序端口,否则无法访问。
命令:
firewall-cmd --zone =public --add-port =端口/tcp --permanent
参数介绍:
- firewall-cmd :配置防火墙命令
- zone=public:设置管理的区域,public这是默认区域
- --add-port=端口/tcp:开放指定端口
- --permanent:持久性规则类型,永久性规则,代表持久化到访问墙配置文件中存储(但是需要重启服务器才可以加载到内存运行时才有效果)
eg:假如开放 mysql 软件的端口 3306,允许外界访问,因为开了端口号,windows才能对虚拟机的mysql进行访问。
# 开放3306端口
firewall-cmd --zone =public --add-port =3306/tcp --permanent
修改了防火墙配置需要重启防火墙服务
Systemctl restart firewalld 8.2 作用2:移出端口不允许外部连接
外网或内网不需要连接到当前系统内的程序进行操作,则 linux 系统关闭开放的程序端口。
命令:
firewall-cmd --zone =public --remove-port =端口/tcp --permanent:
参数介绍:
- firewall-cmd :配置防火墙命令
- zone=public:设置管理的区域,public这是默认区域
- --remove-port=端口/tcp:关闭指定端口
- --permanent:持久性规则类型,永久性规则,代表持久化到访问墙配置文件中存储(但是需要重启服务器才可以加载到内存运行时才有效果)
eg:移除开放 mysql 软件的端口 3306,不允许外界访问
firewall-cmd --zone =public --remove-port =3306/tcp --permanent
Systemctl restart firewalld 注意:如果外界还想访问mysql的话,也可以直接关闭防火墙即可。
systemctl stop firewalld
9. Linux的SSH有密登录和免密登录
SSH 是一种网络协议,是 Secure Shell(安全外壳协议)的缩写,用于计算机之间的加密登录。
SSH 登录有两种验证机制:
- 基于口令的安全验证(有密登录)
- 基于秘钥登录的验证方式(免密登录)
9.1 登录远程服务器
命令:
ssh ip地址
演示:
有密登录效果
免密登录效果:要想实现免密,需要实现下面的步骤。
9.2 对称加密和非对称加密
ssh的主要就是安全性,安全性依赖于加密方式,现在主要的加密方式有两种:对称加密和非对称加密。
- 对称加密
对称加密使用同一个密钥来进行加密和解密,这样在传输时是安全可靠的,但是如何安全的保存密钥呢,在集群中,客户端的数量巨大,一旦任意一个客户端的密钥被窃取,那么整个系统的安全性也不复存在。 - 非对称加密
由于对称加密的这个弊端,产生了非对称加密,非对称加密中有两个密钥:公钥和私钥。公钥由私钥产生,但却无法推算出私钥;公钥加密后的密文,只能通过对应的私钥来解密。
非对称加密的登录流程:
在非对称加密中,由于只有公钥会被传输,而私钥是服务端本地保存,因此即便公钥被监听,也无法拿到原始密码,从而登录服务器。
9.3 SSH免密登录原理
- 在客户端使用ssh-keygen生成一对密钥:公钥+私钥
- 将客户端公钥追加到服务端的authorized_key文件中,完成公钥认证操作
- 认证完成后,客户端向服务端发起登录请求,并传递公钥到服务端
- 服务端检索authorized_key文件,确认该公钥是否存在
- 如果存在该公钥,则生成随机数R,并用公钥来进行加密,生成公钥加密字符串pubKey(R)
- 将公钥加密字符串传递给客户端
- 客户端使用私钥解密公钥加密字符串,得到R
- 服务端和客户端通信时会产生一个会话ID(sessionKey),用MD5对R和SessionKey进行加密,生成摘要(即MD5加密字符串)
- 客户端将生成的MD5加密字符串传给服务端
- 服务端同样生成MD5(R,SessionKey)加密字符串
- 如果客户端传来的加密字符串等于服务端自身生成的加密字符串,则认证成功
- 此时不用输入密码,即完成建连,可以开始远程执行shell命令了
9.4 实现免密登录
其他位置都是linux系统自动完成校验
演示过程:
10. Linux的项目部署安装软件
这里的项目部署软件暂时是我们常用的jdk和mysql,其他那些可以网上搜索。
10.1 项目部署——软件安装命令rpm与yum
linux常用安装软件方式
- rpm安装, 适合本地安装
- yum安装, 适合在线网络下载安装
1. rpm
一种用于互联网下载包的打包及安装工具,它包含在某些 Linux分发版中。它生成具有RPM扩展名的文件。
RedHat Package Manager(RPM), 擅长安装软件
作用:
命令:
- rpm -qa :查询所有已安装软件
- rpm -ivh 软件包 :安装指定的软件包
- rpm -e --nodep 软件包 :不验证软件依赖相关性卸载指定软件包
- rpm -ivhU --nodeps --force :不验证依赖与相关、强制安装软件包,或将已存在的更新升级
代表安装当前目录下所有的rpm软件包
参数详情:
[tr]-v显示安装的详细过程。[/tr]-q<软件名> | query查询某个软件是否安装 | -a | 查询所有软件 | -h | 列出软件安装时的标记 | -i<软件名> | install安装指定的软件 | -e | 卸载软件 | --nodeps | 不验证软件相关关联性 | -- force | 强制操作 | -U | 如果软件已存在会覆盖更新 | 2. yum
本地或在线下载安装命令:yum(全称为 Yellow dog Updater Modified)
作用:用于自动从服务器上下载相应的软件包,自动安装,并且自动下载它的依赖包。
使用yum的前提是可以联网。
命令:
yun -y install 软件名 :安装软件
yun -y remove 软件名 :删除软件
注意:使用yum安装的软件,就要使用yum卸载软件
3. rpm与yum的区别
[tr]方式区别[/tr]yum在线下载安装方式 | 不仅下载当前软件包还会自动下载依赖的软件包安装;yum底层使用的是rpm,对rpm进行了进一步包装与优化 | rpm在线下载安装方式 | 仅仅下载当前指定的软件包,对于依赖不会下载,所以在线下载rpm是麻烦的 | 10.2 项目部署——jdk安装
要在虚拟机中执行java代码,那就需要跟windows一样安装jdk啦
安装软件:
链接:https://pan.baidu.com/s/1vP6KAmj3bmn5uzEgU7p4EA
提取码:xwne
安装步骤:
10.3 项目部署——mysql安装-启动-远程授权
1. 安装步骤:
2. mysql虚拟机内登录使用
3. mysql远程登录使用
- 开启mysql的远程登录权限,默认情况下mysql为安全起见,不支持远程登录mysql,所以需要设置开启,并且刷新权限缓存。
远程登录mysql的权限登录mysql后输入如下命令
grant all privileges on . to 'root'@'%' identified by 'root';
flush privileges;
- 开放Linux的对外访问的端口3306
注意:不可以在mysql里面操作防火墙开放端口,必须在系统内操作
#开放的端口永久保存到防火墙
firewall-cmd --zone=public --add-port=3306/tcp --permanent
重启防火墙
systemctl restart firewalld
或者是把防火墙给关了即可
systemctl stop firewalld
- windows主机mysql客户端就可以连接啦!
10.4 项目部署——tomcat安装及启动
1. 安装步骤
- 解压安装文件到/usr/local目录下,跟之前一样需要先上传tomcat
cd /soft
tar -xvf apache-tomcat-8.5.27.tar.gz -C /usr/local/
- 进入/usr/local/apache-tomcat-8.5.27/bin目录下,并启动tomcat服务器
cd /usr/local/apache-tomcat-8.5.27/bin
./startup.sh
- 需要开放linux系统防火墙8080端口
因为我们这时候去访问是无效的,跟之前MySQL访问一个问题。
firewall-cmd --zone=public --add-port=8080/tcp --permanent
systemctl restart firewalld
- windows客户端使用浏览器访问linux的8080端口tomcat
- 让我们试下创建html界面访问吧:
cd ..
cd webapps/ROOT/
vim fish.html
最后我们通过网页访问看看:
- 进入bin目录下,关闭服务器。关闭服务器以后,浏览器不能再访问
./shutdown.sh
11. 完结撒花
让我们总结下今天到底学了什么:
用户管理:
添加用户:
useradd [选项] 用户名:创建一个用户
password 用户名:给用户名指定密码
删除用户:userdel [选项] 用户名
查询用户:id 用户名
切换用户: su - 用户名
用户组:
groupadd 用户组 :增加组
groupadd 用户组 :删除组
useradd -g 用户组 用户名:增加用户时加组
usermod -g 用户组 用户名 : 修改用户的组
文件权限:
chmod g+w hhh:添加权限
chmod g-w hhh:删除权限
chmod g=rw hhh:修改权限
进程管理:
查看进程:ps -aux
查看内存:top
杀死进程:kill [选项] 进程号
筛选过滤:
grep 和 | :ps -aux | grep sshd
定时任务:
6,12 3-4 * command --> 每天上午3点到4点的第6和第12分钟执行
服务管理:
sysytemctl 【选项】 服务名
网络管理:
hostname:查看计算机的名字
netstat:可以查看出系统网络的情况
防火墙管理:
systemctl status firewalld:查看防火墙的状态
firewall-cmd --zone =public --add-port =端口/tcp --permanent:开放某个端口 相信各位看官都对Linux的一些高级命令有了一定了解,在实际应用中,企业都会在Linux中部署项目做为生产环境!所以Linux的学习也是必不可少滴!
学到这里,今天的世界打烊了,晚安!虽然这篇文章完结了,但是我还在,永不完结。我会努力保持写文章。来日方长,何惧车遥马慢!
感谢各位看到这里!愿你韶华不负,青春无悔!
注: 如果文章有任何错误和建议,请各位大佬尽情留言!如果这篇文章对你也有所帮助,希望可爱亲切的您给个三连关注下,非常感谢啦!也可以微信搜索太子爷哪吒公众号私聊我,感谢各位大佬!
|