学习笔记,只写重点,不连贯,写得很水。
视频from:2021韩顺平 一周学会Linux。学习地址:https://www.bilibili.com/video/BV1Sv411r7vd
老师说明:后面我们的Redis、ginx包括项目都会使用到Linux,也是和我讲解的Linux版本一致,所以请小伙伴学习时,和老师使用的Linux版本一致。
对于我们Java后端来说,小伙伴学习到Shel编程即可,也就是说,对于我们Java程序员来说,你学习到我讲解的107讲-Linux Shell编程笔记梳理即可,当然如果你时间充足,也可以把老师讲解的Linux全部学完。超出的部分可用于大数据,运维等。
Linux:实操篇-Vi和Vim编辑器 学习的重点。
Linux实操篇-组管理和权限管理 重点和难点
Linux实操篇-网络配置 重点中的重点
Linux实操篇进程管理(重点)
学习方法:学习inux的时候要注意先know how再know why。也就是说我们先在知道怎么做,然后我们才知道为什么,这是学工科的一个特点。
个人学习计划:7天*15P/天=105P,基本达到老师的学习目标。
实际执行情况:
day0:预热。p1-p5背景知识了解。
day1:安装环境 p6-p8。p9-11 vmware的使用及工具包。p12 linux系统讲解 学到-p16
最后发现,还是使用 阿里云 方便(墙裂推荐)
day2:p17-p36
day3:p37-p53
day4:p54-p67
day5:p68-p84
day6:p85-p89 常用软件的安装 p90-92 Shell编程
day7:p93-107
Linux命令英文全称解释
安装vm和Centos
vmware15.5下载
官方地址:https://www.vmware.com/cn.html
其它地址:https://www.nocmd.com/windows/740.html
Centos下载地址
Centos-7-x8664-DVD-1810.iso Centos7.6DVD版4G(目前主流的生产环境)
https://mirror.iscas.ac.cn/centos/7/isos/x86_64/
Cent0S-8.1.1911-x8664-dvd1.iso Centos8.1DVD版8G(未来的主流)
https://mirrors.aliyun.com/centos/8.1.1911/isos/x86_64/
Linux目录结构
100秒解释Linux系统目录结构
具体的目录结构(不用背知道即可)
/bin【常用】(usr/bin、/usr/local/bin)
是Binary的缩写,这个目录存放着最经常使用的命令
/sbin (/usr/sbin、/usr/local/sbin)
s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
/home【常用】
存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名
/root【常用】
该目录为系统管理员,也称作超级权限者的用户主目录
/Iib系统开机所需要最基本的动态连接共享库,其作用类似以于Vindows里的DLL文件。几乎所
有的应用程序都需要用到这些共享库
/lost+found这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件
/etc【常用】
所有的系统管理所需要的配置文件和子目录,比如安装mysql数据库my.conf
/usr【常用】
这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下
的program files目录。
/boot【常用】存放的是启动Liux时使用的一些核心文件,包括一些连接文件以及镜像文件
/proc这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息
/srv services缩写,该目录存放一些服务启动之后需要提取的数据
/sys这是引linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统sysfs
/tmp这个目录是用来存放一些临时文件的
/dev类似于windows的设备管理器,把所有的硬件用文件的形式存储
/media【常用】linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux:会把识别的设备挂载到这个目录下
/mnt【常用】
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上然后进入该目录就可以查看里的内容了。d:/myshare
/opt这是给主机额外安装软件所摆放的目录。如安装ORACLE数据库就可放到该目录下。默认为空
/usr/local【常用】
这是另一个给主机额外安装软件所安装的目录。一般是通过编译源码方式安装的程序
/var【常用】
这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件
/selinux [security-enhanced linux]
SELinux是一种安全子系统,它能控制程序只能访问特定文件,有三种工作模式,可以自行设置
一切皆文件
远程登录
Xshell7: 用于远程登录和控制
Xftp:用于文件的上传和下载
Linux-Xshell6 已经不能用了,现在是Xshell7
下载地址:https://www.xshell.com/zh/
到网页/下载 最下面,找家庭/学校免费,可以免费使用。同样可以下载Xftp
在Linux的终端上,输入ifconfig 查询linux机器的ip地址,便于它们的连接
解决Xftp连接后,出现乱码:
左上角>点文件>点当前会话属性>点选项>编码换成utf-8
reboot 可以重启服务器
vi和vim的基本介绍
Linux系统会内置vi文本编辑器
Vim具有程序编辑的能力,可以看做是Vi的增强版本,可以主动的以字体颜色辨别语法的正确性,
方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
vi和vim常用的三种模式
正常模式
以Vim打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中,你可以使用『上下左右』按键来移动光标,你可以使用『删除字符」或『删除整行」来处理档案内容,也可以使用『复制、粘贴」来处理你的文件数据。
插入模式
按下i,I,o,O,a,A,r,R等任何一个字母之后才会进入编辑模式,一般来说按i即可。
命令行模式
按下esc键,再输入":"冒号。在这个模式当中,可以提供你相关指令,完成读取、存盘、替换、离开Vim、显示行号等的动作则是在此模式中达成的!
:wq 写入并退出write quit
:q 退出
:q! 强制退出,且不保存
各种模式的切换
快捷键使用练习
拷贝当前行yy,输入p粘贴。
yy拷贝当前行,5表示复制5次,输入p粘贴。就是按下:yy5p。
拷贝当前行(含)向下的5行5yy,并移动到目标位置,再进行粘贴(输入p).就是按下:5yyp
注意光标所在位置
2.删除当前行dd,删除当前行向下的5行5dd。(没有dd5)
3.在文件中查找某个单词[命令行下/关键字,回车查找,输入n(Next)就是查找下一个]
4.设置文件的行号,取消文件的行号。[命令行下":set nu"和":set nonu"]
5.编辑/etc/profile文件,一般模式下,使用快捷键到该文档的最末行[G]和最首行[gg]
6.在一个文件中输入"hello'”,一般模式下,然后又撤销这个动作u(Undo)
7.编辑/etc/profile文件,并将光标移动到20行,在一般模式下,输入20(行号)+shift(按键)+g
8.更多的看整理的文档
关机&重启命令
用户管理
添加/删除用户
添加用户基本语法: useradd用户名
修改用户密码:passwd 用户名 回车。输入新密码
如果不写用户名,就是修改当前用户的密码。需要注意
pwd :显示当前工作目录print working directory
userdel 用户名:删除该用户,但保留文件夹
userdel -r 用户名:删除该用户,并删除该用户文件夹
切换用户
普通用户登录,登录后再用"su - root"(或其他有权限的用户)命令来切换成系统管理员身份
在提示符下输入logout即可注销用户。多用户登录时,退出并返回上一次使用用户。是最后一个用户时,退出系统连接。
whoami 显示当前用户名
who am i 显示第一次登录的用户名
用户组
介绍
类似于角色,系统可以对有性的多个用户进行统一的管理
新增组。创建一个新的组
指令:groupadd组名
删除组。删除组名为xx的组
指令(基本语法):groupdel组名
增加用户时直接加上组
指令(基本语法):useradd -g 用户组 用户名
增加一个用户zwj,直接将他指定到wudang
clear清屏
一般成功了都没有返回消息,“没有消息就是最好的消息”
id 用户名。显示用户名,和该用户所在组名
用户和组相关文件
/etc/passwd文件
用户(user)的配置文件,记录用户的各种信息
每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
/etc/shadow文件
口令的配置文件
每海行的含义:登绿名:加密口令:最后一次修改时间最小时间间隔:最大时间间隔:警告时间不活动时间失效时间标志
/etc/group文件
组(group)的配置文件,记录Linux包含的组的信息
每行含义:组名口令:组标识号:组内用户列表
使用指令
指定运行级别
基本介绍
运行级别说明:
0:关机
1:单用户【找回丢失密码】
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用保留给用户
5:图形界面
6:系统重启
常用运行级别是3和5,也可以指定默认运行级别,后面演示
应用实例
命令:init[0123456]应用案例:通过init来切换不同的运行级别,比如动5-3,然后关机。
找回root密码
面试题:如何找回root密码
需要在本地电脑端前操作。启动时按"e"操作。远程操作的话,启动之前的画面看不到。
查文档吧:韩顺平教育--linux找回root密码.doc
课堂练习
假设root密码忘记了,请问如何找回密码
设置运行级别,linux运行后,直接进入到命令行终端(3)
帮助指令
man(ual)获得帮助信息
基本语法:man【命令或酒配置文件】(功能描述:获得帮助信息)
案例:查看cd命令的帮助信息
输入:man ls
在linux下,隐藏文件是以. 开头
选项可以组合使用,比如: ls -al /root
help指令
基本语法:help命令(功能描述:获得shell内置命令的帮助信息)
文件目录类
pwd指令
基本语法:pwd(功能描述:显示当前工作目录的绝对路径)
应用实例:案例:显示当前工作目录的绝对路径
Is指令
基本语法:ls【选项】【目录或是文件】
常用选项
-a:显示当前目录所有的文件和目录,包括隐藏的。
-l:以列表的方式显示信息
-h: 人性化方式显示 human
cd指令
基本语法:cd【参数】(功能描述:切换到指定目录)
理解:绝对路径和相对路径
cd ~或者cd: 回到自己的家目录
cd .. 回到当前目录的上一级目录
mkdir指令
mkdir指令用于创建目录
基本语法:mkdir【选项】要创建的目录
常用选项 -p:创建多级目录
应用实例
案例1:创建一个目录/home/dog
mkdir /home/dog
案例2:创建多级目录/home/animal/tiger
mkdir -p /home/animal/tiger
rmdir指令
rmdir指令删除空目绿
基本语法
rmdir【选项】要删除的空目录
应用实例
案例:删除一个目录/home/dog
使用细节:rmdir 删除的是空目录,如果目录下有内容时无法删除的。
语法:rm -rf [要删除的目录] 。作用:用于删除非空目录。递归强制删除
(Recursion递归)(Force强制)
touch指令
touch指令创建空文件
基本语法:touch 【文件名称】。例:touch -hello.txt
cp指令
cp指令拷贝文件到指定目录
√基本语法:
cp【选项】source[源] dest[目标]
√常用选项:
-r:递归复制整个文件夹
-强制覆盖不提示的方法:\cp 【选项】source[源] dest[目标]。可以不用逐个确认是否覆盖
rm指令
说明:rm指令移除文件或目录
基本语法:rm【选项】要删除的文件或目录
常用选项
-r:递归删除整个文件夹
-f:强制删除不提示
mv指令
mv移动文件与目录或重命名
基本语法:
mv oldNameFile newNameFile (功能描述:重命名)
mv /temp/movefile /targetFolder (功能描述:移动文件)
mv oldNameFile /directory/newNameFile 可以移动,并且重命名,同时使用
cat指令
cat查看文件内容
基本语法: cat【选项】要查看的文件
常用选项: -n:显示行号
cat只能浏览文件,而不能修改文件,为了浏览方便,一般会带上管道命令 | more
enter 显示more一行;space空格显示more翻页。
more指令
more指令是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more
指食中内置了若干快捷键(交互的指令),详见操作说明
基本语法:more 【要查看的文件】
less指令
Iess指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
基本语法:Iess [要查看的文件]
echo指令
echo输出内容到控制台
√基本语法:echo【选项】【输出内容】
指令和>>指令
>输出重定向(覆盖) 和 >>追加
基本语法
1)ls -l>文件 (功能描述:列表的内容写入文件a.txt中(覆盖写))
2)ls -al>>文件 (功能描述:列表的内容追加到文件aa.txt的未尾)
3)cat 文件1>文件2 (功能描述:将文件1的内容覆盖到文件2)
4)echo "文本内容">>文件(追加)
Ctrl+C 退出
ln指冷软链接也称为符号链接(link),类似于windows里的快捷方式,主要存放了链接其他文件的路径
基本语法:
ln -s【原文件或目录】【软链接名】(功能描述:给原文件创建一个软链接)
!+行号 执行曾经执行过的,行号是多少的指令
压缩和解压类
●gzip/gunzip指令
基本语法:
gzip 文件 (功能描述:压缩文件,只能将文件压缩为*.gz文件)
gunzip 文件.gz(功能描述:解压缩文件命令)
●tar指令
tar指令是打包指令,最后打包后的文件是.tar.gz的文件。
基本语法:
tar[选项] XXX.tar.gz打包的内容(功能描述:打包目录,压缩后的文件格式 .tar.gz)
选项说明:
-z 用gzip对存档压缩或解压
-x 解压缩文件 //通常在x,c中二选一,进行解压或压缩。比如-zxvf 或 -zcvf
-c 创建一个压缩文件
-v 详细显示处理的文件
-f 指定存档或设备
Linux实操篇
组管理和权限管理
Linux组基本介绍
在inux中的每个用户必须属于一个组,不能独立天组外。在iux中每个文件
有所有者、所在组、其它组的概念。
1.所有者
2.所在组
3.其它组
4.改变用户所在的组
权限的基本介绍
ls-l 中显示的内容如下:
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
0-9位说明:
第0位确定文件类型(d,-,l,c,b)
d是目录,相当于windows的文件夹
-是普通文件
I是链接,相当于windowsl的快捷方式
c是字符设备文件,鼠标,键盘
b是块设备,比如硬盘
2.第1-3位确定所有者(该文件的所有者)拥有该文件的权限。--User
3.第4-6位确定所属组(同用户组的)拥有该文件的权限,-Group
4.第7-9位确定其他用户拥有该文件的权限-Other
rwx说明:
作用到文件:
read读
write可写,可修改。不代表删除,删除的前提是对文件所在目录有write权限。
理解:将目录看做文件。目录有w权限,才能修改里面的内容。
execute可执行文件
作用到目录:
r:表示可以ls,将目录的内容显示
w:表示可以在该目录,删除、创建、或者重命名文件
x:表可以进入到该目录,比如cd
可用数字表示为:r=4,w=2,x=1因此rwx=4+2+1=7
理解:想成3位二进制,即000。高位到低位的值,依次为4、2、1
其它内容说明
1文件:硬连接数或目录:子目录数4
root用户
root组
1213文件大小(字节),如果是文件夹,显示4096字节
Feb 2 09:39最后修改日期:月 日 时:分
abc文件名
修改权限-chmod
基本说明:通过chmod指令,可以修改文件或者目录的权限。
chmod=change+modify
第一种方式:+、-、=变更权限
user:所有者 group:所有组 other:其他人 all:所有人(user、group、other的总和)
1)chmod u=rwx,g=rx,o=x 文件/目录名
2)chmod o+w 文件/目录名 在1)的基础上进行,给组增加w权限
3)chmod a-x 文件/目录名 在1)的基础上进行,给所有人减去x权限
第二种方式:通过数字变更权限
r=4 w=2 x=1 rwx=4+2+1=7
chmod u=rwx,g=rx,o=x文件/目录名 相当于:
chmod 751 文件/目录名
chown -R 递归
任务调度
crontab进行定时任务的设置
概述
任务调度:是指系统在某个时间执行的特定的命令或程序。
任务调度分类:1系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等
个别用户工作:个别用户可能希望执行某些程序,比如对ysql数据库的备份。
快速入门
设置任务调度文件:/etc/crontab
设置个人任务调度。执行crontab-e命令。
接着输入任务到调度文件
如:*/1 * * * * ls -l /etc/ > /tmp/to.txt
意思说每小时的每分钟执行ls -l /etc/ > /tmp/to.txt 命令
参数细节说明
5个占位符的说明
crond相关指令
crontab -r:终止任务调度。
crontab -l:列出当前有那些任务调度。列出当前待执行的crontab
service crond restart【重启任务调度】
at定时任务
基本介绍
1.at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行。
2.默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业。
3.at命令是一次性定时计划任务,执行完一个任务后不再执行此任务了
4.在使用at命令的时候,一定要保证atd进程的启动,可以使用相关指令来查看:
ps -ef | grep atd //检测atd是否在运行
atq命令来查看系统中没有执行的工作任务
at命令格式
at【选项】【时间】
Ctrl+D结束at命令的输入,需要按2次
atrm + 编号 //删除该编号的at任务
at命令选项
Linux磁盘分区、挂载
查看所有设备挂载情况
命令:Isblk 或者 Isblk -f
全拼: list block
永久挂载:通过修改/etc/fstab实现挂载。否则重启后需要重新手动挂载
查询系统整体磁盘使用情况:df -h
查询指定目录的磁盘占用情况
基本语法:du- h /目录 //disk usage
查询指定目录的磁盘占用情况,默认为当前目录
-s指定目录占用大小汇总
-h带计量单位
-a含文件
--max-depth=1子目录深度 //没错,这个选项的开头确实就是两个“--”
-c列出明细的同时,增加汇总值
以树状显示目录结构: tree 目录
默认需要安装:yum install tree
网络配置
查看网络IP和网关
查看windows环境的中VMnet8网络配置(ipconfig指令)
查看linux的配置ifconfig
ping测试主机之间网络连通性
ping目的主机(功能描述:测试当前服务器是否可以连接目的主机)
比如:ping www.baidu.com
网络环境配置
第二种方法(指定ip):
直接修改配置文件来指定IP,并可以连接到外网(程序员推荐)
编辑:vim /etc/sysconfig/network-scripts/ifcfg-ens33
要求:将ip地址配置的静态的,比如:ip地址为192.168.200.130
hostname:查看主机名
vim /etc/hostname :修改主机名
vim /etc/hosts :建立ip地址与主机名的映射
DNS
DNS,就是Domain Name System的缩写,翻译过来就是域名系统
是互联网上:作为域名和IP地址相互映射的一个分布式数据库
主机名解析机制分析(Hosts、DNS)
应用实例:用户在浏览器输入了www.baidu.com
浏览器先检查浏览器缓存中有没有该域名解析IP地址,有就先调用这个IP完成解析;如果没有,就检查DNS解析器缓存,如果有直接返回IP完成解析。这两个缓存,可以理解为本地解析器缓存
一般来说,当电脑第一次成功访问某一网站后,在一定时间内,浏览器或操作系统会缓存他的IP地址(DNS解析记录)。如在cmd窗口中输入
ipconfig /displaydns //DNS域名解析缓存 (Windows-cmd)
ipconfig /flushdns //手动清理dns缓存(Windows-cmd)
如果本地解析器缓存没有找到对应映射,检查系统中hosts:文件中有没有配置对应的域名IP映射,如果有,则完成解析并返回。
如果本地DNS解析器缓存和hosts)文件中均没有找到对应的IP,则到域名服务DNS进行解析域
还讲了个,DNS劫持的例子,有点意思。
进程管理
基本介绍
1.在LINUX中,每个执行的程序都称为一个进程。每一个进程都分配一个ID号(pid,进程号)。
2.每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作
的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
3.一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。
ps命令是用来查看目前系统中,有哪些正在执行,以及它们执行的状况。可以不加任何参数
ps -a:显示当前终端的所有进程信息
ps -u:以用户的格式显示进程信息
ps -x:显示后台进程运行的参数
显示系统执行的进程
ps详解
1.指令:ps -aux | grep xxx,比如我看看有没有sshd服务
2.指令说明
System V展示风格
USER:用户名称
PID:进程号
%CPU:进程占用CPU的百分比
%MEM:进程占用物理内存的百分比
VSZ:进程占用的虚拟内存大小(单位:KB)
RSS:进程占用的物理内存大小(单位:KB)
TTY:终端名称,缩写。
STAT:进程状态,其中S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵尸进程,T-被跟踪或者被停止等等
STARTED:进程的启动时间
TIME:CPU时间,即进程使用CPU的总时间
COMMAND:启动进程所用的命令和参数,如果过长会被截断显示
应用实例
要求:以全格式显示当前所有的进程,查看进程的父进程。查看Sshd的父进程信息
整全格金
ps -ef | grep xxx
是BSD风格
UID:用户ID user
PID:进程ID process
PPID:父进程ID parent
C:CPU用于计算执行优先级的因子。
数值越大,表明进程是CPU密集型运算,执行优先级会降低;
数值越小,表明进程是/O密集型运算,执行优先级会提高
STIME:进程启动的时间
TTY:完整的终端名称
TIME:CPU时间
CMD:启动进程所用的命令和参数
终止进程kill和killall
·介绍:
若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程。使用kill
命令来完成此项任务。
基本语法
kill【选项】进程号 (功能描述:通过进程号杀死/终止进程)
killall 进程名称(功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)
常用选项
-9: 表示强迫进程立即停止
killall gedit //关闭所有gedit。graphical edit 图形编辑器
查看进程树pstree (process)
基本语法
pstree[选项],可以更加直观的来看进程信息
常用选项
-p:显示进程的PID
-u:显示进程的所属用户
service管理指令
service 服务名 [start|stop|restart|reload|status]
服务管理,查看全部服务,使用setup -> 系统服务
使用setup工具,需要先安装:
yum install -y setuptool
服务的运行级别(runlevel):
Linux系统有7种运行级别(runlevel):常用的是级别3和5
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
运行级别2:多用户状态(没有NFS),不支持网络
运行级别3:完全的多用户状态(有NFS),无界面,登陆后进入控制台命令行模式
运行级别4:系统未使用,保留
运行级别5:X11控制台,登陆后进入图形GUI模式
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
开机流程:
CentOS7后运行级别说明
在/etc/initab
进行了简化,如下:
multi-user.target : analogous to runlevel 3 //系统在级别3运行
graphical.target: nalogous to runlevel 5 //系统在级别5运行
查看当前默认运行级别,执行语句:
systemctl get-default
设置一个默认的(重启后也有效果)运行级别,执行语句:
systemctl set-default [TARGET].target 比如:
systemctl set-default graphical.target //设置为级别5
systemctl set-default multi-user.target //设置为级别3
systemctl管理指令
1.基本语法:systemctl [start|stop|restart|status] 服务名
2.systemctl指令管理的服务在/usr/lib/systemd/system查看
●systemctl设置服务的自启动状态
1.systemct Iist-unit-files [|grep服务名](查看服务开机启动状态,grep可以进行过滤)
2.systemctl enable服务名(设置服务开机启动)
3.systemctl disable服务名(关闭服务开机启动)
4.systemctl is-enabled服务名(查询某个服务是否是自启动的)
●应用案例:
查看当前防火墙的状况,关闭防火墙和重启防火墙。=>firewalld.service
systemctl status firewalld
systemctl stop firewalld
防火墙 firewall
打开或者关闭指定端口
在真正的生产环境,往往需要将防火墙打开,但问题来了,如果我们把防火墙打开,那么外部请求数据包就不能跟服务器监听端口通讯。这时,需要打开指定的端口。比如80、22、8080等,这个又怎么做呢?老韩给给大家讲一讲。【示意图】
firewall指令
打开端口:firewall-cmd --permanent --add-port=端口号/协议
关闭端口:firewall-cmd --permanent --remove-port=端口号/协议
重新载入,才能生效:firewall-cmd --reload
查询端口是否开放/监听:firewall-cmd --query-port=端口/协议
动态监控进程
介绍
top与ps命令很相似。它们都用来显示正在执行的进程。top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的的进程。
基本语法
top【选项】
选项说明:
交互操作说明:
注意是大写。在查看数据出来以后,在列表显示时输入,而不是当做选项输入。
查看系统网络情况netstat
基本语法:netstat【选项】
选项说明:
-an 按一定顺序排列输出
-p 显示哪个进程在调用
ESTABLISHED 表示已连接
LISTEN 表示监听
软件安装
rpm包的管理
介绍
rpm用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有。RPM扩展名的文件。RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,类似vindows的setup.exe,这一文件格式名称虽然打上了RedHat的标志,但理念是通用的。
Linux的分发版本都有采用(suse,redhat,centos等等),可以算是公认的行业标准了。
rpm包的简单查询指令
查询已安装的rpm列表rpm -qa | grep xx
举例:看看当前系统,是否安装了firefox
rpm包名基本格式
一个rpm包名:firefox-60.2.2-1.el7.centos.x86_64
名称:firefox
版本号:60.2.2-1
适用操作系统:el7.centos..x86_64
表示centos7.x的64位系统
如果是i686、i386表示32位系统,noarch表示通用。。
rpm包的其它查询指令:
rpm-qa:查询所安装的所有rpm软件包
rpm -qa | more
rpm -qa | grep X [rpm -qa | grep firefox]
rpm -q软件包名:查询软件包是否安装
案例:rpm -q firefox
rpm-qi软件包名:查询软件包信息
案例:rpm-qi firefox
rpm-ql软件包名:查询软件包中的文件
比如:rpm-ql firefox
rpm- qf文件全路径名 查询文件所属的软件包
rpm -qf /etc/passwd
rpm -qf /root/install.log
卸载rpm包
基本语法:rpm -e RPM包的名称 (erase擦除)
应用案例:删除firefox 软件包
强制删除,忽略依赖问题:rpm -e --nodeps 软件名
安装rpm包
√基本语法:rpm -ivh RPM包全路径称
√参数说明
i=install安装
v=verbose提示
h=hash进度条
yum
● 介绍:
Yum是一个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。
yum的基本指令
查询yum服务器是否有需要安装的软件:yum list | grep xx软件列表
安装指定的yum包:yum install xxx下载安装
搭建环境
概述
如果需要在Linux下进行JavaEE的开发,我们需要安装如下软件
名称:
ideaIU-2020.2.3.tar.gz
apache-tomcat-8.5.59.tar.gz
mysqI-5.7.26-1.el7.x86_64.rpm-bundl..
jdk-8u261-linux-x64.tar.gz
CentOS-7-x86_64-DVD-1810.iso
安装JDK
安装步骤
一、上传
mkdir /opt/jdk
通过xftp6上传到/opt/jdk下
二、解压
cd /opt/jdk
解压:tar -zxvf jdk-8u261--linux-x64.tar.gz
三、移动解压后的文件夹到指定目录
mkdir /usr/local/java
mv /opt/jdk/jdk1.8.0_261 /usr/local/java
四、配置环境变量
配置环境变量的配置文件vim /etc/profile
export JAVA_HOME=/usr/local/java/jdk1.8.0_261
export PATH=$JAVA_HOME/bin:$PATH
//这儿的$PATH是将以前的路径变量带上,否则覆盖了
// ":"冒号,个人理解是起到一个分隔符的作用,可理解为"追加"。类似于 a | b | c这种“|”
五、刷新环境变量,使其生效
source /etc/profile
六、测试是否安装成功
编写一个简单的Hello.java输出"hello,world!"
tomcat的安装
说明:tomcat依赖jdk。
步骤:
上传安装文件,并解压缩到 /opt/tomcat
进入解压目录/bin,启动tomcat: ./startup.sh。以下是一些排错,正确使用不需要:
查看 vim /usr/local/tomcat/apache-tomcat-10.1.9/logs/catalina.out 报错的原因
最后估计是版本兼容原因或者路径配置原因吧。删除tomcat,按照老师的版本来吧。
rm -rf /usr/local/tomcat 删除该文件
经测试,后来重新安装了,即使服务没有启动,也正常访问了。
("Tomcat started."不代表服务正常运行了。首先用下面的命令可以查看 tomcat 服务的状态:systemctl status tomcat.service 或者:systemctl status tomcat)
开放端口 8080
开启防火墙:
直接开启,会报错:FirewallD is not running
需要: systemctl start firewalld.service #开启服务
打开端口:firewall-cmd --permanent --add-port=8080/tcp
确定是否打开:firewall-cmd --query-port=8080/tcp
重新载入,才能生效:firewall-cmd --reload
使用阿里云服务器的,还需要开放安全组
配置安全组规则-配置规则-手动添加-8080
测试是否安装成功:在windows、Linux下访问 http://linux的ip:8080
测试自己写的页面: cd 到tomcat/webapp/ROOT/目录下,vim stein.html一个自己的页面:
<h1>write down what u think</h1>
然后在windows浏览器访问Linux: http://linux的ip:8080/stein.html
idea2020的安装
说明:通常在本地开发,只是上传到Linux去运行,所以这个不常安装。而且太大了,阿里云运行不了。
●步骤
1.下载地址:https://www.jetbrains.com/idea/downloadsection=windows
2.解压缩到/opt/idea
3.启动idea /bin目录下执行idea.sh,配置jdk
4.编写Hello world程序并测试成功!
mysql5.7的安装
1.新建文件夹 /opt/mysql,并cd进去
2.运行wget http://dev.mysql.com/get/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar,下载mysql安装包
PS:centos7.6自带的类mysql数据库是mariadb,会跟mysql冲突,要先删除。
Ctrl+C 可以中断正在进行的任务,比如这儿中断下载
3.tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar (因为是tar文件,所以这儿不用 -z)
4. 运行rpm -qa | grep mari,查询系统里面有没有mariadb相关安装包。找到2个:
marisa-0.2.4-4.el7.x86_64
mariadb-libs-5.5.68-1.el7.x86_64
5.运行rpm -e --nodeps mariadb-libs 卸载
运行rpm -e --nodeps marisa 卸载
再用rpm -qa | grep mari 检查是否还有
6.然后开始真正安装mysql,依次运行以下几条
rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm
7.运行systemctl start mysqld.service,启动mysql
8.然后开始设置root用户密码
Mysql自动给root用户设置随机密码,运行grep "password" /var/log/mysqld.log可看到当前密码
9.运行mysql -u root -p,用root用户登录,提示输入密码可用上述的,可以成功登陆进入mysql命令行
10.设置root密码,对于个人开发环境,如果要设比较简单的密码(生产环境服务器要设复杂密码),可以运行set global validate_password_policy=0; 注意sql语句有分号“;”
提示密码设置策略(validate_password_policy默认值1)
//MySQL密码复余度要求分三种
//低:0 or Low | Length只更求长度(默认8位)
//中:1 or MEDIUM | Length:numeric,lowercase/uppercase,and special characters
//要求长度 数字 大小写 特珠字符
//高:2 or STRONG | Length:numeric,lowercase/uppercase,and special characters;dictionary file
//要求长度 数字 大小写 特殊字符 字典文件
11.set password for 'root'@'localhost'=password('hspedu100'); 注意sql语句有分号“;”
12.运行flush privileges;使密码设置生效.注意sql语句有分号“;”quit退出后,重新登录检查密码是否生效。
show databases; 查看数据库