茫茫人海千千万万,感谢这一秒你看到这里。希望我的文章对你的有所帮助!
愿你在未来的日子,保持热爱,奔赴山海!
命令:
useradd [选项] 用户名
:创建一个用户
password 用户名
:给用户名指定密码
参数详情介绍:
具体演示:
命令:
userdel [选项] 用户名
:删除一个用户
参数详情介绍:
具体演示:
命令:
id 用户名
:查询用户信息
具体演示:
在操作 Linux中,如果当前用户的权限不够,可以通过su-指令,切换到高权限用户,比如root。
命令:
su - 用户名
:切换用户
具体演示:
注意:
命令:
groupadd 用户组
:增加组
groupadd 用户组
:删除组
useradd -g 用户组 用户名
:增加用户时加组
usermod -g 用户组 用户名
: 修改用户的组
具体演示:
在Linux中的每个用户必须属于一个组,不能独立于组外。
在 Linux中每个文件有所有者、所在组、其它组的概念。
设置权限就是给这3大类人员设置文件的操作权限。
这里代表root用户hhh目录具备的条件,那下面我们可以看看这些参数代表什么?
参数详解:
第0位确定文件类型(d,-,1,c,b),然后接下来几位数字代表着每一类用户都有3个权限。
第1-3位确定所有者(该文件的所有者)拥有该文件的权限。-User
第4-6位确定所属组(同用户组的)拥有该文件的权限,-Group
第7-9位确定其他用户拥有该文件的权限–Other
其中参数rwx:
命令:
chmod 用户或组+权限 目录或文件
:对指定的文件或目录,给用户或组赋予权限。多种类型的用户之间使用逗号分隔
chmod g+w hhh
chmod 用户或组-权限 目录或文件
:对指定的文件或目录,给用户或组删除权限。多种类型的用户之间使用逗号分隔
chmod g-w hhh
chmod 用户或组=权限 目录或文件
:对指定的文件或目录,给用户或组修改权限。多种类型的用户之间使用逗号分隔
chmod g=rw hhh
使用数字权限设置:
命令:
ps
ps -aux
: 一般使用这个。
文件可以1个或多个。
参数详情:
查看进程:
进程信息的参数详解:
列标题 | 说明 |
---|---|
%CPU | CPU(处理器)使用百分比 |
%MEM | 真实内存使用百分比 |
COMAND | 正被执行的命令的名称 |
COMMAND | 正被执行的命令的完整名称 |
PID | 进程ID |
PPID | 父进程的进程ID |
RSS | 内存驻留空间大小(内存管理) |
START | 定时启动的时间 |
STAT | 状态代码(O,R,S,T,Z) |
TIME | 积累CPU时间 |
TTY | 控制终端的完整名称(?表示没有控制终端,该进程为守护进程) |
USER | 用户名 |
VSZ | 虚拟大小(单位为KB) |
动态监控进程。
top与ps命令很相似。它们都用来显示正在执行的进程。
top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的的进程。
命令
top
:查看系统内存整体耗用, 系统负载,使用q退出。
若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程使用kill命令来完成此项任务。
命令
kill [选项] 进程号
:通过进程号杀死进程。
参数:
用处:比如踢掉某个非法登录用户,或者强行关闭某个终端
grep可以是一种强大的文本搜索工具(文件内容过滤器),它能使用字符串搜索文本,并把匹配的行和行号打印出来。
也可以与管道符|一起做过滤筛选
参数介绍:
演示搜索:
管道符一般与grep命令一起使用作为过滤筛选功能。
演示管道与grep搭配:
任务调度:是指系统在某个时间执行的特定的命令或程序。
任务调度分类:
1. 系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等
2. 个别用户工作:个别用户可能希望执行某些程序,比如对 mysql数据库的备份
crontab进行定时任务的设置。
命令参数:
演示:
格式:分 时 日 月 周 命令
crontab定时命令只能最快按照分钟去执行,不能安装毫秒执行,如果需要按照毫秒执行可以使用java
含义:按照指定的时间执行命令, 就是定时任务
特殊字符介绍:
星号* :代表所有可能的值。
逗号,:用逗号隔开的值指定某个时间点
短横- :表示一个整数范围
正斜杠/ :表示指定时间的间隔频率
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文件中
实现步骤:
使用crontab -e 进入编辑当前用户的定时任务编辑器
编写定时任务命令
>>
代表追加输出
* * * * * date >> /root/mydate.log
>
代表覆盖输出
观察运行,看是否每分钟进行打印.
服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql,shd防火墙等)。
命令:
sysytemctl 【选项】 服务名
参数详情介绍:
命令相关:
注意:
服务默认状态分类:
服务当前状态分类
命令:
hostname
:查看计算机的名字
hostnamectl set-hostname 名字
:永久修改计算机名字,需要重启或使用bash刷新
演示:
命令相关:
客户端操作:
虚拟机服务器操作:
再回到客户端操作:
通过之前的学习,我们也了解了如何查看网卡列表
ifconfig
需要知道:所有linux系统的网卡都有对应的配置文件:/etc/sysconfig/network-scripts/目录下。
找到网卡配置文件ens33
cd /etc/sysconfig/network-scripts/
编辑网卡配置文件
vim ifcfg-ens33
进入配置文件信息,并修改配置ONBOOT,修改为关闭网卡
ONBOOT=no
重启网络服务才可以识别最新的修改
systemctl restart network
然后在虚拟机服务器中测试是否可以联网
去虚拟机里面修改配置文件ifcfg-ens33,开启网卡
ONBOOT=yes
重启网络服务
systemctl restart network
测试网络后,发现正常了。
我们知道虚拟机的linux默认采用dhcp动态生成获取ip,这个ip不稳定偶尔会发生改变的。以后作为服务器的linux系统是对外提供服务的,所以ip不能变化的应该是固定的,那么怎么实现呢?
dhcp, ip是动态分配生成的,适合个人电脑
static, ip是静态不变的,适合服务器,ip不能变
以后服务器是对外提供服务的,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
虚拟机由于其不稳定型,虚拟机经常通过某些配置或安装软件后导致系统不可用,一般我们的做法是重装虚拟机linux系统解决,那么这样操作很浪费时间,有没有什么好办法不用重装系统呢?
在系统可用(没有问题)的时候进行设置系统快照,在系统不可用的时候恢复快照就可以!
虚拟机“快照”是虚拟机磁盘文件在某个时间点及时的复本备份。系统崩溃或系统异常,你可以通过使用恢复到快照指定时间点系统状态。当升级应用和服务器及给它们打补丁的时候,快照是救世主。VMware 快照是VMwareWorkstation 里的一个特色功能。
企业开发中经常需要准备多台一模一样的虚拟机电脑linux系统环境,那么如何根据当前的虚拟电脑快速搭建多台一样的虚拟电脑呢?
虚拟机克隆,可以克隆出多台一模一样的虚拟电脑
实现步骤:
关闭当前虚拟机linux系统
选中点击当前linux系统虚拟电脑,再鼠标右键如图操作
注意:必须先关闭,才能克隆,然后选择完整克隆。
修改克隆出来的静态ip
需要将克隆出来的电脑修改静态ip为192.168.66.129, 要与原本的虚拟机的ip不一样才可以。
修改计算机的名字
使用bash刷新。
在企业开发中经常要查询软件使用的端口号,那么如何查询linux系统某一个运行软件使用的端口?
命令:
netstat
:可以查看出系统网络的情况
参数详情:
无参 | 显示网络状态 | |
---|---|---|
-n | number | 显示程序的IP地址和端口号 |
-t | tcp | 只显示TCP协议连接的程序,-u显示udp协议的程序 |
-l | listenter | 显示监听中的Socket |
-p | programs | 显示程序的名字 |
演示:
netstat -nutlp #查看端口、udp、tcp、正在监听、显示程序名的所有程序
常见命令:
防火墙是防止外界访问系统内部的程序,防火墙设置指定服务的通信权限,如果允许服务外网访问需要进行防火墙配置。
linux系统安装的任何软件默认都不可以访问外网,必须经过防火墙的放行才可以。
命令详情:
外网或内网需要连接到当前系统内的程序进行操作,需要 linux 系统防火墙开放程序端口,否则无法访问。
命令:
firewall-cmd --zone =public --add-port =端口/tcp --permanent
参数介绍:
eg:假如开放 mysql 软件的端口 3306,允许外界访问,因为开了端口号,windows才能对虚拟机的mysql进行访问。
# 开放3306端口
firewall-cmd --zone =public --add-port =3306/tcp --permanent
# 修改了防火墙配置需要重启防火墙服务
Systemctl restart firewalld
外网或内网不需要连接到当前系统内的程序进行操作,则 linux 系统关闭开放的程序端口。
命令:
firewall-cmd --zone =public --remove-port =端口/tcp --permanent
:
参数介绍:
eg:移除开放 mysql 软件的端口 3306,不允许外界访问
firewall-cmd --zone =public --remove-port =3306/tcp --permanent
Systemctl restart firewalld
注意:如果外界还想访问mysql的话,也可以直接关闭防火墙即可。
systemctl stop firewalld
SSH 是一种网络协议,是 Secure Shell(安全外壳协议)的缩写,用于计算机之间的加密登录。
SSH 登录有两种验证机制:
基于口令的安全验证(有密登录)
基于秘钥登录的验证方式(免密登录)
命令:
ssh ip地址
演示:
有密登录效果
免密登录效果:要想实现免密,需要实现下面的步骤。
ssh
的主要就是安全性,安全性依赖于加密方式,现在主要的加密方式有两种:对称加密和非对称加密。
对称加密
对称加密使用同一个密钥来进行加密和解密,这样在传输时是安全可靠的,但是如何安全的保存密钥呢,在集群中,客户端的数量巨大,一旦任意一个客户端的密钥被窃取,那么整个系统的安全性也不复存在。
非对称加密
由于对称加密的这个弊端,产生了非对称加密,非对称加密中有两个密钥:公钥和私钥。公钥由私钥产生,但却无法推算出私钥;公钥加密后的密文,只能通过对应的私钥来解密。
非对称加密的登录流程:
在非对称加密中,由于只有公钥会被传输,而私钥是服务端本地保存,因此即便公钥被监听,也无法拿到原始密码,从而登录服务器。
ssh-keygen
生成一对密钥:公钥+私钥authorized_key
文件中,完成公钥认证操作authorized_key
文件,确认该公钥是否存在R
,并用公钥来进行加密,生成公钥加密字符串pubKey(R)
R
ID(sessionKey)
,用MD5
对R和SessionKey
进行加密,生成摘要(即MD5
加密字符串)MD5
加密字符串传给服务端MD5(R,SessionKey)
加密字符串shell
命令了其他位置都是linux系统自动完成校验
在fish生成一对公钥和私钥 (generate, 生成),使用rsa算法
ssh-keygen
将公钥发送给fishing服务器,必须给出fishing的密码fishing才接收公钥
ssh-copy-id 192.168.66.128
发送登录请求,实现免密登录
演示过程:
这里的项目部署软件暂时是我们常用的jdk和mysql,其他那些可以网上搜索。
linux常用安装软件方式
一种用于互联网下载包的打包及安装工具,它包含在某些 Linux分发版中。它生成具有RPM扩展名的文件。
RedHat Package Manager(RPM), 擅长安装软件
作用:
命令:
参数详情:
-v | 显示安装的详细过程。 |
---|---|
-q<软件名> | query查询某个软件是否安装 |
-a | 查询所有软件 |
-h | 列出软件安装时的标记 |
-i<软件名> | install安装指定的软件 |
-e | 卸载软件 |
–nodeps | 不验证软件相关关联性 |
– force | 强制操作 |
-U | 如果软件已存在会覆盖更新 |
本地或在线下载安装命令:yum(全称为 Yellow dog Updater Modified)
作用:用于自动从服务器上下载相应的软件包,自动安装,并且自动下载它的依赖包。
使用yum的前提是可以联网。
命令:
yun -y install 软件名 :安装软件
yun -y remove 软件名 :删除软件
注意:使用yum安装的软件,就要使用yum卸载软件
方式 | 区别 |
---|---|
yum在线下载安装方式 | 不仅下载当前软件包还会自动下载依赖的软件包安装;yum底层使用的是rpm,对rpm进行了进一步包装与优化 |
rpm在线下载安装方式 | 仅仅下载当前指定的软件包,对于依赖不会下载,所以在线下载rpm是麻烦的 |
要在虚拟机中执行java代码,那就需要跟windows一样安装jdk啦
安装软件:
链接:https://pan.baidu.com/s/1vP6KAmj3bmn5uzEgU7p4EA
提取码:xwne
安装步骤:
进入/soft目录
mkdir /soft
cd /soft
将jdk软件上传到linux系统/soft目录下
将jdk压缩文件解压到/usr/local,执行以下命令即可:
tar -xvf jdk-8u162-linux-x64.tar.gz -C /usr/local
配置linux的jdk环境变量,操作一个/etc/profile环境变量配置文件
编辑配置文件配置环境变量
vim /etc/profile
在文件里面的末位添加如下配置
#set java environment
JAVA_HOME=/usr/local/jdk1.8.0_162
CLASSPATH=.:$JAVA_HOME/lib
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
$JAVA_HOME/bin:$PATH 类似 拼接字符串 变量1+=Path变量的值
保存退出
重载环境变量配置文件
source /etc/profile
查看jdk环境变量是否配置成功,如下信息说明成功
java -version
解压安装文件(创建一个解压后的目录,再进行解压),跟之前一样先上传mysql
cd /soft
mkdir -p /usr/local/mysql
tar -xvf mysql-community-5.6.45.tar.gz -C /usr/local/mysql
查看解压后的文件列表
cd /usr/local/mysql
ll
执行安装命令
rpm -ivhU * --nodeps --force
启动mysql服务
systemctl start mysqld
将mysql加到系统服务中并设置开机启动【可以不用设置,默认mysql就开机启动】
systemctl enable mysqld
登录mysql,root用户默认没有密码
mysql -uroot -p
也可以在mysql中修改当前用户root的密码,密码修改为root
set password = password('root');
开启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客户端就可以连接啦!
解压安装文件到/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
让我们总结下今天到底学了什么:
用户管理:
添加用户:
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的学习也是必不可少滴!
让我们也一起加油吧!本人不才,如有什么缺漏、错误的地方,也欢迎各位人才大佬评论中批评指正!当然如果这篇文章确定对你有点小小帮助的话,也请亲切可爱的人才大佬们给个点赞、收藏下吧,一键三连,非常感谢!
学到这里,今天的世界打烊了,晚安!虽然这篇文章完结了,但是我还在,永不完结。我会努力保持写文章。来日方长,何惧车遥马慢!
感谢各位看到这里!愿你韶华不负,青春无悔!