Linux入门 | 远程登录(xShell、xftp) | vi和vim编辑器 | 开机重启用户注销 | 用户管理 | |
---|---|---|---|---|---|
vim和linux安装 | 实用指令 | 定时任务调度 | 磁盘分区、挂载 | 网络配置 | |
linux目录结构 | 进程管理 | RPM和yum |
服务器领域、嵌入式领域(运行稳定,内核小、应用于机顶盒、数字电话、网络电话等)
基于linux的内核有很多发行版本,基于内核(二次开发)添加应用软件 Readhat centOS ubuntu、suse、中国(红旗Linux),真正使用的就是发行版本。
unix在前linux在后,windows系统使用linux需要安装虚拟机及centos镜像操作,或者有云服务器,利用远程登录工具操作linux系统。
在linux系统中,采用层级树状目录结构,在此结构中的最上层是根目录 “/”,然后在此目录下在创建其他的目录。在Linux世界中,一切皆文件
/ 根目录
/root===>/root/Desktop root系统管理员的目录 (重点目录)
/home 产生普通用户的家目录 (重点目录)
/opt 给主机安装的软件目录(重点目录)
/usr===> 用户安装过后的程序和文件都在这里 (重点目录)
usr/local 安装过后的软件的目录,一般通过编译源码方式安装的程序(重点目录)
/mnt 用户临时挂载别的文件系统在mnt (重点目录)
/ bin ( /usr/bin /usr/local/bin) 系统常用的指令在这里(cp mkdir 等) (重点目录)
/boot 系统启动需要加载的核心文件的位置 (重点目录)
/etc 存放配置文件的 (重点目录)
/var 这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件 (重点目录)
/tmp 存放临时文件
/sbin(/usr/sbin /usr/local/sbin) 系统管理员管理员使用的系统管理程序
/dev 管理设备 cpu、disk、dvd、usb 等硬件挂载到这个目录
/media 光驱u 盘识别
/lib 开机所需的动态库 .so
/selinux 关于安全的目录,能控制程序只能访问特定文件
不能动的目录
/proc 关于内存的映射
/srv 服务启动之后需要的数据
/sys 文件系统
vi和vim编辑器
vi或者vim编辑文件进入正常模式 直接输入i或者a 进入编辑模式 :或者/进入命令行模式 输入i插入 wq保存并退出 q 退出 u 复原上一步操作 yy 复制一行 dd 删除所在的一行 set nu 显示行号 shift+g 移动20行
开机重启用户注销
sync //把内存数据同步到磁盘(防止没有保存的数据丢掉) shutdown -h now // 立刻关机 shutdown -h 1 // 1分钟关机 shutdown -r now // 立刻重启 halt // 立刻关机 reboot //重启计算机 注:不管是重启系统还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中 切换用户:在原则上来说少用root账号登录,避免操作失误,可以利用普通用户登录,当发现权限不够时,使用su -用户名 的指令切换管理员身份 注销用户:在提示符下输入logout即可注销用户(图形化别下无效,在运行级别下有效(例如远程登录))
linux系统会有好多用户,当你是项目root用户的时候,不可能给用户分配最高权限
用户组,在linux有很多组,这是用户管理的设计,root可以随时切换其他用户的组
家目录 home ,用户登录时,会自动进入到自己的家目录
添加用户 useradd 用户名 useradd xm useradd -d /home/tiger //-d指定用户的家目录 useradd -g xm kaifa //创建用户直接指定到组 passwd 用户名 // 给用户指定密码 删除用户 userdel 用户名 userdel xm //删除用户但是保留家目录(一般保留) userdel -r xm // 删除用户同时删除家目录 查询用户信息 id root uid 用户的id号 gid 组id 组 = 0 属于哪个组 切换用户(高权限用户切换低权限用户不需要密码) su -用户名 需要返回原来用户 exit Linux的用户至少要属于一个组 用户组(类似一种角色,开发组,测试组) 增加组 groupadd 组名 删除组 groupdel 组名 创建用户直接指定到组 useradd -g xm kaifa 修改用户组 usermod -g 用户组 用户名 usermod -g ceshi xm 用户和组的相关文件位置及含义 用户配置文件(用户信息) /etc/passwd xm:x:200:520::/home/xm:/bin/bash 用户名:用户id:组id::家目录:所对应的解析器shell 组配置文件(组信息) /etc/group 组名:口令:组标识号:组内用户列表 口令(密码)配置文件 /etc/shadow
设计者设计了7个运行级别
0: 关机
1:单用户 (找回丢失密码,进入单用户不需要密码)
2: 多用户无网络服务
3:多用户有网络服务
4:保留
5:图形界面
6:重启
系统运行级别配置文件 /etc/inittab,常用的运行级别是3和5,多用户有网络服务和图形界面,要修改运行级别,修改配置文件
指定运行级别的指令 init [0,1,2,3,4,5,6]
运行级别能够找回root用户的密码
进入到单用户模式,然后修改root密码,因为进入单用户模式root不需要密码就可以登录
开机引导时,输入回车->看到界面输入e->看到一个界面,高亮第二行编辑内核在输入e->在这行最后输入1 回车->再次输入一个b,进入单用户模式,passwd root
当我们对指令不熟悉的时候,使用帮助指令
man 命令 man ls help 命令 help ls
显示当前目录的绝对路径(从根目录开始的路径)相对路径(从当前工作目录开始定位) pwd 显示当前目录所有文件 ls ls -a 显示所有文件包含隐藏文件 ls -l ll 显示权限等 ls -lh 显示文件大小的列表 切换目录 cd cd ~或者 cd 回到家目录 cd .. 回退目录 cd 绝对路径 cd 相对路径(写法不一,以当前目录为准) 创建文件夹 mkdir 名称 mkdir /home/dog //表示在home路径下创建dog文件夹 mkdir -p /home/dog/cat //一次性创建多级目录 删除文件夹 rmdir 名称 rmdir /home/dog //删除的是空目录,有内容删不掉 rmdir -rf /home/dog //删除非空目录 创建空文件 touch 文件名称 touch hello.txt touch hello1.txt hello2.txt 创建多个空文件 拷贝文件到指定目录 cp 源文件目录 目标目录 cp aaa.txt bbb/ //将当前目录的aaa.txt拷贝到bbb/目录下 cp -r test/ zwj/ //-r递归拷贝文件夹 \cp -r test/ zwj/ //如果重复强制覆盖 删除文件或者文件夹 rm -[rf]文件或者目录 -r 递归删除整个文件夹 -f 强制删除不提示 移动文件和重命名 mv oldName newName //重命名(相同目录) mv /temp/aaa.txt /home/ 移动文件 (不同目录) 查看文件 cat 文件名 cat -n 文件名 //显示行号 cat -n 文件名|more //显示行号分页显示 后边的more是管道命令 more 文件名 //以全屏的方式**分页**显示文件(space下一页,一行一行看回车,ctrl+B 向上看) less 文件名 // **分屏显示**,是按页加载的,对于大文件来说,速度比较快 输出重定向和追加指令 > >> ls - l > 文件 //将列表的内容写入文件中(覆盖) ls -l >> 文件 //将列表美容追加到文件末尾(不覆盖) cat 文件1> 文件2 //文件1的内容覆盖到文件2 echo “内容”>>文件 //追加内容到文件中 echo 输出内容到控制台 echo $PATH //控制台输出环境变量路径 显示文件开头内容 head 文件 //显示开头10行 head -n 5 文件 //看前5行 显示文件的后10行 tail 文件 // 最后10行 tail -n 5 文件 // 显示最后5行 tail -f 文件 **** 实时追踪该文档的所有更新,常常使用 软链接指令 相当于windows里的快捷方式,主要存放了链接指向其他文件的路径 ln -s 源文件目录 软链接名 ln -s /root aaa //创建一个软链接aaa指向/root cd aaa/ // 就是到root下,使用pwd 还是在链接目录 ll 在列表显示的为 aaa->/root 代表aaa就是一个软链接 删除软链接 rm -rf 链接名 查看系统执行过的历史命令 history //查看全部历史指令 history 10 查看最近10条指令 !180 // 执行编号为180的历史指令
显示当前日期 date 显示当前年份 date"+%Y" 显示月份 date"+%m" 显示天 date"+%d" 显示年月日时分秒 date"+%Y-%m-%d %H:%M:%S" 设置日期 date -s 字符串时间 以日历的方式显示时间 cal 显示当前日历 cal 2022 显示2022一年的日历
管道符|表示将前一个命令的处理结果输出传递给后面的命令处理 find指令 find 搜索范围 [选项] 文件 find /home -name hello.txt //在home目录下查找 文件名为hello的文件 find /opt -user root //按用户角色为root在opt下查找文件 find / -size +20M //查找系统下所有大于20M的文件 大于是+ 小于- 等于直接写 find / -name *.txt //查找所有txt locate 指令 locate 可以快速定位文件路径,利用系统中所有文件名称及路径的locate数据库实现快速定位 updatedb //第一次使用必须用这个指令建立locate数据库 locate hello.txt //查找hello.txt路径 grep指令和管道符号 (管道过滤查找) grep过滤查找 管道符|表示将前一个命令的处理结果输出传递给后面的命令处理 -n显示匹配行及行号 -i忽略大小写 grep yes 查找yes cat hello.txt | grep -n yes //查看结果给grep进行过滤查找 cat hello.txt | grep -i yes //查看结果给grep进行过滤查找
gzip/gunzip指令 gzip用于压缩文件,gunzip用于解压缩 gzip 文件 //将文件压缩为*.gz文件,不会保留原来的文件 gunzip 文件.gz // 解压缩命令 zip/unzip指令(对zip文件有用) zip压缩文件 unzip解压文件项目打包发布中很有用 zip -r 文件 //递归压缩 压缩成*.zip文件 unzip -d 指定解压到的目录 文件.zip tar指令 (使用频率最高)c是压缩 x是解压 tar既可以压缩也可以解压 tar指令最后打包的文件是.tar.gz的文件 tar -x 文件名 解压 -x为解压,其他四个zcvf为压缩 tar -zcvf a.tar.gz a.txt b.txt //将a.txt和b.txt压缩成为a.tar.gz tar -zxvf a.tar.gz //将a.tar.gz解压到当前目录 tar -zxvf a.tar.gz -C /home/aaa/ //将压缩包解压到home下的aaa文件夹 必不可少的参数 -C -zcvf -z 打包同时压缩 -c 产生.tar打包文件 -x 解压文件 -v 显示详细信息 -f 指定压缩后的文件名
linux每个用户必须属于一个组,不能独立于组外,在linux中每个文件有所有者所在组 其他组的概念
查看文件所有者所在组 ls -ahl 或者ll 查看文件所有者 第一个用户名就是文件的所有者,第二个就是文件的所在组 修改文件所有者 chown 用户名 文件名 // change owner chown admin01 hello.txt 组创建 groupadd 组名 useradd -g xm 组名 修改文件所在组 chgrp 组名 文件名 // change group chgrp root hello.txt 修改用户所在组 usermod -g 组名 用户名 // user modify usermod -d 目录名 用户名
权限就是文件或者目录的权限
权限详解(总共10位 0-9) -rw-r--r-- 第0位-代表文件的类型: -代表普通文件 d:代表是一个目录 l:代表软链接 c:代表字符设备(键盘鼠标) b:块文件(硬盘) 第1-3位确定所有者权限rwx(user) 第4-6位确定所有组拥有该文件的权限(group) 第7-9位确定其他用户拥有文件的权限 --- other -rw-r--r--.1 //1如果是文件表示硬链接数量,如果是目录代表子目录的个数 drwx------.4 admin staff 128B 12 21 2020 Pictures 时间是最后修改时间 大小如果是文件夹一律显示4096 rwx作用在文件上 (rwx的数字 r 4 w2 x 1) r读 可以查看 w写(可以修改不代表可以删除,删除的前提是对所在目录有写的权限) x可执行 rwx作用在目录上 r读 可以查看 w写 可以修改,目录内创建、删除、重命名目录 x可执行 可以进入该目录
chmod 通过chmod指令修改文件或者目录的权限+- =方式变更权限 u:所有者 g:所有组 o:其他人 a:(ugo的总和) chmod u=rwx,g=wx,o=x 文件或者目录 //chang modify chmod u-x 文件或者目录 // 所有者剪掉一个可执行权限 通过数字 chomd 777 文件或者目录 rwxrwxrwx 练习 // groupadd police // groupadd bandi // useradd -g jack police // useradd -g jerry bandi // touch jack.txt // chmod 640 jack.txt // reboot
任务调度:是指系统在某个时间执行的特定命令或程序
任务调度分类 : 1.系统工作,有些重要的工作必须周而复始的执行,如病毒扫描等 2.个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份
基本语法 crontab [] //选项 -e 代表编辑定时任务 -l 查看定时crond任务 -r删除当前用户的crontab任务 重启任务调度 service crond restart 先写一段脚本,配置任务调度即可,如果是简单的任务,可以不用编写脚本,直接在crontab中加入任务即可 案例 每个1分钟执行一段输出 crontab -e 1 * * * *ls -l /etc/>>tmp/to.txt 5个*的含义 // 第一个*代表 1小时中的第几分钟 0-59 // 第二个*代表 一天中的第几个小时 0-23 // 第三个*代表 一个月中的第几天 1-31 // 第四个*代表 一年中的第几个月 1-12 // 第五个*代表 一周中的星期几 0-7
分区的方式:(了解)
mbr分区:
gtp分区(目前使用最多)
linux来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构,linux中每个分区都是用来组成整个文件系统的一部分 linux采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来,这时要载入的一个分区将使它的存储空间在一个目录下获得(挂载) / 磁盘分区(硬盘) --------------------------------- | ...... 分区1 boot 分区2 linux采用挂载的方法,磁盘分区可以mount(挂载)unmount(卸载)在目录树(文件系统目录树)的某个目录下,操作文件系统目录就等同于操作挂载到该目录下的硬盘 在linux中对于硬盘的管理 linux硬盘分为IDE硬盘和SCSI硬盘,目前都是SCSI硬盘 如果是IDE 驱动标识为 “hdx~” 其中hd表明分区所在设备的类型, 对于SCSI硬盘则标识为 “sdx~” 其中sd表明分区所在的设备类型 x为盘号(a为基本盘 b为基本从属盘 c为辅助主盘 d为辅助从属盘) “~”代表分区,前四个分区用数字1-4表示,他们是主分区和扩展分区,从5开始就是逻辑分区例如 hdb2就代表第二个IDE硬盘上的第二个主分区或者扩展分区 查看分区挂载情况 lsblk (//谐音 老师不离开) 案例 增加一块硬盘2G ,挂载到home/newdisk 1、硬盘分区 fdisk /dev/sdb //进入帮助页面 n 新增分区 d 删除分区 w 写入并退出 p 显示磁盘分区 2、的硬盘格式化(如果不格式化就相当于买了房子不装修,不能进行数据存取) mkfs -t ext4 /dev/sdb1 //格式化ext4格式 3、挂载 mount /dev/sdb1 /home/newdisk // 重启就失效 4、自动挂载(永久挂载) 1、编辑文件 /etc/fstab ,这个文件记录了分区以及挂载点的情况 dev/sdb1 /home/newdisk ext4 defults 0 0 2、mount -a //auto 磁盘情况查询 查看系统所有硬盘的使用情况 df -lh 查询指定目录硬盘占用情况 du -ach --max-depth=1 /opt //查询目录占用的情况 深度1 统计home下文件夹下的文件个数 ls -l /home |grep "^-"|wc -l // 先列出列表,在过滤以-开头的文件,在使用wc进行统计 d就是目录个数 统计home下文件夹下所有的文件个数包含子目录 ls -lr /home |grep "^-"|wc -l // -r递归调用 以树的形式展示目录 tree
网络配置原理
虚拟机 NAT模式(网络环境)
linux 192.168.184.125
windows vmnet虚拟网卡 192.168.184.1 真实网卡 192.168.2.125 真实网卡通过网关连接外部inernet,他们之间构成了一个内部网络
编辑配置文件指定固定ip vim /etc/sysconfig/network-scripts/ifcf-eth0 //0代表第一个网卡 编辑内容 ONBOOT=yes //启用boot获取ip BOOTPROTO= static //指定以静态方式获取ip IPADDR= 192.168.184.130 //静态ip GATEWAY=192.168.184.2 //网关 DNS1=192.168.184.2 //与网关保持一致就行 重启网络服务 service network restart
进程就是对后台的服务进行管理,一般系统的服务都是在后台运行的,非常重要
ps 命令查看进程 ps -a 显示当前终端所有的进程信息 ps -u 以用户的格式显示进程信息 ps -x 显示后台进程运行的参数 ps -aux ps -a| more //分页查看 ps -aux | grep sshd //通过管道过滤 查看父进程 ps -ef | grep XXX /-ef 全格式显示 终止进程 kill和killall kill [选项] 进程号 killall 进程名称 // 直接杀掉父进程 强制杀掉一个终端 -9 kill -9 进程号 以树来展示进程信息 pstree -p //以进程号展示 pstree -u //以用户进行展示 服务管理 (与进程不一样,服务跑起来才会有进程) service systemctl service 服务名 [start|stop|restart|reload|status] 在centOS7.0之后不再使用service,而是systemctl systemctl 服务名 [start|stop|restart|reload|status] 查看防火墙的状态 systemctl iptables status //防火墙只有22号端口是打开的 开启防火墙 systemctl iptables start 关闭防火墙 systemctl iptables stop windows可以通过telnet检测linux某个端口是否在监听,并且可以访问 telnet ip 端口 查看系统目前有哪些服务 /etc/int.d 文件 查看服务的运行级别 chkconfig --list |grep sshd chkconfig 服务名 --list systemctl启动的服务本次有效,设置自启动 chkconfig iptables on //关闭是off 进程监控指令(top) top 指令与ps进程类似,最大的不同是top可以在运行时更新正在运行的进程 top -[d|i|p] 交互指令 输入k 在输入进程号 q退出 查看系统网络服务情况(netstat)**********可以看到哪些外部地址远程登录此服务*********重要 netstat -p //显示哪个进程在调用 netstat -an //按顺序排序 netstat -anp |grep XXX
RPM和YUM
rpm是一种用于互联网下载包的打包及安装工具,他包含在某些linux的发布版本中(suse redhat centos),生成.RPM扩展名的文件,全称 ReadHat Manager,类似windows的setup.exe,这一文件格式名称虽然打上了RedHat的标志,但理念是通用的 查询已安装的rpm列表 rpm -qa|grep xx 查询软件包装了哪些文件 rpm -ql mysql 查询文件是属于哪个包 rpm -qf /etc/passwd 卸载软件包 rpm -e mysql 加nodeps代表强制删除 安装软件包 rpm -ivh mysql安装包路径 //i代表install v代表提示 h代表进度条 yum是一个shell前端软件包管理器,基于RPM包管理,目前使用比较多,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次按章所有依赖的软件包 查询yum服务器是否有需要安装的软件 yum list |grep XXX 安装指定的yum包 默认安装最新版 yum install xxx 安装JDK(java程序必须安装) 1解压缩到/opt 2配置环境变量配置文件 vim /etc/profile(重点目录) 输入大G 到末尾 3.JAVA_HOME = /opt/jdk.1.8.. //jdk的目录 4.PATH = /opt/jdk../bin:$PATH // 定位到bin 后边的:$PATH一定要写,这是代表把以前的path仍进去,就相当于windows的分号连接。 5.export JAVA_HOME PATH 6.需要注销用户环境,环境变量才会生效, 如果运行级别为 3 logout 如果为 5 点退出注销 在任何目录下都能java javac成功。 安装tomcat(springBoot内置tomcat,所以不需要tomact安装) 1、解压到opt 2、启动tomcat ./startup.sh 进入bin目录 3、开放端口 vim /etc/sysconfig/iptables //让防火墙放行8080
linux在服务器管理时,需要编写shell程序来进行服务器管理,shell是一个命令行解释器,它为用户提供了一个向linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动、挂起、停止甚至是编写一些程序
shell脚本的后缀一般是.sh
执行
1、给脚本文件一个可执行权限
chmod 755 文件
然后直接输入相对路径或者绝对路径执行
2、sh 路径执行 (这样可以不给执行权限)
变量
echo "Hello world" 每句语言结束后不需要写分号 注释用# shell的变量 shell变量分为系统变量和用户自定义变量 ######## 系统变量 $HOME $PWD $SHELL $USER 等 echo $USER 输出系统变量 显示当前shell的所有变量: set 变量的定义 变量=值 A=10 撤销变量 unset A 声明静态变量 注意不能unset readonly B 将命令的返回值赋值给变量(重点)######## A=`ls -la` 用反引号 A= $(ls -la) 等价于反引号 设置环境变量(重点)######## export 变量名=变量值 (将shell变量输出为环境) source 配置文件 (让修改后的配置信息立即生效)/etc/profile配置文件立即生效(环境变量配置文件) echo $变量名(查询环境变量的值) 位置参数,当我门执行一个shell脚本时,如果希望获取命令行的参数信息,就可以使用到位置参数变量(就是传参)######## sh ./myshell.sh 100 200 $n $* $@ $# $n n是数字 $0代表命令本身 $1-$9代表第一到第九个参数,十以上的参数用大括号包含 ${10} $* 是将所有参数看成一个整体 $@ 这个变量也代表命令行中的所有刹那火速,不过$@把每个参数区分对待 $# 这个变量代表命令行中所有参数的个数 注意:变量的命名不能以数字开头,等号两侧不能有空格,变量一般习惯为大写,在引用输出变量的时候用$ 预定义变量,就是shell设计者事先已经定义好的变量,可以直接在shell脚本中使用 ######## $$ 当前进程的进程号pid $! 后台运行的最后一个进程的进程号 $? 最后一次执行命令的返回状态,0为成功,非0不成功(取决于命令)
运算符条件判断
运算符 基本语法 $((运算式))或 $[运算式] expr m+n expr m-n expr \*,/,% 计算2+3 $((2+3)) $[2+3] expr 2+3 计算命令行两个参数的和 expr $1+$2 条件判断 if [ confition ] then fi 判断语句 = 字符串比较 整数之间的比较 -lt 小于 -le 小于等于 -eq 等于 -gt 大于 -ge 大于等于 -ne 不等于 按照文件权限判断 -r 读的权限 -w 写的权限 -x 执行的全新啊 按照文件的类型进行判断 -f 文件存在并且是一个常规文件 -e 文件存在 -d 文件存在并是一个目录 ok是否等于ok if [ "ok"="ok" ] then echo "equal" elif [ "a"="a" ] echo "a" fi 案例 如果输入的参数大于等于60 输入及格,小于60 输出不及格 if [ $1 -ge 60] then echo "及格" elif [ $1 -lt 60 ] echo "不及格" fi case语句 案例 如果命令行参数是1时,输出周一 是2时输出周二 其他情况输出other (两个分号代表结束,) case $1 in "1") echo "周一" ;; "2") echo "周二" ;; *) echo "other" ;; esac for循环语句(两种方式) 案例 打印命令行输入的参数 for i in "$*" //遍历$* 因为是整体只输出一次 do echo "the num is $i" done for j in "$@" //遍历$@ 因为不是整体有几个输出几次 do echo "the num is $j" done 案例 从1加到100输出展示 SUM=0 for(i=1;i<100 i++) do SUM = expr $SUM+i done echo $SUM while循环 案例从命令行输入1 计算1+n SUM=0 i=0 while [ $i -le $1 ] do SUM = expr $SUM+$i i=expr $i+1 done
读取控制台输入
read [-p|t] (参数) -p 指定读取值时的提示符 -t 指定读取值时等待的时间,如果没有在指定的时间内输入就不等待啦 案例 读取控制台输入一个num值 10s内输入 read -t 10 -p"请输入一个数num1=" NUM echo "你输入的值是num1=$NUM"
函数
shell编程和其它编程语言一样,有系统函数,也可以自定义函数,在系统函数中,介绍两个 basename 得到文件名部分 basename /home/aaa/text.txt 直接拿到test.txt basename /home/aaa/text.txt .txt 直接拿到text dirname 得到路径部分 dirname /home/aaa/text.txt 自定义函数 案例 计算输入两个参数的和 function getSum(){ SUM=expr $1+$2 echo "和是$SUM" } 调用 getSum $n1 $n2
需求 1、每天凌晨2.10备份数据库 xxxDB 到 / data/backup/db 2、备份开始和备份结束能够给出相应的提示信息 3、备份后的文件要求以备份时间为文件名,并打包成.tar.gz的形式 4、在备份的同时,检查是否有10天前备份的数据库文件,如果有就将其删除 将脚本放在/usr/sbin下 shell脚本编写 BACKUP=/data/backup/db DATETIME=$(date+%Y_%m_%d%H%M%S) echo "===============开始备份=================" echo "======备份路径是$BACKUP/$DATETIME.tar.gz" HOST= localhost DBUSER=root DBPWD=root DATABASE=xxx #判断路径是否存在 if [ !-d "$BACKUP/$DATETIME" ] then elif [ -d "$BACKUP/$DATETIME" ] mkdir -p "$BACKUP/$DATETIME" fi #执行备份数据库指令 mysql -u root -p **** 登录指令 -username -password mysqldump为备份指令 #先备份成一个文件夹,然后压缩在删掉 mysqldump -u$DBUSER -p$DBPWD --host=$HOST $DATABASE |gzip > $BACKUP/$DATETIME/$DATETIME.sql.gz #打包备份文件 cd $BACKUP tar -zcvf $DATETIME.tar.gz $DATETIM #删除临时目录 rm -rf $BACKUP/$DATETIME #删除10天前的文件 -mtime +10 在10天前的意思 -exec rm -rf {} \; 固定写法,执行删除找到的那些文件 find $BACKUP -mtime +10 -name "*.tar.gz" -exec rm -rf {} \; echo "==========备份成功============" 放到 crontab定时调度 crontab -e 10 2 * * * /usr/sbin/mysql_db_backup.sh