Linux基本命令及操作总结_linux基本命令实验总结-程序员宅基地

技术标签: java  Linux  linux  

一、基本命令

1、开机和关机

	sync #将数据由内存同步到硬盘中
	
	shutdown #关机指令,
	shutdown  -h 10     	# 10分钟后关机
	shutdown  -h  20:25     #在当天20:25关机
	shutdown  -h now 		 #立马关机
	shutdown   -r now       #系统立马重启

	reboot      #重启
	halt       #关闭系统

	logout		#注销用户,退出登录shell

2、帮助指令

在对某个指令不熟悉时,可通过Linux提供的帮助指令来了解指令的使用方法。
再操作命令时,遇到某个命令记不太清了,也可通过  	Tab 命令 自动补齐或给出对应的命令提示选择
man		# 获得帮助信息
man [命令或配置文件]	
man ls  # 查看ls命令的帮助信息

在这里插入图片描述

help	# 获得shell内置命令的帮助信息
help [命令]

在这里插入图片描述

3、时间日期类型

date  		#显示当前时间
date +%Y	#显示当前年份
date +%m	#显示当前月份
date +%d	#显示当前是哪一天
date "+%Y-%m-%d %H:%M:%S    #显示年月日时分秒

date -s [字符串时间]		#设置日期

cal  	#查看日历指令
cal [选项]	#不加选项显示本月日历

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、查找命令

  • find:find指令将从指定目录向下递归的遍历其各个子目录,将满足条件的文件或者目录显示在终端
find [搜索范围] [选项]
find /home -name  t.txt	#按名字查找
find /opt -user	用户名	#按文件的 拥有者查找
find /  -size +20M		#从根目录  按 文件大小 来查找

在这里插入图片描述
在这里插入图片描述

  • locate:可以快速定位文件路径。利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。无需遍历整个文件系统,查询速度较快。
    注意:第一次使用要先 updatedb
locate  文件名	#搜索文件

在这里插入图片描述

  • grep 指令 和 管道符号 |
grep  #过滤查找
 |		#管道符,表示将前一个命令的处理结果输出传递给后面的命令处理。
grep [选项]	查找内容 源文件
	   -n	#显示匹配行及行号
	   -i	#忽略字母大小写
	   

在这里插入图片描述

  • whereis:定位可执行文件、源代码文件、帮助文件在文件系统中的位置。这些文件的属性应属于原始代码,二进制文件,或是帮助文件。
    在这里插入图片描述

5、系统目录结构

1、一切皆文件
2、根目录 /
  • /bin : bin是Binary的缩写,这个目录存放着最经常使用的命令。
  • /boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。(不要动)
  • /dev : dev是Device(设备)的缩写,存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
  • letc :这个目录用来存放所有的系统管理所需要的配置文件和子目录。
  • /home :用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
  • lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。(不要动)
  • /lost+found :这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。(存放突然关机的一些文件)
  • /media : linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
  • /mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。(我们后面会把一些本地文件挂载在这个目录下)
  • /opt:这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
  • /proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。(不用管)
  • /root :该目录为系统管理员,也称作超级权限者的用户主目录。
  • /sbin : s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。.
  • /srv:该目录存放一些服务启动之后需要提取的数据。
  • /sys :这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统sysfs 。
  • /tmp:这个目录是用来存放一些临时文件的。用完即丢的文件,可以放在这个目录下,安装包!
  • /usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows 下的program files目录。
  • /usr/bin :系统用户使用的应用程序。
  • /usr/sbin :超级用户使用的比较高级的管理程序和系统守护程序。
  • /usr/src :内核源代码默认的放置目录。
  • /var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
  • /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。
  • /www: 存放服务器网站相关的资源、环境、网站的项目

二、常用基本命令

1、目录管理

绝对路径:全称
相对路径:
cd #切换目录
./ #当前目录
cd ../  #返回上一级目录

在这里插入图片描述
在这里插入图片描述

# ls(列出目录!)
ls -a	# all,查看全部文件,包括隐藏文件
ls -l	# 列出所有的文件,包含文件的属性和权限,没有隐藏文件
 

在这里插入图片描述
在这里插入图片描述
Linux所有命令都可以组合
在这里插入图片描述

pwd #显示当前所在目录

在这里插入图片描述

mkdir # 创建一个目录
mkdir -p  #创建多级目录
touch #创建文件

rmdir  #删除一个目录
rmdir -p #删除多级目录
rmdir -f #忽略不存在的文件,不会出现警告,强制删除!
rmdir -r #递归删除目录
rmdir -i #互动,删除询问是否删除

rmdir -rf /  #系统中所有的文件就被删除了,删库跑路

在这里插入图片描述
在这里插入图片描述
rmdir 仅能删除空的目录,如果下面存在文件,需要先删除文件,递归删除多个目录 加 参数 -p

cp #复制文件或目录
cp 原来的地方 新的地址

在这里插入图片描述

mv  #移动文件 或目录  、 重命名文件
mv -f #强制
mv -u #只替换已经更新过的文件

在这里插入图片描述
在这里插入图片描述

2、文件属性

Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。

在这里插入图片描述

在Linux中第一个字符代表这个文件是目录、文件 或 链接文件 等等(如上图):

  • 当前为【d】则是目录
  • 当前为【-】则是文件
  • 当前为【l】则表示为链接文件(link file)
  • 若为【b】 表示为装置文件里面的可供存储的接口设备(可随机存取装置)
  • 若为【c】 表示为装置文件里面的串行端口设备,例如键盘(一次性读取装置)

其后的字符串中,以三个为一组,且均为【rwx】的三个组合,其中【r】代表可读(read);【w】代表可写(write);【x】代表可执行(execute)。

注意:这三个权限的位置不会改变,如果没有权限,就会出现减号【-】

每个文件的属性由左边第一部分的10个字符来确定:
在这里插入图片描述

chgrp #更改文件属组

chgrp [-R] 属组名 文件名  -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。

chown # 更改文件属主,也可以同时更改文件属组
chown [-R] 属主名 文件名
chown [-R] 属主名:属组名  文件名

在这里插入图片描述

chmod #更改文件9个属性
chmod [-R] xyz 文件或目录  

Linux文件属性有两种设置方法,一种是数字、一种是符合。
Linux文件的基本权限有9个,分别是 owner/group/others三种身份各有自己的read/write/execute权限,

各权限的数字代表:  r:4       w:2      x:1		
可读可写不可执行  : rw-    4+2+0=6
可读可写可执行		:rwx    4+2+1=7

chomd 777  :文件赋予  所有用户   可读可写可执行

在这里插入图片描述

3、文件内容查看

cat  #由第一行开始显示文件内容,用来读文章,或读取配置文件,都用cat
tac  #从最后一行开始显示,tac是cat的倒写

nl   #显示的时候,顺道输出行号!

more  #一页一页的显示文件内容  (空格代表翻页,enter代表向下看一行, :f  行号)
less  #与more相似,可往前翻页  (空格代表下翻页,enter代表向下看一行, :f  行号, 上下键代表上下翻动页面,退出 q命令)
# 【/字符】:向下查询要查询的字符串;  【?字符】:向上查询要查询的字符串

head  #只看头几行
head -n  #显示几行  head -n 5 ifcfg-eth0/文件名

tail  #只看尾部几行

grep abc test.txt	#在test.txt文件中查找 abc 关键字
grep ^abc test.txt	#在test.txt文件中查找以 abc 开头的关键字
grep [0-9] test.txt	 #显示文件中所有包含数字对的行

sed -n '/abc/p'	test.txt	#查看只包含关键词“abc”的行
sed -n '1,5p;5q' test.txt	#查看从第一行到第五行的内容
sed -n '5p;5q' test.txt		#查看第五行内容

sed '/^$/d' t.txt		#删除t.txt文件中的所有空白行
sed -e '8d' t.txt		#删除文件中的第8行
sed 's/eee/ddd/g' t.txt		#将文件中的 eee 替换成 ddd
sed -e 's/*$//' t.txt		#删除每一行最后的空白字符
# sed 默认不会真正修改原文件的内容

paste file1 file2 #合并两个文件内容
sort file1 file2  #排序两个文件内容
comm -1 file1 file2 #比较两个文件,去除file1所含内容
	 -2				#比较两个文件,去除file2所含内容
	 -3 			#比较两个文件,去除两文件共有内容

网络配置目录  :  cd    /etc/sysconfig/network-scripts
ifconfig    :   查看网络配置

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、Linux链接(了解)

Linux的链接分为两种:硬链接、软硬件

  • 硬链接: A—B,假设B是A的硬链接,那么他们两个指向了同一个文件!允许一个文件拥有多个路径,用户可以通过这种机制建立硬链接到一些重要文件上,以防误删
  • 软链接:类似window下的快捷方式,删除的源文件,快捷方式也访问不了
ln     #创建链接

touch  #创建文件

echo   # 输入字符串,也可以输入到文件中    echo "i love you"  >>f1

在这里插入图片描述
删除f1之后,查看f2,f3的区别:
在这里插入图片描述

5、Vim编辑器

Vim是从vi发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富。vi是老式的字符处理器。
在Linux中,必须会Vim (查看内容、编辑内容、保存内容)

三种使用模式:
  • 命令模式(Command mode)
  • 输入模式(Insert mode)
  • 底线命令模式(Last line mode)

作用:

命令模式: 用户刚刚启动vi/vim,便进入了命令模式
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符,比如:
	i  # 切换到输入模式,以输入字符
	x  # 删除当前光标所在处字符# 切换到底线模式命令,以在最低一行输入命令

 命令模式只有一些最基本的命令
 若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式

输入模式:在命令模式下,按下i,就切换到输入模式
	字符按键及Shift组合  # 输入字符
	ENTER    # 回车键、换行
	BACKSPACE # 退格键,删除光标 前 一个字符
	DEL  #删除键、删除光标 后 一个字符
	方向键  #在文本中移动光标
	HOME/END  #移动光标到行首/行尾
	Page Up/Page Down  #上/下翻页
	Insert  #切换光标为输入/替换模式,光标将变成竖线/下划线
	ESC  #退出输入模式,切换到命令模式

底线模式:在命令模式下按 : (英文冒号),就进入了底线模式,光标就移动到了最底下,就可以在这里输入一些底线命令
	q   # 退出程序
	w   # 保存文件
	wq  # 保存并退出
	w!  # 文件属性为只读时,强制写入
	q!  # 强制离开不存储刚修改过的文件
	ZZ  # 若未修改,不存储离开;若被修改过,则存储后离开
	set nu  # 设置行号
	set nonu  #取消行号


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
新建或编辑文件,按 i 进入编辑模式,编写内容,编写完后 按 esc 退出编辑模式,之后按 :进入底线模式 wq 保存退出!

6、账号管理

	Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
	用户的账号,一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面可以帮助用户组织文件,并为用户提供安全性保护

每个用户账号都拥有一个唯一的用户名和各自的口令。
用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。

实现用户账号管理,要完成的工作主要有:

  • 用户账号的添加、删除、修改
  • 用户口令的管理
  • 用户组的管理
useradd   #添加用户

useradd -选项  用户名
		-m   #自动创建这个用户的主目录
		-c   #指定一段注释性描述
		-d   #指定用户主目录,
		-g  用户组	 #指定用户所属的附加组
		-G  用户组
		-s  #指定用户的登录shell
		-u 用户号, #指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号
本质:Linux中一切皆为文件,这里的添加就是往某个文件中 写入用户信息    /etc/passwd 

在这里插入图片描述

userdel  #删除用户

userdel  -r 用户名    #删除用户时将他的目录页一并删掉!

在这里插入图片描述

usermod  #修改用户

在这里插入图片描述
在这里插入图片描述

su	# 切换用户
su -root	# 在切换用户时,如果想在切换用户之后使用新用户的工作环境,可以在su和username之间加 【-】

	#表示超级用户,即 root用户
	$表示普通用户

exit #退出当前用户

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


hostname  #查看主机名

passwd   #修改密码
passwd -l 用户名 #锁定用户,锁定之后这个用户就不能登录了
passwd -d 用户名 #没有密码不能登录

在这里插入图片描述
在这里插入图片描述

7、用户组管理

属主、数组
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理(开发、测试、运维、root)。不同用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组管理涉及用户组的添加、删除、修改。组的增加、删除、修改实际上是对 /etc/group  文件的更新。
groupadd  #创建一个用户组
groupadd -g #指定id

在这里插入图片描述
在这里插入图片描述
创建完用户组后可以得到一个组的id,这个id是可以指定的,若不指定则自增。
在这里插入图片描述
在这里插入图片描述

groupdel #删除用户组

在这里插入图片描述

groupmod #修改用户组的权限信息和名字
groupmod -g  -n 

在这里插入图片描述
在这里插入图片描述

8、磁盘管理

df # 列出文件系统整体的磁盘使用量

du # 检查磁盘空间的使用量
du -sm /* #检查根目录下每个目录所占用的容量

在这里插入图片描述
在这里插入图片描述

mount #挂载
mount /dev/kuang /mnt/kuang		#将 外部设备kuang 挂载到mnt 目录下,来实现访问!

umount #卸载
umount -f #强制卸载

9、进程管理

  • 在Linux中,每一个程序都有自己的一个进程,每个进程都有一个id
  • 每一个进程,都会有一个父进程
  • 进程可以有两种存在方式:前台 和 后台运行
  • 一般服务都是后台运行的,基本程序都是前台运行的!
ps  #查看当前系统中正在执行的各种进程信息

ps -xx :
	-a  #显示当前终端运行的所有的进程信息
	-u  #以用户的信息显示进程
	-x  #显示后台运行进程的参数!

ps -aux  #查看所有的进程
ps -aux|grep mysql  #查看MySQL相关的进程
ps -aux|grep redis  #查看redis相关的进程

	|    #在Linux中表示 管道符 
	grep #查找文件中符合条件的字符串!

ps -ef  #可以查看到父进程的信息
ps -ef|grep mysql 

进程树
pstree -pu #查看目录树结构
	-p  #显示父id
	-u  #显示用户组

kill #结束进程
kill -9 进程id	#强制终止
top		#查看动态/执行进程状态(类似于任务管理器)

PID to kill	 进程ID	#要杀死进程ID

netstat -anp	#查看系统网络情况
		-an		#按一定顺序排列输出
		-p		#显示哪个进程在调用
netstat -anp |grep	mysql

10、压缩和解压缩

gzip			#用于压缩文件
		gzip 文件		#只能将文件压缩为  *.gz文件	不保留原来的文件
		
gunzip		#用于解压缩
		gunzip	文件.gz		#解压文件

在这里插入图片描述
在这里插入图片描述

zip		#压缩文件
	zip [选项]	xxx.zip		#将要压缩的内容 (文件或目录)
			-r	#递归压缩,即压缩目录
			
unzip	#解压	项目打包常用
		-d<目录>		#指定压缩后文件的存放目录

在这里插入图片描述
在这里插入图片描述

tar  		# 打包指令,最后打包后的文件是 .tar.gz  文件
tar	[选项]	xxx.tar.gz	打包内容		#打包目录,压缩后的文件格式是.tar.gz
	-c		#产生.tar 打包文件

tar -zcvf myhome.tar.gz	/home/		#将home下的所有目录文件打包
tar -zxvf	a.tar.gz 		#将 a.tar.gz  解压到当前目录
tar  -zxvf	a.tar.gz  -C /home/	#将文件解压到 home目录

在这里插入图片描述
在这里插入图片描述

三、环境安装及项目部署

安装软件一般有三种方式: - rpm			-解压缩      -yum在线安装
  • rpm:一种用于互联网下载包的打包及安装工具,RedHat软件包管理工具。
rpm -qa | grep firefox		#查询已安装的 rpm列表可用于查询是否已经安装
rpm -q 软件包名			#查询软件包是否已经安装
rpm -qi 软件包名			# 查询软件包信息
rpm -e 软件包名[firefox]		# 卸载rpm包
rpm -ivh				#安装
  • 解压缩:下载 .tar.gz 软件安装文件,解压即可

  • yum在线安装:一个shell前端软件包管理器,基于RPM包管理,能从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次性安装所有的依赖包。前提是必须联网

yum list|grep xx 软件列表		#查询yum服务器是否有需要安装的软件
yum install xxx					#下载安装

1、JDK安装

JDK安装运用 rpm 方式安装:

1、下载rpm包,并上传到Linux
jdk-8u221-linux-x64.rpm

2、查询是否已经安装jdk
java -version			#查看Java版本
rpm -qa | grep jdk		#查询已安装的Java rpm列表
若已经安装,需要卸载
rpm -e --nodeps jdk1.8-1.8.0_221-fcs.x86_64		#强制卸载
卸载完后,即可安装jdk

3、安装Java环境
rpm -ivh jdk-8u221-linux-x64.rpm

4、配置环境变量:				/etc/profile
vim /etc/profile

在文件最后添加一下配置:

JAVA_HOME=/usr/java/jdk1.8.0_221-amd64
CLASSPATH=%JAVA_HOME%lib;%JAVA_HOME%/jre/lib
PATH=$JAVA_HOME/bin;$JAVA_HOME/jre/bin
export PATH CLASSPATH JAVA_HOME

#跟windows配置一样配置jdk、jre

	

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意: 再次连接(重新连接服务器)后发现输入Linux命令如 ls,vim等出现错误,形如:-bash: ls: command not found。 解决办法是:先执行以下命令

export PATH=/bin:/usr/bin:$PATH

然后修改jdk的配置为

vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_221-amd64
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
export PATH CLASSPATH JAVA_HOME JRE_HOME

最后执行配置文件

source /etc/profile

2、MySQL安装

MySQL安装会用到三种方式,可先安装tomcat,了解相关操作:

1、下载mysql的 x.rpm-bundle.tar 包,并上传到Linux
mysql-5.7.31-1.el7.x86_64.rpm-bundle.tar

2、查看是否已经安装mysql
rpm -qa|grep mysql
若安装需卸载
rpm -e --nodeps mysql-libs-....

3、解压上传的压缩文件
tar -xvf  mysql-5.7.31-1.el7.x86_64.rpm-bundle.tar	#注意不是.tar.gz文件,解压应该用 -xvf

解压后会有多个文件,实际只需要服务端和客户端两个:
mysql-community-client-5.7.31-1.el7.x86_64.rpm	#客户端
mysql-community-server-5.7.31-1.el7.x86_64.rpm	#服务端

4、安装MySQL的服务端
rpm -ivh mysql-community-server-5.7.31-1.el7.x86_64.rpm

5、安装MySQL的客户端
rpm -ivh mysql-community-client-5.7.31-1.el7.x86_64.rpm

在这会发现安装服务端和客户端都会报一些错误,导致无法安装成功

在这里插入图片描述

mysql-community-client(x86-64) >= 5.7.9 is needed by mysql-community-server-5.7.31-1.el7.x86_64
mysql-community-common(x86-64) = 5.7.31-1.el7 is needed by mysql-community-server-5.7.31-1.el7.x86_64
该错误说明,安装服务端需要先安装客户端,且还需要安装mysql-community-common-5.7.31-1.el7.x86_64.rpm

根据所缺安装mysql-community-common-5.7.31-1.el7.x86_64.rpm 出现警告,出现一些文件之类的,看似安装成功,实则没有
安装客户端,报错提示需先安装mysql-community-libs-5.7.31-1.el7.x86_64.rpm
安装mysql-community-libs-5.7.31-1.el7.x86_64.rpm报错	:
mysql-community-common(x86-64) >= 5.7.9 is needed by mysql-community-libs-5.7.31-1.el7.x86_64
mariadb-libs is obsoleted by mysql-community-libs-5.7.31-1.el7.x86_64
该错误说明:需要先安装common,且mysql-community-libs与mariadb-libs冲突
解决办法,先卸载mariadb-libs,然后再安装其他

以上都安装好后,最后安装 服务端,出现错误:
libnuma.so.1()(64bit) is needed by mysql-community-server-5.7.31-1.el7.x86_64
libnuma.so.1(libnuma_1.1)(64bit) is needed by mysql-community-server-5.7.31-1.el7.x86_64
libnuma.so.1(libnuma_1.2)(64bit) is needed by mysql-community-server-5.7.31-1.el7.x86_64
该错误指的是,这里缺少numactl,则需先安装numactl
之后再安装服务端,安装成功

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

最后整理可知,错误提示缺少什么就先装什么,与什么相冲突,就删除什么
#安装MySQL5.7步骤整理如下:

4、卸载mariadb-libs
rpm -e --nodeps mariadb-libs-1:5.5.68-1.el7.x86_64		#mariadb-libs文件名可在安装common的警告信息中找到

5、安装common
rpm -ivh mysql-community-common-5.7.31-1.el7.x86_64.rpm

6、安装libs
rpm -ivh mysql-community-libs-5.7.31-1.el7.x86_64.rpm

7、安装客户端client
rpm -ivh mysql-community-client-5.7.31-1.el7.x86_64.rpm

# 以上文件在解压的MySQL软件包中存在,用rpm方式安装即可
# libnuma在解压的软件包中没有,则使用yum方式安装

8、yum方式安装numactl
yum -y install numactl

9、安装服务端
rpm -ivh mysql-community-server-5.7.31-1.el7.x86_64.rpm

# 此时MySQL安装成功,还需进行以下配置

10、查看mysql服务状态
service mysqld status

11、启动mysql服务
systemctl start mysqld.service 	或	service mysqld start

12、查看当前MySQL登录密码
grep "password" /var/log/mysqld.log

13、登录mysql
mysql -u root -p

14、修改密码
set password = password('root');
#这里会提示密码设置不规范,不安全,建议密码大于8位,字母,数字,特殊符号混合,要有大写字母,尝试即可

# 此时已经可以在Linux中登录MySQL,正常使用MySQL了
# 如果还需要让外网访问,跟tomcat一样,需要让防火墙放行端口

15、退出登录mysql
exit 	或 	quit

16、配置mysql运行其他用户访问
#修改mysql库的user表,将host项,从localhost改为%。
#%这里表示的是允许任意host访问,如果只允许某一个ip访问,则可改为相应的ip
#比如可以将localhost改为192.168.1.123,
#这表示只允许局域网的192.168.1.123这个ip远程访问mysql。
mysql>use mysql;
mysql> update user set host = '%' where user = 'root';
mysql>select host, user from user;
mysql> flush privileges;		# 刷新MySQL的系统权限相关表

或者

(建议使用以下方法,此操作在原来的基础上添加授权,不会改变原有的数据)
# 设置远程访问(使用root密码):
grant all privileges on *.* to 'root'@'%' identified by 'root';
grant all privileges on 数据库名.表名 to '用户名'@'主机' identified by '密码'
	# 星号*代表所有的数据库,数据库表;
	# %代表允许任意host(主机)访问;
	# 密码尽量复杂,mysql可能不允许太简单的密码
# 若指向指定某一ip主机访问,可使用以下设置
grant all privileges on *.* to 'root'@'192.168.1.123' identified by 'root';
	# 此时可以在ip为192.168.1.123的主机上,以用户名和密码为root连接
flush privileges;	# 可先查询一下user表是否有刚授权的记录,若没有,执行该语句刷新

17、防火墙开发端口
# 可先在登录MySQL的时候,查询MySQL的端口号
show global variables like 'port';		#查看MySQL的端口号

firewall-cmd --zone=public --add-port=3306/tcp --permanent		#开端口命令
systemctl restart firewalld.service			#重启防火墙
firewall-cmd --list-ports	#查看端口信息,查看3306端口是否被放行

3、Tomcat安装

tomcat采用解压 .tar.gz 文件方式:

1、下载tomcat 的tar.gz包,并上传到Linux
apache-tomcat-9.0.50.tar.gz

2、解压这个文件
tar -zxvf apache-tomcat-9.0.50.tar.gz

3、启动tomcat测试!
./startup.sh	#执行		#若未配置环境变量需要进入到tomcat的bin目录下
./shutdown.sh	#停止

启动后,此时只能在Linux本地访问tomcat,外网如windows本机电脑仍不能访问
需让防火墙放行该端口号

4、防火墙放行端口号
firewall-cmd --state		#查看防火墙状态(是否开启)
# 若为	not running ,则
systemctl start firewalld.service			#开启防火墙
firewall-cmd --list-ports	#查看端口信息,查看8080端口是否被放行
#若未放行,则
firewall-cmd --zone=public --add-port=8080/tcp --permanent		#开端口命令
systemctl restart firewalld.service			#重启防火墙

再次查看端口信息可见8080端口已被开放,此时在外网可以访问

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
出现以下界面,说明tomcat安装成功且可在外网访问
在这里插入图片描述

systemctl status firewalld		#查看firewall服务状态
service firewalld start			#开启firewall服务
service firewalld restart		#重启firewall服务
service firewalld stop			#关闭firewall服务

chkconfig --list	#查看服务
chkconfig --list | grep mysql	#查看MySQL服务

chkconfig iptables on	#在所有运行级别下开启防火墙
chkconfig iptables off	#在所有运行级别下关闭防火墙

#查看防火墙规则
firewall-cmd --list-all			#查看全部信息
firewall-cmd --list-ports	#只查看端口信息
firewall-cmd --state		#查看防火墙状态(是否开启)

#开启端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent		#开端口命令
	命令含义:
	--zone		#作用域
	--add-port=8080/tcp		#添加端口,格式为:端口/通讯协议
	--permanent				#永久生效,没有此参数重启后失效

firewall-cmd --zone=public --remove-port=8080/tcp --permanent #关闭8080/tcp端口

systemctl start firewalld.service			#开启防火墙
systemctl restart firewalld.service			#重启防火墙

4、简单Javaweb项目部署

安装完jdk、MySQL、tomcat后,就可以在搭建一个Javaweb项目了。

1)准备一个在本地可以成功运行并访问的项目,将项目打包为war包:(注意:在打包之前将本地项目的jdk版本换成与Linux安装版本相同,不然可能会造成部署项目后访问404的问题;同时把配置文件中连接数据库的用户名和密码改为Linux连接数据库的用户名和密码)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2)导出war包:
在这里插入图片描述
在这里插入图片描述
等一会就可以在刚刚选择war包存放位置中找到war包。

3)将导出的war包,和该项目要连接的数据库的.sql文件,上传到Linux中tomcat的webapps目录下(其他目录也可以,但不会tomcat不会自动解压,上传文件可用xftp)
在这里插入图片描述

4)查看tomcat的webapps下有没有war包解压的对应文件,若没有,启动一下tomcat(运行tomcat的脚本)
./startup.sh	#执行		#若未配置环境变量需要进入到tomcat的bin目录下

5)进入到数据库,在Linux的MySQL中创建项目所要用的数据库
create database evaluation;		#创建数据库,数据库名要与本地使用的一样
use evaluation;					#使用该数据库
source /opt/apache-tomcat-9.0.50/webapps/evaluation.sql		#将上传的.sql的结构和数据存储到当前使用的数据库中

6)在本地访问该项目,即可访问成功
http://主机地址(服务器ip):端口号/项目名
http://159.75.220.138:8080/evaluation/

7)可进入到tomcat的server.xml文件中修改一些配置
 cd /opt/apache-tomcat-9.0.50/conf/server.xml

8)可在tomcat的logs看到一些日志信息的文件
catalina.out	#控制台输出信息文件
tail -f catalina.out 	#实时更新日志文件,访问项目,控制台输出可看到
Ctrl+c 是退出tail命令。

localhost_access_log.2021-07-22.txt		#该文件会记录当天项目访问的信息,如发送了一个post请求

注意:若出现访问项目后静态资源(如:css、图片等)无法访问,或失效的问题,检查一下浏览器访问的地址有没有项目名,若没有,则需要将项目中的路径都需要从当前项目下开始获取。 若是使用的是jsp,解决如下:

<%
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort() +request.getContextPath();
%>
<base href="<%=basePath %>">
然后引入静态资源如下:
<link href="<%=basePath %>/resource/css/course.css" rel="stylesheet">
或者使用
${pageContext.request.contextPath }
如:
<link href="${pageContext.request.contextPath }/resource/css/course.css" rel="stylesheet">

5、Maven安装

1、下载maven 的tar.gz包,并上传到Linux
apache-maven-3.5.4-bin.tar.gz

2、解压这个文件
tar -zxvf apache-maven-3.5.4-bin.tar.gz

3、配置文件
cd apache-maven-3.5.4/
cd conf

在这里插入图片描述
在这里插入图片描述

6、Redis安装

1、下载tomcat 的tar.gz包,并上传到Linux
redis-6.2.5.tar.gz

2、解压这个文件
tar -zxvf redis-6.2.5.tar.gz

3、进入到解压后的文件目录
cd redis-6.2.5

4、编译
make

5、安装
make install

6、进入到/usr/local/bin,可看到redis安装完成后的一些文件
cd /usr/local/bin

redis-benchmark :性能测试工具
redis-check-rdb :
redis-sentinel:redis集群使用
redis-check-aof :修复有问题的AOF文件
redis-cli   :客户端,操作入口
redis-server :redis服务启动命令

7、启动
前台启动 :redis-server		#ctrl + C 退出

后台启动:
进入到redis解压文件目录的,找到redis.conf修改
daemonize no 为
daemonize yes

进入到bin目录
cd /usr/local/bin
redis-server /usr/local/redis-6.2.5/redis.conf

ps -ef | grep redis		#查看redis进程

redis-cli			#通过客户端连接redis

/usr/local/bin/redis-cli

shutdown	/	exit	#关闭

8、修改配置文件
# 若要实现远程连接,找到bind,注释掉
bind 127.0.0.1 -::1		#只可本地连接
# 关闭保护模式,找到以下配置,将yes改为no
protected-mode yes		#开启保护模式

# 默认端口号6379
port 6379		# 若使用的是购买的服务器,建议启动redis服务之前更改端口号,不然很容易被攻击

#修改端口号后,连接
redis-cli -p 端口号

tcp-backlog 511	# backlog队列总和=未完成三次握手队列+已完成三次握手队列。
timeout 0		#永不超时
tcp-keepalive 300		#每隔三百秒检测是否活着
# requirepass foobared	# 找到这行注释可在下面设置密码如123
requirepass  123
#登录报错:NOAUTH Authentication required 表示要密码 则输入 auth 密码
auth 123

ps -ef | grep redis		#查看redis进程	id

kill -9 进程id		#杀死redis server进程

进入到bin目录重启redis
cd /usr/local/bin
redis-server /usr/local/redis-6.2.5/redis.conf


9、防火墙放行端口号
firewall-cmd --state		#查看防火墙状态(是否开启)
# 若为	not running ,则
systemctl start firewalld.service			#开启防火墙
firewall-cmd --list-ports	#查看端口信息,查看6379端口是否被放行
#若未放行,则
firewall-cmd --zone=public --add-port=6379/tcp --permanent		#开端口命令
systemctl restart firewalld.service			#重启防火墙

再次查看端口信息可见6379端口已被开放,此时在外网可以访问

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
redis的主从复制:

主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,master以写为主,slave以读为主。

原理:

  • 当从连接上主服务之后,从服务向主服务发送进行数据同步消息。
  • 主服务器接到从服务器发送过来的同步消息,把主服务器数据进行持久化,rdb文件,把rdb文件发送给从服务,从服务器拿到rdb文件进行读取。
  • 每次主服务器进行读写操作之后,和从服务进行数据同步。
配置主从复制(一主两从):
1、创建/myredis文件夹
mkdir myredis

2、复制redis.conf配置文件到文件夹中

3、配置一主两从,即创建三个配置文件redis6379.conf、redis6380.conf、redis6381.conf
vim redis6379.conf

#在redis6379.conf写入以下内容
include /myredis/redis.conf		#引入redis.conf配置文件中的公共部分
pidfile /var/run/redis_6379.pid		#pid文件位置
port 6379						#端口号
dbfilename dump6379.rdb			#rdb文件名称

#以同样的方式创建redis6380.conf、redis6381.conf
cp redis6379.conf redis6380.conf
#然后修改相关6379为6380

4、分别启动服务
redis-server /myredis/redis6379.conf
redis-server /myredis/redis6380.conf
redis-server /myredis/redis6381.conf

redis-cli -p 6379	#连接端口号为6379的服务

info replication	#打印主从复制的相关信息(查看主从)

# 此时可看到三个服务的角色都是主服务

5、将redis6379作为主服务,redis6380和redis6381作为从服务
#分别连接redis6380、redis6381,并执行以下命令
slaveof  ip  port  
slaveof 127.0.0.1 6379

#此时查看主从信息,可见6379服务下有两个从服务;

若途中从服务其中有一个挂掉了(如退出连接、关闭服务),且期间主服务又进行了写操作。
之后,再重新启动这个挂掉的从服务机,查看主从信息为主机,
即,从服务挂掉后重连接,需要重新配置主从关系,即执行命令
slaveof 127.0.0.1 6379
再查看该从服务数据,数据是直接从主服务复制过来的。

若途中主服务挂掉了(如退出连接)
此时查看从服务机的主从关系,可见从服务仍为从服务,且还认定之前的主服务机。重新连接主服务,主服务也还认可之前的从服务。

#反客为主
 slaveof no one 	#将从机变为主机

7、springboot项目部署

1)准备一个spring boot项目,将其jdk、mysql、redis都能连接到Linux上安装的环境,打包项目成jar包
在这里插入图片描述
然后在target包下生成有jar包

2)将打包的jar包上传到linux中
在这里插入图片描述

3)执行jar包

nohup java -jar xxx.jar &

# 可能会出现错误:nohup: ignoring input and appending output to ‘nohup.out’
可忽略该错误,按ctrl+C退出  或 用以下命令执行
nohup java -jar campusos-2.0.0-SNAPSHOT.jar > nohup.out 2>&1 &

在这里插入图片描述
在这里插入图片描述

4)开放端口

springboot项目配置文件中配置的端口号,在Linux中需放行
#如该项目的端口号为8888
firewall-cmd --state		#查看防火墙状态(是否开启)
# 若为	not running ,则
systemctl start firewalld.service			#开启防火墙
firewall-cmd --list-ports	#查看端口信息,查看8888端口是否被放行
#若未放行,则
firewall-cmd --zone=public --add-port=8888/tcp --permanent		#开端口命令
systemctl restart firewalld.service			#重启防火墙

5)在本地访问该项目端口号,即可访问成功

http://主机地址(服务器ip):端口号/项目名
http://159.75.220.138:8888

8、Nginx安装

Nginx详细笔记:Nginx基本入门

9、Docker安装

Docker详细笔记:Docker自学笔记

1、检测Centos版本
cat /etc/redhat-release				#版本不一样,安装命令可能不一样
CentOS Linux release 7.9.2009 (Core)

2、下载软件
yum -y install 包名			#安装命令
yum -y install docker

3、启动docker
systemctl start docker

4、查看docker服务状态
systemctl status docker

10、zookeeper安装

1、将下载的安装包上传到Linux服务器
apache-zookeeper-3.5.7-bin.tar.gz

2、解压这个文件
tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz
#可以给解压后的文件夹重命名
mv apache-zookeeper-3.5.7-bin/ zookeeper-3.5.7

3、进入解压后的文件
cd zookeeper-3.5.7/
	cd bin		#启动脚本文件
	cd conf		#配置文件
#修改配置文件的名称
mv zoo_sample.cfg  zoo.cfg

4、在解压文件目录下创建一个目录专门放zookeeper数据
mkdir zkData

5、修改配置文件
vim zoo.cfg

dataDir=/opt/zookeeper-3.5.7/zkData
clientPort=2181		#默认端口

6、启动服务
./bin/zkServer.sh  start

7、查看服务状态
./bin/zkServer.sh status

8、查看进程
jps
jps -l

9、客户端连接
./bin/zkCli.sh

10、退出
quit

四、shell编程

shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动、挂起、停止甚至编写一些程序。

shell是用户与Linux操作系统沟通的桥梁

1、shell脚本简单例子

	文件名 (后缀) 一般 以 .sh 结尾,以  #!/bin/bash  开头
	单行注释:  #
	多行注释:	:<<!    这里是注释    !

2、脚本的常用执行方式

  • 输入脚本的绝对路径或相对路径
    先赋予shell脚本文件 +x 权限,再执行
chmod u+x myShell.sh
chmod 744 myShell.sh

在这里插入图片描述在这里插入图片描述

  • sh 命令 或 bash 命令运行(不需要权限),不推荐使用
    在这里插入图片描述

3、shell变量

Shell变量分为:系统变量  和  用户自定义变量。
系统变量:$HOME 、$PWD、$SHELL、$USER     (可直接使用,如:echo  $HOME)
#!/bin/bash

echo "hello world!"
echo "PATH=$PATH"	#输出系统变量
echo "user=$USER"

在这里插入图片描述

set # 显示当前shell中所有变量

shell变量的自定义(基本语法):

  • 定义变量:变量=值
  • 撤销变量:unset 变量
  • 声明静态变量:readonly 变量 (注意:不能unset)

shell变量定义规则:

  • 变量名可以由字母、数字和下划线组成,但不能以数字开头
  • 等号两边不能有空格
  • 变量名称一般习惯为大写
#!/bin/bash
# echo "hello,world"
A=100                   #定义一个变量
echo "A=$A"             #输出一个变量
unset A                 #撤销一个变量
echo "A=$A"

-----------
readonly  A=99          #定义一个静态变量
echo "A=$A"

unset A                 #撤销一个静态变量(错误操作)
echo "A=$A"


在这里插入图片描述在这里插入图片描述
在这里插入图片描述
将命令的返回值赋给变量

  • A= ’ ls-la ` 反引号,运行里面的命令,并把结果返回给变量A
  • A=$(ls-la) 等价于 反引号
    在这里插入图片描述
    在这里插入图片描述

4、设置环境变量

基本语法:

  • export 变量名=变量值 (将shell变量输出为环境变量)
  • source 配置文件 (将修改后的配置文件信息立即生效,类似于刷新)
  • echo $变量名 (查询环境变量的值)
TOMCAT_HOME=/opt/tomcat		#定义一个自己的环境变量
export  TOMCAT_HOME		#输出环境变量

#保存文件后,刷新,然后可以直接在命令行查看 环境变量的 值
echo $TOMCAT_HOME		#查看环境变量的值

5、位置参数变量

当执行一个shell脚本时,如果希望获取到命令行的参数信息,可以使用位置参数变量

基本语法:

  • $n : n为数字,$0代表命令本身,$1~$9代表第一到第九个参数,十以上的参数,需要用大括号包含,如${10}
  • $* : 代表命令行中所有的参数,把所有的参数看成一个整体
  • $@ : 代表命令行中所有的参数,但 把每个参数区别对待
  • $# : 代表命令行中所有参数的个数
#!/bin/bash

# 获取到各个参数
echo "$0 $1 $2"		# $0代表命令本身,$1~$9代表第一到第九个参数
echo "$*"		# 代表命令行中所有的参数
echo "$@"		# 代表命令行中所有的参数
echo "参数个数=$#"	# 代表命令行中所有参数的个数

在这里插入图片描述

6、预定义变量

shell设计者事先已经定义好的变量,可以直接在shell脚本中使用

基本语法:

  • $$ : 当前进程的进程号 (PID)
  • $! : 后台运行的最后一个进程进程号 (PID)
  • $? :最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体哪个值,由命令自己决定),则证明上一个命令执行不争取了。
#!/bin/bash
echo "当前的进程号=$$"
# 后台的方式运行 myShell.sh
./myShell.sh &
echo "最后一个进程的进程号=$!"
echo "执行的值=$?"
                  

在这里插入图片描述

7、运算符

基本语法:

  1. “$((运算符))” 或 “$[运算符]”
  2. expr m + n (注意:expr运算符间要有空格
  3. expr m - n
  4. expr \* ,/,% =》 乘、除、取余
#!/bin/bash

# 第一种方式 "$((运算符))"

RESULT1=$(((2+3)*4))
echo "result1=$RESULT1"

# 第二种方式  "$[运算符]"

RESULT2=$[(2+3)*4]      # 推荐使用
echo "result2=$RESULT2"

# # 第三种方式 使用expr
TEMP=`expr 2 + 3`       # 注意是反引号引起来
RESULT3=`expr $TEMP \* 4`
echo "result3=$RESULT3"

# 求两个参数的和
SUM=$[$1+$2]    #命令行输入的两个参数
echo "SUM=$SUM"

在这里插入图片描述
在这里插入图片描述

8、shell条件判断

基本语法:

  • [ condition ] : 非空返回true,可使用 $? 验证(0为true,大于1为false)【注意 condition 前后都要有空格】
  • 常用的判断条件
    1)两个整数的比较
    =		字符串比较
    -lt	 	小于 (less than)
    -le		小于等于(less than or equal) 
    -gt		大于  (greater than)
     -ge		大于等于 (greater than or equal)  
     -eq		等于
     -ne 		不相等(not equal)
    
    2)按文件权限进行判断
    -r		有读的权限
    -w		有写的权限
    -x		有执行的权限
    
    3)按照文件类型进行判断
    -f		文件存在并且是一个常规的文件
    -e 		文件存在
    -d		文件存在并是一个目录
    
#!/bin/bash

# 1、判断“ok”是否等于“ok”

if [ "ok" = "ok" ]  # = 字符串比较
then
        echo "equal"
fi

# 2、判断23是否大于等于22

if [ 23 -gt 22 ]
then
        echo "大于"
fi

# 3、判断一个文件是否存在

if [ -e /home/test.txt ]
then
        echo "存在"
fi
~     

在这里插入图片描述

在这里插入图片描述

9、流程控制

  • if 、else
#!/bin/bash
# 编写if else ,如果输出参数,大于等于60,输出及格了;小于60,输出不及格

if [ $1 -ge 60 ]
then
        echo "及格了"
elif [ $1 -lt 60 ]
then
        echo "不及格"
fi

在这里插入图片描述
在这里插入图片描述

  • case
#!/bin/bash

# 当命令行参数是 1 时,输出“周一”,是 2 时,就输出“ 周二 ” ,否则其他

case $1 in
"1")
echo "周一"
;;
"2")
echo "周二"
;;
*)
echo "其他"
;;
esac

在这里插入图片描述
在这里插入图片描述

  • for循环
#!/bin/bash

# 1、打印命令行输入的参数

for i in "$*"    # $* 代表命令行所有的参数,当作一个整体
do
        echo "the num is $i"
done
echo "=============="

for j in "$@"   # $@代表命令行中所有的参数,但 **把每个参数区别对待
do
        echo "the num is $j"
done

在这里插入图片描述
在这里插入图片描述

#!/bin/bash

# 1、从1加到100的值输出显示
SUM=0
for((i=1;i<=100;i++))
do
        SUM=$[$SUM+$i]
done
echo "sum=$SUM"

在这里插入图片描述
在这里插入图片描述

  • while
#!/bin/bash

# 1、从命令行输入一个数n,计算1+2+...+n 的值是多少

SUM=0
i=0
while [ $i -le $1 ]
do
        SUM=$[$SUM+$i]
        i=$[$i+1]
done
echo "sum=$SUM"

在这里插入图片描述
在这里插入图片描述

10、读取控制台输入 read

read(选项)(参数)
选项:
	-p:指定读取值时的提示符;
	-t:指定读取值时等待的时间(秒),如果没有在指定时间内输入,就不等待了

参数:
	变量:指定读取值的变量名

#/bin/bash

#1、读取控制台输入一个num值

read -p "请输入一个数num1=" NUM1
echo "您输入的值是num1=$NUM1"

# 2、读取控制台输入一个num值,在10秒内输入
read -t 10 -p "请输入一个数num2=" NUM2
echo "你输入的值是num2=$NUM2"

在这里插入图片描述
在这里插入图片描述

11、shell函数

shell编程和其他编程语言一样,有系统函数,也可以自定义函数。
  1. 系统函数
    1)basename :返回完整路径最后 / 的部分,常用于获取文件名
basename [String][suffix]	# basename命令会删掉所有的前缀包括最后一个【/】,然后将字符串显示出来

在这里插入图片描述

dirname # 返回完整路径最后 / 的前面的部分 ,常用于返回路径部分
dirname	文件绝对路径  #从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分)

在这里插入图片描述

  1. 自定义函数
基本语法:
[function] funname[()]
{
    
	action;
	[return int;]
} 
调用函数直接写函数名:		funname[]
#!/bin/bash
#1、计算两个数的和 函数getSum
function getSum(){
    

        SUM=$[$n1+$n2]
        echo "和是=$SUM"
}

read -p "请输入第一个数n1:" n1
read -p "请输入第二个数n2:" n2

#调用getSum
getSum $n1 $n2

在这里插入图片描述
在这里插入图片描述
12、shell数据库备份案例

#!/bin/bash

# 完成数据库的定时备份
#备份路径
BACKUP=/home/shell/data/db      #  /data/backup/db
#当前的时间作为文件名
DATETIME=$(date +%Y_%m_%d_%H%M%S)
#可输出变量调试
echo ${DATETIME}        #大括号可不要

echo "====开始备份==="
echo "====备份的路径是 $BACKUP/$DATETIME.tar.gz"

#主机
HOST=localhost
#用户名
DB_USER=root
#密码
DB_PWD=root
#备份数据库名
DATABASE=atguiguDB
#创建备份的路径
#如果备份的路径文件夹存在,就使用,否则就创建
[ ! -d "$BACKUP/$DATETIME" ] && mkdir -p "$BACKUP/$DATETIME"
#执行mysql的备份数据库指令
mysqldump -u${DB_USER} -p${DB_PWD} -- host=$HOSST $DATABASE | gzip > $BACKUP/$DATETIME/$DATETIME.sql.gz
#打包备份文件
cd $BACKUP
tar -zcvf $DATETIME.tar.gz $DATETIME
#删除临时文件
rm -rf $BACKUP/$DATETIME

#删除10天前的备份文件
find $BACKUP -mtime +10 -name "*.tar.gz" -exec rm -rf {
    } \;
echo "===备份成功===="

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43763430/article/details/118500438

智能推荐

静态链表(初始化,插入,删除)C语言实现_c++静态链表-程序员宅基地

文章浏览阅读637次,点赞3次,收藏8次。动态链表就是用数组描述的链表(这种描述方法叫游标实现法),我们让数组的每个元素都由一个结构体组成,结构体有两个成员,data和cursor,而cursor就相当于链表的next指针,用来存放后继元素在数组中的下标。_c++静态链表

php酷狗音乐API接口,酷狗音乐抓取api-程序员宅基地

文章浏览阅读1k次。关键词抓取歌曲列表,获取hashhttp://mobilecdn.kugou.com/api/v3/search/song?format=json&keyword=%E6%88%91%E4%BB%AC%E4%B8%8D%E4%B8%80%E6%A0%B7&page=1&pagesize=20&showtype=1{"status":1,"error":"","dat..._r=play/getdata

华为云云耀云服务器L实例评测|在Docker环境下部署Mysql数据库_华为云 httpd+mysql实例-程序员宅基地

文章浏览阅读659次,点赞3次,收藏3次。华为云云耀云服务器L实例评测|在Docker环境下部署Mysql数据库_华为云 httpd+mysql实例

python模型持久化_Python模型本地持久化存储-程序员宅基地

文章浏览阅读295次。Python模型本地持久化存储通常我们线下训练好的模型,部署到线上运行,这就需要把模型进行本地硬盘持久化,比如保持到文件中,然后再在其他主机上导入内存进行分类和预测。下面就介绍几种模型持久化存储方法。1. pickle模块pickle是python标准模块,一种标准的序列化对象的方法。你可以使用pickle操作来序列化你的任何类对象,当然也包括机器学习模型,保存这种序列化的格式到一个文件中。需要的..._pytorch 网络模型持久化存储

如何判断一段程序是由C++编译还是C编译-程序员宅基地

文章浏览阅读3.1k次,点赞3次,收藏12次。(1)如果是要你的代码在编译时就发现编译器类型,就判断_cplusplus或_STDC_宏,如果是一个C文件被编译,那么_STDC_就会被定义,_STDC_是预定义宏,当它被定义后,编译器将按照ANSIC标准来编译C语言程序。通常许多编译器还有其他编译标志宏。#ifdef __cpluspluscout<<"c++";#elsecout&l..._判断一段程序是由c

win7家庭版桌面没有计算机图标,win7系统桌面和控制面板里都没计算机图标的解决方法...-程序员宅基地

文章浏览阅读525次。很多小伙伴都遇到过win7系统桌面和控制面板里都没计算机图标的困惑吧,一些朋友看过网上零散的win7系统桌面和控制面板里都没计算机图标的处理方法,并没有完完全全明白win7系统桌面和控制面板里都没计算机图标是如何解决的,今天小编准备了简单的解决办法,只需要按照1.首先,进入win7家庭普通版操作系统,点击“开始”按钮 2.点击开始按钮弹出如下对话框,大家都不陌生。大家把鼠标放在计算机按钮上,右..._win7家庭版不显示电脑桌面图标

随便推点

嵌入式 CC2543 RF中断详解_网程里254c3f-程序员宅基地

文章浏览阅读1.3k次。芯片是TI CC2543 因为公司要求,选定的芯片是TI 的CC2543,这款芯片很少人用,资料也就是官方的资料和例程,下面是我自己根据这几天看的例程,总结一下,如果哪里不对,欢迎大家斧正。下面用的是TI给的例程,GenericBroadcast 程序。_网程里254c3f

iOS视图控制器<1>_ios 视差视图控制器。-程序员宅基地

文章浏览阅读425次。在iOS中,动态界面是通过视图控制器来管理的,视图控制器是UIViewController的实例。一个视图控制器管理一个单独的视图,当然,这个视图还有子视图。视图控制器的view属性指向它管理的视图,即视图控制器的主视图(main view)。视图控制器的主视图并不拥有一个直接指向管理它的视图控制器的指针,但是视图控制器是UIResponder,在响应者链中刚好处在它的视图之上,所以视图控制器就是视_ios 视差视图控制器。

计算机毕业设计Node.js+Vue家政预约系统(程序+源码+LW+部署)_基于vue和node.js的家用电器维修预约管理系统的设计与实现-程序员宅基地

文章浏览阅读150次。该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流项目运行环境配置:项目技术:Express框架 + Node.js+ Vue 等等组成,B/S模式 +Vscode管理+前后端分离等等。环境需要1.运行环境:最好是Nodejs最新版,我们在这个版本上开发的。其他版本理论上也可以。2.开发环境:Vscode或HbuilderX都可以。推荐HbuilderX;3.mysql环境:建议是用5.7版本均可4.硬件环境:windows 7/8/10 1G内存以上;_基于vue和node.js的家用电器维修预约管理系统的设计与实现

Android 10系统及以上IMEI的获取_android10获取设备mmei-程序员宅基地

文章浏览阅读2.1k次。IMEI是一个15位的数字标识,用于唯一标识移动通信设备,例如手机、平板电脑和调制解调器等。您可以通过拨打"*#06#"(或类似的代码)来查看您的设备的IMEI号码。且每个应用的Android ID都不一样,该Android ID除非进行恢复出产设置或者刷机,否则是一直不会改变,这是Google处于隐私考虑,提供给应用开发者一个临时长期的唯一识别码(广告ID)在Android10系统,正常情况下是不允许直接获取到IMEI,而是由系统生成一串虚拟的Android ID。_android10获取设备mmei

java exception 级别_Java异常体系概述-程序员宅基地

文章浏览阅读397次。Java的异常体系结构Java异常体系的根类是 Throwable, 所以当写在java代码中写throw抛出异常时,后面跟的对象必然是Throwable或其子类的对象。其中Exception异常是指一些可以恢复的异常, 例如常见的NullPointerException空指针异常。Error指的是一些致命的错误,无法通过程序代码手段恢复的异常,例如OutOfMemoryError内存溢出错误。u..._exception等级

MATLAB---matlab 中的bwlabel函数_matlab bwlabel函数-程序员宅基地

文章浏览阅读2.4k次,点赞2次,收藏5次。用法:L = bwlabel(BW,n) 返回一个和BW大小相同的L矩阵,包含了标记了BW中每个连通区域的类别标签,这些标签的值为1、2、num(连通区域的个数)。n的值为4或8,表示是按4连通寻找区域,还是8连通寻找,默认为8。 四连通或八连通是图像处理里的基本感念:8连通,是说一个像素,如果和其他像素在上、下、左、右、左上角、左下角、右上角或右下角连接着_matlab bwlabel函数

推荐文章

热门文章

相关标签