IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux基础 -> 正文阅读

[系统运维]Linux基础

笔记的目录是从原先的Typora文档中摘录下来,记录的是Linux的实操篇
大部分的内容根据B站韩顺平老师的讲课整理而成

目录

Linux实操篇

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G2FkHHfD-1629041254896)(D:\Linux\Pirctures\实操篇内容.png)]

实用小技巧

#后台运行的方式运行 myShell01.sh
./myShell01.sh & 这样就是后台运行

Ctrl + c 可以退出程序运行,比如在这里的后台运行 myShell01.sh 脚本时候,退不出来

Ubuntu终端的界面字体大小

放大: ’Ctrl’ + ’shift ’ + ‘ + ’
缩小:’Ctrl’ + ‘ - ’

5.1 vi和vim

正常模式:

在正常模式下我们可以使用快捷键

插入模式/编辑模式:

在模式下,程序员可以输入,按下 i, I , o, O , a , A 可以打开

命令行模式:

可以提供相关的指令,完成读取,存盘、替换

ll 把当前目录的文件显示出来

1. :wq!,写入保存并强制退出
2. :w,保存但不退出
3. :q,退出
4. :q!,强制退出,不保存
5. :e!,放弃所有修改,从上次保
           存文件开始再编辑命令历史

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UH6FsWdo-1629041254918)(D:\Linux\Pirctures\vim使用.png)]

5.2 快捷键使用案例

  1. 拷贝当前行 yy ,拷贝当前行向下5行 5yy ,并粘贴(字母p) 拷贝与删除都是在正常模式下进行操作
  2. 删除当前行 dd,删除当前向下的5行 5dd
  3. 在文件中查找某个单词(命令行模式下 /关键字,回车 查找,输入 n 就是查找下一个)查询
  4. 设置文件的行号,取消文件的行号 (命令行模式下,:set nu 和 :set nonu)
  5. 编辑 /etc/profile文件,使用快捷键到文档的最末行[G]和最首行[gg] 正常模式之下
  6. 在一个文件中输入“hello”,然后又撤销这个动作 u 正常模式之下
  7. 编辑 /etc/profile文件,并将光标移动到第20行 正常模式下 20 + shift + g

5.3 开机、重启和用户登录注销

shutdown -h now:立即关机

shutdown -h 1:表示1分钟之后关机

shutdown -r now:立即重启

halt :直接使用,关机

reboot:重启

sync:把内存的数据存入磁盘

当我们重启或者关机时,都应该先执行 sync命令,防止数据丢失

用户登录和注销

用户登录尽量不用 root用户,防止出现一些不必要的麻烦

注销,logout在这里指的是在登录xshell5的时候

5.3 用户管理

默认的终端打开所属的目录为 根目录下 名为home目录下的 以用户名命名的目录

Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统

Linux的用户需要至少要属于一个组

看网上的需要先转换用户权限 su root su = switch user

添加用户:useradd[选项] 用户名

一般没有指定新用户的位置

5.4 实用指令

使用小技巧:

可以通过上下箭头的键,调出原来的指令

5.4.1 指定用户级别

Linux设置了七个运行级别,配置文件在 /etc/inittab

0:关机

1:单用户(找回丢失密码)

2:多用户无网络服务

3:多用户网络服务 平常使用的最多(程序员使用)

4:系统未使用保留给用户

5:图形界面

6:重启

切换到指定运行级别的指令:init [0,1,2,3,5,6]

例题:找回丢失的密码,如果我们不小心忘记用户密码,怎么办

进入到单用户模式,然后修改 root 密码。因为进入单用户模式,root不需要密码就可以登录

开机 -> 在引导的时候输入回车键 ->看到一个界面输入 e -->看到一个新的界面,选中第二行(编辑内核kernel)

再输入e -->在这行的最后输入 1 ,再输入回车键 -->再次输入 b,这时就会进入单用户模式

这时就进入了单用户模式,可以修改密码,passwd

5.4.2 帮助指令

当我们对某个指令不熟悉时,我们可以使用Linux的帮助指令来了解这个指令的使用方法

man 获取帮助信息 例题:man ls 查看 ls

help命令 获取shell内置命令的帮助信息

例题:查看 cd的信息 help cd

5.4.3 文件目录类指令

5.4.3.1 pwd指令

pwd指令 :显示当前工作目录的绝对路径

5.4.3.2 ls指令

ls指令: 显示当前目录的文件或者目录

ls [选项] [目录或是文件]

常用选项: -a 显示当前目录所有的文件和目录,包括隐藏的

? -l 以列表的形式显示信息

应用案例:显示当前目录的所有信息 ls -la

5.4.3.3 cd指令

cd指令:切换文件指令

绝对路径:从根目录开始一点一点到牧目标位置

相对路径:从当前工作目录开始定位 … + /相同等级的文件夹 … 代表回到上一级路径

常用参数: cd : 或者 cd ~ 回到自己的家目录

? cd … 回到当前目录的上一级目录

假设当前目录在 user/lib文件,回到 /root目录 cd …/…/root 两次回到上级目录 相对路径写法

5.4.3.4 mkdir指令

mkdir指令:用于创建目录

mkdir /home/dog 创建单级目录,表示在/home目录下创建一个 dog目录

mkdir -p /home/animal/tiger 创建多级目录,此时home目录之下没有animal目录

5.4.3.5 rmdir指令

rmdir指令:删除空目录

rmdir /home/dog 删除dog空目录

5.4.3.6 touch指令

touch指令:创建空文件

touch 文件名 touch hello.txt

? touch ok1.txt ok2.txt 创建多个文件

5.4.3.7 cp指令

cp指令:拷贝指令

拷贝文件到指定目录 cp [选项] source dest

常用选项: -r 递归复制整个文件夹

  1. 拷贝当前目录下的aaa.txt文件到 当前目录的bbb目录之下 cp aaa.txt bbb/ 这里用的相对路径
  2. 递归复制整个文件夹,比如将/home/test整个目录拷贝到 /home/zwj目录之下 cp -r test/ zwj/ 这里也是先回到了hone目录之下,才使用的相对路径

如果还想再一次拷贝原来已经拷贝的文件,使用 \ 斜杠 \cp -r test/ zwj/ 这个指令是强制覆盖原来的文件

5.4.3.8 rm指令

rm指令:删除文件或目录 ,空的也可以删除

rm [选项] 要删除的文件或目录

常用选项:-r 递归删除整个文件夹

? -f 强制删除不提示

rm -rf ./test/* 表示删除 ./test 文件夹下的所有文件和目录,但是不删除 test文件夹本身

5.4.3.9 mv指令

mv指令:移动文件与目录或者重命名

mv oldName newName 重命名

mv /temp/movefile targetFile 移动文件或者目录(相当于剪切 cut)

将 /home/pig.txt 文件移动到 /root目录下

5.4.3.10 cat指令

cat指令:查看文件内容,相当于打开文件,但是只能浏览,不能修改

cat [选项] 要查看的文件

常用选项:-n 显示行号

cat -n /etc/profile | more 查看文件内容,经常和more指令在一起使用,more指令是为了分页显示

| 代表管道符

5.4.3.11 more指令

more指令: more 要查看的文件

more指令是一个基于VI编辑器的文本过滤器,它以全屏的方式按页显示文件的内容。

more指令中内置了很多快捷键,详见操作说明

操作功能说明
空白键(space)代表向下翻一页
Enter代表向下翻一行
q代表立刻离开more,不再显示该文件内容
Ctrl + F向下滚动一屏forward
Ctrl + B返回上一屏backward

5.4.3.12 less指令

less指令: less 要查看的文件

less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大。支持各种显示终端。

less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据需要加载内容,

对于显示大型文件具有较高的效率

操作功能说明
空白键(space)代表向下翻一页
pagedown向下翻动一页
pageup向下翻动一页
/字串向上搜寻[字串]的功能。n:向下寻找;N:向上寻找
?字串向下搜寻[字串]的功能。n:向下寻找;N:向上寻找
q离开这个less程序

5.4.3.13 > 和 >> 指令

重定向和追加指令:> 和 >> 两个指令

重定向指令 > 相当于写入的 r,只有覆盖,没有追加

追加指令就是相当于 r+ ,追加在原来文本的后面

基本语法:

ls -l > 文件 将列表的内容写入文件之中,如果文件不存在则自动创建

ls -al >> 文件 将列表的内容追加到文件之中,不存在则自动创建

cat 文件1 > 文件2 将文件1的内容覆盖到文件2中

echo “内容” >> 文件 将"内容"追加到文件末尾

5.4.3.14 echo指令

echo指令:输出内容到控制台

echo [选项] [输出内容]

经常用echo输出环境变量,输出当前的文件环境路径

echo $PATH

输出hello world

echo “hello world”

5.4.3.15 head指令

head指令:显示文件的开头,比如文件有2000行,默认查看文件前十行

head 文件

例如:查看 /etc/profile 文件的前五行 head -n 5 /etc/profile

5.4.3.16 tail指令

tail指令:显示文件尾部的内容,默认显示文件的最后10行

基本语法:

tail 文件 查看文件后10行内容

tail -n 5 文件 查看文件后5行内容

tail -f 文件 实时追踪文档的所有更新,工作经常使用

例如:实时监控 mydate.txt,看看到文件有变换时,是否看到,实时追加的日期

tail -f mydate.txt

然后 ls -l >> mydate.txt 回车之后,如果此时在监控这个 tail -f mydate.txt,会立即显示追加信息

5.4.3.17 ln指令

ln指令:软链接指令,也叫符号链接指令,类似于Windows的快捷方式。主要存放了链接其他文件的路径

基本语法:

ln -s [原文件或目录] [软链接名] 给原文件创建一个软链接

例如:在 /home目录下创建一个软链接 linkToRoot,连接到 /root目录

ln -s /root linkToRoot

即使 说 cd linkToRoot 本质上还是在 /home目录下(仍然在软链接目录下),类似桌面快捷键打开某个软件

删除软链接方式:rm -rf linkToRoot (不用待斜杠 linkToRoot/

5.4.3.18 history指令

history指令:查看已经执行过的历史命令,也可以执行历史指令

基本语法:history [数字选项] 加上回车就行

例如:

显示所有的历史命令 history

显示最近使用的10个指令 history 10

执行历史编号为5的指令 !5 叹号加上数字

5.4.4 时间日期类指令

5.4.4.1 date指令

date指令:显示当前日期 引号加不加都可以

基本语法:

date 显示当前的时间

date + %Y 显示当前年份

date + %m 显示当前月份

date + %d 显示当前是哪一天

date + “+%Y-%m-%d %H:%M:%S” (+不要忘记,-也可以不写)显示年月日时分秒

应用示例:

显示当前日期信息:date

显示当前年月日: date “+%Y-%m-%d”

显示当前年月日时分秒:date “+%Y年%m月%d日 %H:%M:%S”

? date +%Y-%m-%d %H:%M:%S 没有引号也可以

date指令:设置日期

基本语法:date -s 字符串时间

例如:设置系统当前时间,比如设置成 2020-11-11 11:22:22

date -s “2020-11-11 11:22:22”

5.4.4.2 cal指令

cal指令:查看日历指令

基本语法:cal [选项] (如若不加选项,显示本月日历)

例如:显示当前日历: cal

? 显示2020年日历 cal 2020

5.4.5 搜索查找类指令

5.4.5.1 find指令

find指令:将从指定目录向下递归遍历其各个子目录,将满足条件的文件或者目录显示在终端

基本语法: find [搜索范围] [选项]

选项说明:

选项功能
-name<查询方式>按照指定的文件名查找模式查找文件
-user<用户名>查找属于指定用户名的所有文件
-size<文件大小>按照指定的文件大小查找文件

例如:

1.按文件名:根据文件名查找 find /home -name hello.txt

? find / -name *.txt 查找 / 目录下 所有 .txt 类型的文件

2.按照文件拥有者查找 find /opt -user nobody

3.按照文件大小查找 find /home -size +2M 从/home目录下查找大于2M的文件

? +n -n n 大于 小于 等于

5.4.5.2 locate指令

locate指令:可以快速定位文件路径

locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻。

基本语法:locate 搜索文件

由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库

例如: updatedb

? locate hello.txt

5.4.5.3 grep指令和管道符号 |

grep指令:grep过滤查找,管道符 “|” 表示将前一个命令的处理结果输出传递给后面的命令处理

基本语法: grep [选项] 查找内容 源文件

常用选项: -n 显示匹配及行号

? -i 忽略字母大小写

例如:在hello.txt文件中,查找"yes",所在行,并显示行号

? cat hello.txt | grep -n yes

5.4.6 压缩和解压缩指令

5.4.6.1 gzip和gunzip指令

gzip指令用于压缩文件 : gzip 文件 (功能描述,只能将文件压缩成 * .gz类型的压缩文件)

gunzip指令用于解压缩文件 :gunzip 文件.gz gunzip hello.txt.gz

当我们使用gzip指令,不会保留原来的文件

5.4.6.2 zip和unzip指令

zip用于压缩文件,unzip用于解压的,在项目打包发布中很有用

基本语法:

? zip [选项] XXX.zip 要压缩的内容 功能:压缩文件

? unzip [选项] XXX.zip 功能:解压文件

zip常用选项:

? -r 递归压缩文件

ubzip常用选项:

? -d<目录> 指定解压后文件的存放目录

例如:

将 /home目录下所有文件压缩在 myPackage.zip中

zip -r myPackage.zip /home/

将myPackage.zip中的文件解压到 /opt/tmp目录下

unzip -d /opt/tmp/ myPackage.zip

5.4.6.3 tar指令

tar指令:打包指令,既可以压缩,也可以解压,根据参数来判定,最后打包的文件是 .tar.gz格式

基本语法: tar [选项] xxx.tar.gz 打包的内容 (功能描述:打包目录,压缩后的文件格式 .tar.gz)

选项说明:

选项功能
-c产生 tar打包文件
-v显示详细信息
-f指定压缩后的文件名
-z打包同时压缩
-x解包 .tar文件

应用举例:

  1. 压缩多个文件,将 /home/a1.txt和 /home/a2.txt压缩成 a.tar.gz 文件

? tar -zcvf a.tar.gz a1.txt a2.txt 因为有参数 -v ,所以会显示信息

  1. 将 /home文件夹压缩成 myHome.tar.gz 文件 tar -zcvf myHome /home/

  2. 将 a.tar.gz 解压到当前目录 tar -zxvf a.tar.gz

  3. 将 myHome.tar.gz 解压到 /opt/ 目录 tar -zxvf myHome.tar.gz -C /opt/

? 注意点:解压到某个目录,前提这个目录存在,而且指令要加上 参数 -C

5.4.7 修改用户密码

修改正在登录的用户的密码

passwd 回车 输入就行

修改其他的用户

passwd 用户名

不知道密码的情况下,在开机的时候,ESC键,一系列操作

5.5 组管理和权限管理

5.5.1 Linux组的基本介绍

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-faP8TRiy-1629041254925)(D:\Linux\Pirctures\组管理.png)]

5.5.2 组的相关指令和应用

文件 / 目录所有者

指令:ls -ahl 查看文件所有者

应用示例:创建一个组 police,再创建一个用户 tom ,然后使用 tom来创建一个文件tom.txt,看看情况如何

groupadd police

useradd -g police tom

passwd tom

touch tom.txt

ls -ahl

修改文件所有者

指令:chown 用户名 文件名

应用案例:使用 root创建一个文件 apple.txt ,然后将其所有者修改成 tom

touch apple.txt

chown tom apple.txt

注意:改完之后,apple.txt 文件的所有者变为了 tom,但是apple.txt的所在组还是 root用户所在的那个组

组的创建

groupadd 组名

创建一个组 monster

创建一个用户 fox,并放入到monster组中

groupadd monster

useradd -g monster fox

id fox 用来查看用户所在的组

文件/目录所在组

当某个用户创建了一个文件后,默认这个文件的所在组就是该用户的所在组

查看文件/目录所在组

基本指令:ls -ahl

修改文件所在的组

基本指令:chgrp 组名 文件名

例如:使用root用户创建文件 orange.txt,看看当前这个文件属于哪个组。然后将这个文件的所在组,修改到police组

touch orange.txt

ls -ahl

chgrp police orange.txt

其他组:除去文件的所有者和所在组的用户外,系统的比其他用户都是文件的其他组

改变用户所在组

usermod -g 组名 用户名

usermod -d 目录名 用户名 改变该用户登录的初始目录

例如:创建一个土匪组(bandit),将tom这个用户从原来的police组改变到 土匪组

groupadd bandit

usermod -g bandit tom

5.5.3 权限的基本介绍

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qHVyx7bS-1629041254936)(D:\Linux\Pirctures\权限详解.png)]

使用 ls 指令查看当前目录下的文件

文件的类型:在一行的最前面的参数

-:代表普通文件

d:代表目录

l:代表软链接

c:字符设备(键盘、鼠标)

b:块文件,硬盘

-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc

0-9位说明

第0位确定文件类型(d, -, c, b, l)

第1-3位确定所有者(该文件的所有者)拥有该文件的权限。 -User

第4-6位确定所属组(同用户组的)拥有该文件的权限。 -Group

第7-9位确定其他用户拥有该文件的权限。 -Other

rwx权限详解

rwx作用到文件

[r] 代表可读(read):可以读取,查看

[w] 代表可写(write):可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件。

[x] 代表可执行(execute):可以被执行

rwx作用到目录

[r] 代表可读(read):可以读取,ls查看目录内容

[w] 代表可写(write):可以修改,目录内创建+删除+重命名目录

[x] 代表可执行(execute):可以进入该目录

5.5.4 权限管理

修改权限-chmod

通过 chmod指令,可以修改文件或者目录的权限

第一种方式:+、-、= 加上 变更的权限

u:所有者, g:所在组 o:其他人(组) a:所有人(u、g、o的总和)

  • chmod u=rwx,g=rx,o=w 文件目录名 = 代表的是赋予的意思
  • chmod o+w 文件目录名 + 代表的是增加的意思
  • chmod a-x 文件目录名 - 代表的是去除的意思

案例演示:

  1. 给abc文件的所有者读写执行的权限,给所在组读执行权限,给其他组读执行权限
  2. 给abc文件的所有者除去执行的权限,增加组的写的权限
  3. 给abc文件的所有用户添加读的权限

chmod u=rwx,g=rx,o=x abc

chmod u-x,g+w abc

chmod a+r abc

如果想给某个文件夹下的所有文件,都将它们的权限进行改变,是不是要加上 -R

第二种方式:通过数字变更权限

r = 4 w = 2 x = 1 rwx = 4+2+1 = 7

chmod u=rwx,g=rx,o=x 文件名 相当于

chmod 751 文件名

案例演示:

将/home/abc.txt文件的权限修改为 rwxr-xr-x ,使用数字的方式实现

rwx = 4 + 2 + 1 = 7

r-x = 4 + 1 = 5

chmod 751 abc.txt

修改文件所有者-chown

递归修改所有文件

chown newowner file 改变文件的所有者

chown newowner:newgroup file 改变文件的所有者和所有组

-R 如果是目录,则使其下所有的子文件或者目录递归生效

案例演示:

请将 /home/abc.txt 文件的所有者修改成 tom 都要小心权限的限制,很重要

请将 /home/kkk目录下所有的文件和目录的所有者都修改成tom

chown tom /home/abc.txt

chown -R tom /home/kkk/

修改文件所在组-chgrp

基本语法:chgrp newgroup file 改变文件的所在组

案例演示:

请将 /home/abc.txt 文件的所在组修改成 shaolin(少林)

请将 /home/kkk 目录下所有的文件和目录的所在组都修改成 shaolin

chgrp shaolin abc.txt

chgrp -R shaolin /home/kkk/

来个权限实践作业

groupadd police

groupadd bandit

useradd -g police jack

useradd -g police jerry

useradd -g bandit xh

useradd -g bandit xj

jack创建一个文件,自己可以

chmod 640 jack.txt

chmod o=r,r=rw jack.txt

5.6 定时任务调度

定时的调用我们的脚本或者代码 crontab 机制

crond任务调度

基本介绍

编辑器一定要选择正确,如果是第一次使用的话,记得选择 vim.tiny 这个选项

crond 进行定时任务的设置

基本语法: crontab [选项]

常用选项: -e 编辑crontab定时任务

? -l 查询crontab任务,显示

? -r 删除当前用户的所有crontab任务

如果只是简单的任务,直接写在 crontab中

参数和入门

快速入门案例:

crontab -e 打开编辑模式,实际上是在 /etc/crontab 文件中

*1/ * * * * ls -l /etc/ >> /tmp/to.txt

ESC退出编辑模式

:wq 保存退出

**参数说明:**五个占位符的说明

项目含义范围
第一个 “*”一小时当中的第几分钟0-59
第二个 “*”一天当中的第几个小时0-23
第三个 “*”一个月当中的第几天1-31
第四个 “*”一年当中的第几个月1-12
第五个 “*”一周当中的星期几0-7(0和7都代表星期日)

特殊符号说明:

特殊符号含义
*代表任何时间。比如第一个 “*” 就代表一小时中每分钟都执行一次的意思。
,代表不连续的时间。比如 “0 8,12,16 * * * 命令” 代表在每天的8点0分,12点0分,16点0分都执行一次命令。
-代表连续的时间范围。比如 “0 5 * * 1-6 命令”,代表在周一到周六的凌晨5点0分执行命令
*/n代表每隔多久就会执行一次命令。比如 “*/10 * * * *”,代表每隔十分钟就执行一次命令

特定时间执行任务案例

时间含义
45 22 * * * 命令在22点45分执行命令
0 17 * * 1 命令每周一的17点0分执行命令
0 5 1,15 * * 命令每月1号和15号的凌晨5点0分执行命令
40 4 * * 1-5 命令每周一到周五的凌晨4点40分执行命令
*/10 4 * * * 命令每天的凌晨4点,每隔十分钟执行一次命令。就是在4点以内,每隔十分钟执行一次
0 0 1,15 * 1 命令每月一号和十五号,每周一的0点0分都会执行命令。注意:星期几和几号最好不要同时出现,因为它们定义的都是天。非常容易让管理员混乱

应用实例

案例1:每隔1分钟,就将当前的日期信息,追加到 /tmp/myDate文件中

  1. 先编写一个文件 /home/myTask1.sh 写入语句 date >> /tmp/myDate.txt
  2. 给 myTask1.sh 一个可以执行的权限 chmod 744 /home/myTask1.sh
  3. crontab -e 进入编辑模式
  4. 输入 */1 * * * * /home/myTask1.sh
  5. 保存退出 ESC :wq

案例2:每隔1分钟,将当前日期和日历都追加到 /home/myCal 文件中

  1. 先编写一个文件 /home/myTask2.sh 写入语句 date >> /tmp/myCal.txt 和 cal >> /tmp/myCal.txt
  2. 给 myTask2.sh 一个可以执行的权限 chmod 744 /home/myTask2.sh
  3. crontab -e 进入编辑模式
  4. 输入 */1 * * * * /home/myTask2.sh
  5. 保存退出 ESC :wq

案例3:每天凌晨2:00 将MySQL数据库 testdb,备份到文件/tmp/mydb.bak中

  1. 先编写一个文件 /home/myTask3.sh 写入语句 /user/local/mysql/bin/mysqldump -u root -proot testdb > /tmp/mydb.bak 其中 root表示当前用户,proot表示密码
  2. 给 myTask3.sh 一个可以执行的权限 chmod 744 /home/myTask3.sh
  3. crontab -e 进入编辑模式
  4. 输入 0 2 * * * /home/myTask3.sh
  5. 保存退出 ESC :wq

crond相关指令:

crontab -r 终止任务调度,可以使用指令重启

crontab -l,列出当前有哪些任务调度

service crond restart 重启任务调度

5.7 磁盘分区、挂载

5.7.1 分区基础知识

分区的方式:

mbr分区

最多支持四个主分区

系统只能安装在主分区

扩展分区要占一个主分区

MBR最多支持2TB,但拥有最好的兼容性

gtp分区

支持无限多个主分区

最大支持8E (1EB=1024PB,1PB=1024TB)

5.7.2 Linux分区

原理介绍:

  1. Linux无论有几个分区,分给哪一个目录使用,它归根到底就只有一个根目录,一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分。
  2. Linux采用了一种叫"载入"的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。

硬盘说明

  1. Linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘
  2. 对于IDE硬盘,驱动器标识符为"hdx~",其中 "hd"表示分区所在的设备的类型,这里是指IDE硬盘。“x"为盘号(a为基本盘,b为基本从属盘,c为辅助盘,d为辅助从属盘),”~"代表分区,前四个分区用数字1-4表示,它们是主分区或者拓展分区,从5开始就是逻辑分区。例如:hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示第二个IDE硬盘上的第二个主分区或拓展分区。
  3. 对于SCSI硬盘则标识 “sdx~”,SCSI是用 "sd"表示分区所在设备的类型,其余的和IDE硬盘一样

使用 老师不离开指令 lsblk -f 查看系统的分区和挂载情况

5.7.3 给Linux增加一块硬盘

增加一块硬盘 sdb1 1G 挂载在 /home/newDisk文件上

  1. 虚拟机添加硬盘

  2. 分区 fdisk /dev/sdb

  3. 格式化 mkfs -t ext4 /dev/sdb1 其中 ext4是分区类型

  4. 挂载(普通挂载只能一次,挂机之后就没了) 先创建一个文件夹 mkdir newDisk 挂载 mount /dev/sdb1 /home/newDisk

  5. 设置可以自动挂载(永久挂载,系统重启之后可以自动挂载)

    vim /etc/fsdb 进入文件,然后进行编辑,找到 UID,先把那一行复制,然后将原来的那一行修改

    /dev/sdb1 /home/newDisk ext4 …

5.7.4 磁盘查询指令

查询系统整体磁盘使用情况

基本语法:df -h

? df -lh

例如:查询系统整体磁盘使用情况

查询指定目录的磁盘占用情况

基本语法:du -h /目录

选项和参数 -s 指定目录占用大小总汇

? -h 带计量单位

? -a 含文件

? -max-depth=1 子目录深度

? -c 列出明细的同时,增加汇总量

查询 /opt目录占用磁盘情况,深度为1

du -ach --max-depth=1 /opt

工作中常用指令

rm copy tar grep 递归的时候 使用 -r

ls chmod chgrp 递归的时候使用 -R

  1. 统计/home文件夹下文件的个数
  2. 统计/home文件夹下目录的个数
  3. 统计/home文件夹下文件的个数,包括子文件夹里的
  4. 统计/home文件夹下目录的个数,包括子文件夹里的
  5. 以树状显示目录结构

grep 过滤指令 “^-” 匹配以 "-"开头的行

ls -l 以列的形式列出 -a 列出所有

wc -l 列出有多少行

wc -w 有多少字,字的区分是以空格、挑格或换行符

ls -l /home | grep "^-" | wc -l
ls -l /home | grep "^d" | wc -l
ls -lR /home | grep "^-" | wc -l
ls -lR /home | grep "^d" | wc -l
tree命令直接写

5.8 网络配置

5.8.1 基础介绍

常用指令 : ifconfig

5.8.2 查看网络IP和网关

查看网络虚拟编辑器

修改IP地址(修改虚拟网卡IP)

可以在虚拟机中修改 184 这个东西,对应Linux虚拟机和vmnet8虚拟网卡的IP

查看网关

网关是什么

网关英文名称为Gateway,又称网间连接器、协议转换器。网关在网络层以上实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。

网关既可以用于广域网互连,也可以用于局域网互连。 网关是一种充当转换重任的计算机系统或设备。使用在不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器,与网桥只是简单地传达信息不同,网关对收到的信息要重新打包,以适应目的系统的需求。

通俗点形容,从一个房间走到另一个房间,必然要经过一扇门。同样,从一个网络向另一个网络发送信息,也必须经过一道“关口”,这道关口就是网关。顾名思义,网关(Gateway)就是一个网络连接到另一个网络的“关口”。也就是网络关卡。

网关作用

简单来说,网关是设备与路由器之间的桥梁,由它将不同的网络间进行访问的控制,转换,交接等等。

比如有网络A和网络B,网络A的IP地址范围为“192.168.1.1~192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0。在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台交换机(或集线器)上,TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的主机处在不同的网络里。而要实现这两个网络之间的通信,则必须通过网关。如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机(如附图所示)。网络B向网络A转发数据包的过程。

查看Windows的vmnet8网络配置

  1. ipconfig 指令 查看,在cmd界面输入 ifconfig
  2. 界面查看

ping测试主机之间网络连通

基本语法:ping 目的主机(测试当前服务器是否可以连接目的主机)

ping www.baidu.com

5.8.3 Linux网络环境配置

自动连接

界面操作,选择 自动连接选项

缺点:Linux启动后会自动获取IP缺点是每次自动获取的IP地址可能不一样。这个不适应于做服务器,因为服务器的IP需要固定的。

指定固定IP地址

说明:直接修改配置文件来指定IP,并可以连接到外网,编辑 vi /etc/sysconfig/network-scripts/ifcfg-eth0

要求:将IP地址配置为静态的,IP地址为192.168.184.xxxx

5.9 进程管理

5.9.1 基本介绍

  1. 在Linux中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个ID号
  2. 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如www的服务器
  3. 每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前屏幕上可以进行操作的。后台进程则是实际在操作,但是由于屏幕上无法看到的进程,通常使用后台方式执行。
  4. 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才结束。

5.9.2 显示系统执行的进程

基本介绍:

ps指令是用来查看目前系统中,有哪些正在执行,以及它们执行的状况。可以不加任何参数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yZJHwll6-1629041254939)(D:\Linux\Pirctures\ps查看进程命令.png)]

字段说明
PID进程识别号
TTY终端机号
TIME此进程消耗CPU时间
CMD正在执行的命令或进程名
USER用户名称
%CPU进程占用CPU的百分比
%MEM进程占用的物理内存百分比
VSZ进程占用的虚拟内存大小(单位:KB)
RSS进程占用的物理内存大小(单位:KB)
STAT进程状态,s:睡眠,r:运行,n:表示进程拥有比普通优先级更低的优先级,z:耗死进程
START进程的启动时间
TT终端名称缩写

参数选项:

ps -a :显示当前终端的所有进程信息

ps -u :以用户的格式显示进程信息

ps -x :显示后台进程运行的参数

5.9.3 终止进程kill和killall

介绍:若是某个进程执行一半需要停止时,或是已经消耗了很大的系统资源时,此时可以考虑停止该进程

基本语法:

kill [选项] 进程号 (通过进程号杀死进程)

killall 进程名称 (通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)

常用选项:

-9 :表示强制杀死进程

例如:

一般先通过 ps -aux | grep xxxx 找到xxxx的指令的进程号

中断远程登录 sshd 的进程, kill 进程号 ,想要再次打卡的话,使用指令 service sshd start

中断多个gedit编辑器 killall gedit

强制杀掉一个终端:比如同时开启两个终端(Ctrl+Alt+T)

5.9.4 服务管理

服务的本质就是进程,但是在后台运行,通常会监听某个端口,等待其他程序的请求,比如MySQL,sshd,防火墙等。因此我们称为守护进程,是Linux中非常重要的知识点

**service管理指令:**Ubuntu和centos指令不一样

service 服务名 [start | stop | restart | reload | status]

查看当前防火墙的状态,关闭防火墙,开启防火墙

sudo ufw status: 查看防火墙状态,inactive是关闭状态,active是开启状态

sudo ufw enable:开启防火墙

sudo ufw default deny:启动默认防御,作用:关闭所有外部对本机的访问(本机访问外部正常)

sudo ufw disable:关闭防火墙

sudo ufw allow|deny [service]:禁用防火墙

sudo ufw allow 80:允许外部访问80端口,协议包含tcp和udp

sudo ufw allow 80/tcp:允许其它主机使用tcp协议访问本机80端口

sudo ufw delete allow 80:禁止外部访问80 端口

sudo ufw allow from 192.168.1.1:允许此IP访问所有的本机端口

sudo ufw deny smtp:禁止外部访问smtp服务

sudo ufw reject out smtp:禁止访问外部smtp端口,不告知“被防火墙阻止”

sudo ufw deny out to 192.168.1.1:禁止本机192.168.1.1对外访问,告知“被防火墙阻止”

sudo ufw delete allow smtp:删除上面建立的某条规则

sudo ufw delete deny 80/tcp:要删除规则,只要在命令中加入delete就行了

sudo ufw deny proto tcp from 10.0.0.0/8 to 192.168.0.1 port 22:要拒绝所有的TCP流量从10.0.0.0/8 到192.168.0.1地址的22端口

可以允许所有RFC1918网络(局域网/无线局域网的)访问这个主机(/8,/16,/12是一种网络分级):

sudo ufw allow from 10.0.0.0/8

sudo ufw allow from 172.16.0.0/12

sudo ufw allow from 192.168.0.0/16

 

实例:

1.设置允许访问 SSH
sudo ufw allow 22/tcp

2.设置允许访问 http
sudo ufw allow 80/tcp

3.设置允许访问 https
sudo ufw allow 443/tcp

4.设置允许访问 pptp
sudo ufw allow 1723/tcp

chkconfig指令:给每个服务的各个运行级别设置自启动/关闭

chkconfig --list | grep sshd grep 过滤,只关心 sshd的情况

chkconfig 服务名 --list 查看只关心 服务名的 情况

chkconfig --level 5 服务名 on / off

chkconfig --level 5 sshd off 解释:sshd在运行级别为5的时候,不要自启动

应用示例:

chkconfig --list

sudo sshd  status

chkconfig  --level  5   sshd   off

chkconfig  --level 5 ufw off       在运行级别为5的时候,关闭防火墙

chkconfig  ufw  off         在所有运行级别下关闭防火墙

5.9.4 动态监控进程

top 和 ps 命令很相似,它们都是用来显示正在执行的进程。top与ps最大的不同之处在于top在执行一段时间之后可以更新它正在运行的进程。

基本语法:

top [选项]

这些选项可以在 top 一起写,也可以先top之后,再输入这些选项,同样能够出现效果

操作功能
P以CPU使用率排序,默认就是此项
M以内存的使用率排序
N以PID排序
q退出top
监视特定用户
top   然后回车会出现进程的情况,如果此时再输入 u,会出现让你选择监视哪个用户的功能 user
                            如果此时输入 k ,意思是杀死哪个进程  kill      


5.9.5 监控网络状态

查看系统网络的状态 netstat,可以看到哪些IP与本机有连接

基本语法:

netstat [选项]

netstat -anp

-an 按一定顺序排列输出

-p 显示哪个进程在调用

例如:请查看服务名为sshd服务的信息

netstat -anp | grep sshd

5.10 RPM和YUM

Ubuntu中的RPM需要转换为 deb,

RPM包的管理

一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM拓展名的文件。

RPM是RedHat Package Manager的缩写,类似Windows下的step.exe,通用的工具。

rpm简单查询指令

查询已安装的RPM列表 rpm -qa | grep xxx 查询的名字

rpm -qi xxxx 查询包的信息

卸载 rpm包

rpm -e RPM包的名称

安装rpm包

参数说明 i – install v = verbose 提示 h = hash 进度条

rpm -ivh packageName.rpm

deb的使用

deb在Ubuntu中使用,等同于RPM包

deb包的各种指令
安装deb软件包
sudo dpkg -i xxx.deb

删除软件包
sudo dpkg -r xxx.deb

连同配置文件一起删除
sudo dpkg -r --purge xxx.deb
sudo dpkg –P xxx.deb

查看软件包信息
sudo dpkg -info xxx.deb

查看文件拷贝详情
sudo dpkg -L xxx.deb

查看系统中已安装软件包信息
sudo dpkg -l

yum管理使用

yum是一个shell前端软件包管理器。可以自动处理依赖关系

Yum在centos中使用较多,乌班图不用这个也许

基本指令:查询和安装

yum -list 列出所有信息

yum list | grep firefox 查看单独的软件信息

yum install software 安装命令

5.11 Shell使用

Shell是一个命令行解释器,他为用户提供了一个向Linux发送请求以便运行程序的界面系统级程序

Shell脚本执行方式

脚本以 #!/bin/bash 开头

需要可执行权限

编写一个脚本

输出 “Hello World!”

常用执行方式

方式1:(输入脚本的绝对路径或相对路径)

? 首先要赋予myShell01.sh脚本的 +x权限 chmod 744 myShell01.sh

? 执行脚本 直接路径就能执行 ./myShell01sh 或者 /home/wusuxia/myShell01.sh

方式2:(sh + 脚本) (不推荐)

? 不用赋予脚本 +x权限,直接执行即可

? sh ./myShell01.sh

Shell变量

Linux Shell的变量分为 系统变量和用户自定义变量

系统变量

例如:$PATH $USER $HOME $PWD $SHELL 等

显示当前shell 所有的变量 set

用户自定义变量

基本语法:

定义变量: 变量=值

撤销变量:unset 变量

声明静态变量:readonly 变量,注意:不能unset

变量定义的规则

变量名称可以由字母、数字、下划线组成,但是不能以数字开头

等号两侧不能有空格 name = “” 不能这样

变量名称一般习惯为大写

将命令的返回值赋给变量

A=`ls -l /home`   反引号  esc键下面的那个键
MY_DATA=$(date)   $加上() 也可以

?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kOth2fYy-1629041254941)(D:\Linux\Pirctures\命令结果给变量.png)]

设置环境变量

基本知识

基本语法:

  1. export 变量名=变量值 (将shell变量输出为环境变量)
  2. source 配置文件 (让修改后的配置信息立即生效)
  3. echo $变量名 (查询环境变量的值)

快速入门:

  1. 在/etc/profile 文件中定义 TOMCAT_HOME环境变量
  2. 查看环境变量TOMCAT_HOME的值
  3. 在另一个shell程序中使用TOMCAT_HOME

注意:在输出 JAVA_HOME 环境变量时,不需要让其生效

多行注释

单行注释 # 警号键

:<<!

代码块

!

位置参数变量

介绍:

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

比如:./myShell01.sh 100 200 ,这个就是一个执行shell的命令行,可以在myShell01.sh脚本中获取到参数信息

基本语法:

$n n为数字,$0 表示命令本身,$1 ~ 9 表 示 第 一 到 第 九 个 参 数 , 十 以 上 的 参 数 需 要 用 大 括 号 包 含 , 如 9 表示第一到第九个参数,十以上的参数需要用大括号包含,如 9{10}

? 这 个 变 量 代 表 命 令 行 中 所 有 的 参 数 , * 这个变量代表命令行中所有的参数, ?* 把所有的参数看成一个整体

$@ 这个变量代表命令行中所有的参数,不过 $@ 把每个参数区分对待

$# 这个变量代表命令行中所有参数的个数

实际案例:

编写一个shell脚本 positionPara.sh ,在脚本中获取到命令行的各个参数信息

vim positionPara.sh

#!/bin/bash
#获取到各个参数信息
echo "$0 $1 $2"
echo "$*"
echo "$@"
echo "参数个数=$#"

在shell终端输入
./positionPara.sh 10 90   接下来出现如下信息

./positionPara.sh 10 90
10 90
10 90
参数个数=2

shell预定义变量

基本介绍:

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

基本语法:

$$     获取当前进程的进程号
$!     获取后台进行的最后一个进程的进程号
$?     最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非        0(具体哪个数,由命令自己决定),则证明上一个命令执行不正确

简单使用:

#后台运行的方式运行 myShell01.sh
./myShell01.sh & 这样就是后台运行

Ctrl + c 可以退出程序运行,比如在这里的后台运行 myShell01.sh 脚本时候,退不出来

vim preVar.sh

#!/bin/bash

echo "$$"

#后台运行的方式运行 myShell01.sh
./myShell01.sh &           这样就是后台运行
echo "执行的值为:$!"


echo "$?"


Shell运算符

基本语法:

"$((运算式))" 或 "$[运算式]"

`expr m + n`          注意 expr 运算符间要有空格

`expr m - n`

`expr \*, / , %`         乘、除、取余


应用示例:

计算 (2 + 3) x 4

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ui6PK4S0-1629041254943)(D:\Linux\Pirctures\计算小案例.png)]

条件判断

基本语法:

[ condition ] (注意condition的前后要有空格)

#非空返回TRUE,可以使用 $? 验证 (0为TRUE,> 1为FALSE)

应用示例:

[ atguigu ] 返回TRUE

[] 返回FALSE

[ condition ]&&echo OK || echo notok 条件满足执行后面的语句

判断语句

两个整数的比较
=字符串比较
-lt   小于   [ 23 -lt 34 ]
-le   小于等于
-eq   等于
-gt   大于
-ge   大于等于
-ne   不等于

按照文件权限进行判断
-r    有读的权限   [ -r 文件 ]
-w    有写的权限
-x    有执行的权限

按照文件类型进行判断

-f    文件存在并且是一个常规文件
-e    文件存在                   [ -e 文件 ]
-d    文件存在并且是一个目录

应用示例:
 "ok" 是否等于 "ok"
 23 是否大于  22
 判断 /root/install.log 目录中的文件是否存在
 
 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zmO8QRSv-1629041254945)(D:\Linux\Pirctures\条件判断.png)]

流程控制

流程控制if

判断语句基本语法:

if [ 条件判断 ] then
     程序
fi

或者

if [ 条件判断 ]
then
	程序
elif [ 条件判断 ]
then
    程序
fi

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FrJQ7rAt-1629041254946)(D:\Linux\Pirctures\if判断.png)]

流程控制case

基本语法:

case $变量名 in
"值1")
如果变量的值等于值1,则执行程序1序1
;;
"值2")
如果变量的值等于值2,则执行程序2
;;
....省略其他分支
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac

案例:
当命令行参数是1时,输出"周一",是2时,输出"周二",其他情况输出 "other"

case $1 in
"1")
echo "Monday"
;;
"2")
echo "Thrusday"
;;
*)
echo "other"
;;
esac

循环

for循环

基本语法1:

for 变量 in 值1 值2 值3...
do
程序
done

for i in "$*"
do
	echo "the number is $i"         #这个循环只会执行一次,因为 $* 将参数作为一个整体
done


for j in "$@"
do 
	echo "the number is $j"         #这个循环会执行(参数个数)次,因为 $@ 将参数分开使用
done


基本语法2:

for((初始值;循环控制条件;变量变化))
do
程序
done

应用示例:
从1加到100的值输出显示 [这里可以看出 $*$@ 的区别]

SUM=0
for ((i=1;i<100;i++))
do
	SUM=$[$SUM+$i]  # 注意这里 使用中括号 []
done
echo "sum = $SUM"

while循环

基本语法:

while [ 条件判断 ]
do
程序
done

案例:从命令行输入一个数 n ,统计从 1 +...+ n 的值是多少?
SUM=0
i=0
while [ $i -le $1 ]
do
	SUM=$[$SUM+$i]
	i=$[$i++1]
done
echo "sum = $SUM"


读取控制台输入

在交互的过程中输入参数

基本语法:

read[选项](参数)

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

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

案例1:读取控制台输入一个 num 值
案例2:读取控制台输入一个 num 值,在10秒内输入



read -p "Please input your number: " NUM1

read -t 10 -p "Please input your number: " NUM2


函数

函数有两种:系统函数和自定义函数

系统函数

basename函数基本语法

功能:返回完整路径最后 / 部分,常用于获取文件名
basename [pathname][suffix]
basename [string][suffix]      功能描述:basename命令会删掉所有的前缀包括最后一个('/')字符
                                       然后将字符显示出来
选项:
suffix 为后缀,如果 suffix被指定了,basename会将pathname或string中的suffix去掉

应用示例:
请返回 /home/wusuxia/readDemo.sh 的 "readDemo.sh" 部分

终端直接输入指令
basename /home/wusuxia/readDemo.sh             得到 readDemo.sh
basename /home/wusuxia/readDemo.sh .sh         得到 readDemo

dirname 函数基本语法

功能:返回完整路径最后 / 的前面的部分,常用于返回路径部分

dirname 文件的绝对路径   功能描述:从给定的包含绝对路径的文件名中去除文件名(非目录部分),然后返回剩下                                的路径(目录部分)

dirname /home/wusuxia/readDemo.sh      返回 /home/wusuxia

自定义函数

基本语法:

[ function ] funname[()]
{
	Action;
	[return int;]
}

调用的时候直接写函数名:funname

案例:计算输入两个参数的和

function getSum(){
	SUM=$[$n1+$n2]
	echo "sum is = $SUM"
}

read -p "input the first number n1: " n1
read -p "input the second number n2: " n2

#调用函数  感觉很奇怪,和之前学的编程都不一样 ^<>^
getSum $n1 $n2

shell编程综合案例

需求分析:

  1. 每天凌晨2:10备份数据库 atguiguDB 到 /data/backup/db
  2. 备份开启和备份结束能够给出相应的提示信息
  3. 备份后要求以备份时间为文件名,并打包成 .tar.gz 形式,比如:2021-08-15_230201.tar.gz
  4. 在备份的同时,检查是否有10天前备份的数据库文件,如果有就将其删除
#set the path of backup
BACKUP=/data/backup/db

#set the current time as the name of file
DATETIME=$(date +%Y_%m_%d_%H%M%S)

echo "======== start backup ========"
echo "======== the path of backup is $BACKUP/$DATETIME.tar.gz"

HOST=localhost

DB_USER=wusuxia

DB_PAD=123456

DATDBASE=atguiguDB

#如果目录不存在就创建,
[ ! -d "$BACKUP/$DATETIME" ] && mkdir -p "$BACKUP/$DATETIME"

#执行备份指令
mysqldump -u${DB_USER} -p${DB_PWD} --host=$HOST $DATABASE | gzip > $BACKUP/$DATETIME/$DATETIME.sql.gz

#打包文件
cd $BACKUP
tar -zcvf $DATETIME.tar.gz $DATETIME

#删除临时文件
rm -rf $BACKUP/$DATETIME


#删除十天前的文件
find $BACKUP -mtime +10 -name "*.tar.gz" -exec rm -rf {} \;     #固定写法

然后再次使用 crontab -e 指令

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-16 12:07:58  更:2021-08-16 12:08:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 10:03:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码