date 显示当前时间
date +%Y 显示当前年
date +%m 显示当前月
date +%d 显示当前日
date "+%Y-%m-%d %H:%M:%S" 显示年月日时分秒date -s [timeString] 设置系统当前时间,如date -s "2023-02-27 16:50:12"cal 查看日历
cal [year] 显示n
shutdown 1分钟后关机
shutdown -h now 立即关机
shutdown -h [num] num分钟后关机
shutdown -r now 立即重启halt 立即关机
reboot 立即重启
sync 把内存的数据同步到磁盘
su [userName] 登录
su - root 切换为root用户logout [userName] 注销
运行级别说明
init [runLevel] 切换运行级别
CentOS 7及后续版本设置默认运行级别
systemctl get-default 查看当前默认的运行级别
systemctl set-default [TARGET.target] 设置默认运行级别multi-user.target:analogous to runlevel 3graphical.target:analogous to runlevel 5
(1)在开机界面按上下方向键结束读秒
(2)选择使用的一项,按E进入
(3)找到“Linux16”所在行,在行最后输入init=/bin/sh
(4)Ctrl+X启动,进入单用户模式
(5)执行mount -o remount,rw /
(6)执行passwd
(7)输入新密码,再次输入
(8)执行touch /.autorelabel
(9)执行exec /sbin/init(时间较长耐心等待),系统重启完成修改
pwd 显示当前工作目录的绝对路径
ls [选项] [目录]-a 显示当前目录所有的文件和目录包括隐藏的-l 以列表方式显示信息ll [目录] 以列表方式显示信息
cd [目录] 切换当前工作目录
cd ~ 回到当前用户的home目录
cd .. 回到上一级目录
mkdir [目录] 创建目录
mkdir -p [目录] 创建多级目录touch [文件名称] 创建空文件
rmdir [目录] 删除空目录
rm [选项] [目录] 删除文件或目录-r 递归删除整个文件夹-f 强制删除不提示
cp [source] [dir] 将文件source拷贝到dir中
cp -r [source] [dir] 将目录source递归拷贝到dir中
\cp -r [source] [dir] 将目录source强制覆盖到dir中不提示
mv [oldFileName] [newFileName] 文件重命名
mv [sourceFile] [target] 移动文件,若target是文件名则重命名
find [folder] [option] 在目录中查找-name [fileName] 查找文件名-user [userName] 查找指定用户名的所有文件-size [sizeRage] 查找该大小范围的文件(+n大于、-n小于、n等于)-type [fileType] 查找指定类型的文件-o/-a/-not 查找条件 或/且/非-exec [command] 查找后执行命令,{}表示find的查找结果updatedb 创建locate数据库(首次使用locate)
locate [fileName] 基于locate数据库查询文件的绝对路径grep [option] [content] [fileName] 在文件中查找内容-n 显示行号-i 忽略大小写-v 反向匹配(不包含)
cat [fileName] | grep [option] [content] 使用管道在文件中查找内容
find命令根据修改时间查找
find -[type][timeUnit] [timeRage]typea 访问时间(access)m 修改时间(modify)c 名字、权限的修改时间(status change)timeUnitmin 以分为单位time 以天为单位timeRagen 时间n以前+n 时间n以前-n 时间n以内例如
find /root -amin 10 查找/root目录下10分钟之前被访问过的文件
find /root -mtime 3 查找/root目录下3天之内被修改过的文件
find ./ -amin -120 | grep tar.gz 查找当前目录下两个小时之内创建的tar.gz文件
cat [option] [fileName] 查看文件内容-n 显示行号head [fileName] 显示文件开头部分内容,默认显示10行
head -n [num] [fileName] 显示文件的前num行tail [fileName] 显示文件末尾部分内容,默认显示10行
tail -n [num] [fileName] 显示文件的尾num行
tail -f [fileName] 实时追踪该文件的所有更新(Ctrl+C终止)
more指令是一个基于vi编辑器的文本过滤器,它以全屏方式按页显示文本文件内容,内置了若干快捷键
cat [fileName] | more
less指令用来分屏查看文件内容,但比more指令更强大。less指令显示多少加载多少,对于显示大型文件有较高效率。less内置了若干快捷键
less [fileName]
[command] > [fileName] 将command的执行结果写入到文件中(覆盖)
[command] >> [fileName] 将command的执行结果写入到文件中(追加)
软链接也称为符号链接,类似于windows里的快捷方式,主要存放了链接其他文件的路径
软链接也是文件
ln -s [source file/foler] [linkName] 给原文件创建一个软链接
history 查看所有历史命令
history [num] 查看最近执行的num条指令
![num] 执行历史编号为num的指令
gzip [fileName] 压缩文件为.gz文件
gunzip [fileName] 解压缩zip [option] [.zip] [file/folder] 压缩文件或目录-r 递归压缩,压缩目录
unzip [option] [zipFile] 解压文件或目录-d [targetFolder] 指定解压路径tar [option] [.tar.gz] [file/folder] 打包指令-c 产生.tar打包文件-v 显示详细信息-f 指定压缩后得文件名-z 打包同时压缩-x 解包.tar文件-C 指定解压路径
tar -zcvf [.tar.gz] [file1] [file2] ... 将文件打包并压缩为.tar.gz
tar -zxvf [.tar.gz] 解压到当前目录
tar -zxvf [.tar.gz] -C [targetFolder] 解压到指定路径
yum install tree 安装treetree [folder] 树状显示文件结构
(1)用户配置文件/etc/passwd,其格式为 用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
(2)口令配置文件/etc/shadow,其格式为 登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志。加密口令为!!表示未设置密码
(3)组配置文件/etc/group,其格式为 组名:口令:组标识号:组内用户列表
useradd [userName] 创建用户(默认home目录与用户名相同)
useradd -d [userHomeFolder] [userName] 创建用户并指定home目录
useradd -g [groupName] [userName] 创建用户并指定用户组(若不指定组则以用户名创建一个组并加入
userdel [userName] 删除用户,保留home目录(若被进程占用使用kill结束进程)
userdel -r [userName] 删除用户和home目录一般情况下建议保留home目录!!!
passwd [userName] 修改用户密码(没有用户名则给当前用户设置)usermod -g [groupName] [userName] 修改用户所在组
usermod -d [folder] [userName] 修改用户的home目录(前提是该用户拥有进入目录的权限)
id [userName] 查看用户信息(用户id,组id,组)who am i 显示第一次登录的用户名
whoami 显示当前用户
su - [userName] 切换登录用户
查看文件详细信息可以显示用户权限,如 -rwxrw-r–
chmod [option] [file/folder] 修改用户对文件的权限-R 递归设置目录下所有文件相同的权限option方式1:+ 增加权限,- 减少权限,= 赋予权限u 所有者,g 所有组,o 其他人,a 所有人例如 chmod u=rwx,g=rx,o=x hello.javachmod a+w hello.java
option方式2:r=4,w=2,x=1 每位数字位权限对应的数字之和有三位数字分别代表所有者的权限、所属组的权限、其他组用户例如 chmod 751 hello.java
如果出现某个文件一种权限已经设置,但是对应的用户仍然不能使用,需要查看所有对应上级的目录是否有这个权限,重启终端后即可生效
groupadd [groupName] 创建组
groupdel [groupName] 删除组
ls -ahl 查看所有文件的所有者及详细信息chown [userName] [file] 修改文件所有者
chown -R [userName] [folder] 递归修改目录下所有文件的所有者
chgrp [groupName] [file/folder] 修改文件所在组
ps [option] -a 显示当前终端所有的进程-u 以用户格式显示进程信息-x 显示后台进程运行的参数
执行ps -aux后显示的详细信息
ps -aux | grep [command]
ps -ef 全格式显示所有进程(包括父进程号PPID)
kill [option] [PID]-9 强制进程立即停止killall [processName] 通过进程名终止进程及其所有子进程ps -aux | grep bash 查看当前运行的终端进程
pstree 显示所有进程
pstree -p 显示进程数(带进程号)
pstree -u 显示进程树(带用户名)
top [option]-d [num] 每隔num秒更新默认为3-i 不显示闲置或僵死进程-p [PID] 监控某个进程
快捷键(大写输入)
Linux无论有几个分区,都只有一个根目录。Linux采用载入的方式,它的文件系统包含了一整套的文件和目录,且将一个分区和一个目录联系起来,一个分区的存储空间就在这个目录中
挂载(mount)是指将一个分区与一个目录联系起来(分区和目录的映射关系,访问某个分区就是访问对应的目录)
lsblk 查看分区挂载信息
lsblk -f 查看分区挂载详细信息
Linux硬盘分为IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘。
(1)虚拟机添加硬盘
(2)对硬盘进行分区
fdisk /dev/[diskName] 对硬盘进行分区管理n 添加分区(add a new partition)w 写入磁盘并退出(write table to disk and exit)q 直接退出不做任何修改(quit without saving changes)
(3)对分区格式化(设置文件类型),成功后会产生UUID
mkfs -t ext4 /dev/[partition] 设置分区的文件类型为ext4
(4)挂载分区到指定目录
永久挂载:修改/etc/fstab文件,添加新的挂载。执行 mount-a 即刻生效
临时挂载:
mount /dev/[partition] [targetFolder] 挂载分区到指定目录* 注意:用命令行执行的挂载在重启后会失效!
若当前在挂载中的目录先退出!!!
umount [partition/folder] 卸载分区对应目录
df -h 查询磁盘情况du [option] [folder] 查询指定目录的磁盘占用情况(默认查询当前目录)-s 指定目录占用大小汇总-h 带计量单位-a 包含文件--max-depth=[num] 子目录深度-c 列出明细
du -hac --max-depth=1
ls -l [folder] | grep "^-" | wc -l 统计目录下文件个数
ls -l [folder] | grep "^d" | wc -l 统计目录下目录个数ls -lR [folder] | grep "^-" | wc -l 统计目录下文件个数(包括子目录中)
ls -lR [folder] | grep "^d" | wc -l 统计目录下目录个数(包括子目录中)
在NAT模式下,Linux虚拟机的IP地址自动分配。IP地址要在同一个网段才能通讯
ipconfig
ifconfig
设置固定的IP地址对于搭建服务器时非常重要的
(1)修改配置文件 /etc/sysconfig/network-scripts/ifcfg-ens33 指定IP地址。若要和主机通讯,要保证IP和主机都在同一网段(192.168.227.xxx)
(2)重启网络服务或重启系统生效
service network restartreboot
hosts映射即主机名和IP地址的映射关系,通过主机名即可找到对应的IP地址
hostname 查看当前主机名
(1)修改配置文件 /etc/hostname 修改主机名,重启生效
(2)修改配置文件 /etc/hosts 写入IP地址和主机名的映射关系(主机名可以任写)
ping [hostname] 连通测试
(3)Windows环境下可以修改 C:\Windows\System32\drivers\etc\hosts 文件进行映射
域名系统(Domain Name System),是互联网上作为域名和IP地址相互映射的一个分布式数据库。(理解为互联网上公用的大型hosts映射)
浏览器访问网站时,需要根据域名查找对应的IP地址,查找顺序固定为
(1)浏览器缓存
(2)DNS解析器缓存(Windows可用命令ipconfig /displaydns 查看
(3)本地hosts文件
(4)域名服务DNS
域名劫持是指在正确IP地址的层级之前配置错误的域名映射(例如www.baidu.com正确的域名解析在第4层域名服务DNS,若在本地hosts文件中写入错误的域名映射,浏览器就会直接调用出错误的域名
rpm用于互联网下载包的打包及安装工具,生成.rpm文件(相当于Windows中的setup.exe)
rpm -qa 查看已安装的rpm列表(格式为 名称-版本-适用操作系统)
rpm -q [package] 查询软件是否安装
rpm -qi [package] 查看软件包信息
rpm -ql [package] 查看软件包中的文件
rpm -qf [filePath] 查看文件所属软件包rpm -e [package] 卸载软件包(若有其他软件包依赖于该软件包,则会出现可能破坏依赖break dependencies的错误信息)
rpm -e --nodeps [package] 强制卸载(不推荐)rpm -ivh [packagePath] 安装软件包
yum是一个Shell前端软件包管理器,基于RPM包管理,能从指定服务器自动下载rpm包并安装,可以自动处理依赖关系,并一次性安装所有依赖的软件包
yum list 查看yum服务器是否有需要安装的软件
yum install [package] 安装软件包
(1)创建一个目录存放上传的JDK,这里我选择放在一个用户的主目录下
mkdir -p /home/wanfeng/jdk
(2)在Oracle官网下载jdk包,选择jdk-8u351-linux-x64.tar.gz(下载地址:https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html)
(3)使用FinalShell上传到jdk目录中
(4)使用tar命令解压,得到jdk的目录
tar -zxvf jdk-8u351-linux-x64.tar.gz
(5)将jdk的目录移动到/usr/local/java,以方便管理(若没有该目录则新建)
mkdir /usr/local/java
mv jdk1.8.0_351/ /usr/local/java
(6)在/etc/profile中配置Java的环境变量并刷新
vim /etc/profileexport JAVA_HOME=/usr/local/java/jdk1.8.0_351export PATH=$PATH:$JAVA_HOME/binsource /etc/profile 刷新环境变量配置javac -version
java -version 检查环境变量是否已生效
(7)新建Hello.java测试
javac Hello.java
java Hello
(1)进入Tomcat官网下载8.5版本的tar包(下载地址:https://tomcat.apache.org/download-80.cgi)
(2)使用FinalShell上传
(3)解压
tar -zxvf apache-tomcat-8.5.86.tar.gz
(4)查看防火墙端口8080的开放状态,保证该端口处于开放
firewall-cmd --query-port=8080/tcpfirewall-cmd --permanent --add-port=8080/tcpfirewall-cmd --reload
(5)外部浏览器访问 ip:8080 查看是否访问成功
(6)在apache-tomcat-8.5.86/webapps/ROOT目录中新建一个简单的html文件(如hsp.html),在外部浏览器测试 ip:8080/hsp.html 是否可以访问(目前中文会乱码,先暂时放着)
(1)进入Jetbrains官网下载Linux版本的tar包(下载地址:https://www.jetbrains.com.cn/idea/download/#section=linux)
(2)用FinalShell上传到/opt目录,解压
tar -zxvf ideaIC-2022.3.2.tar.gz
(3)进入idea目录下的bin,在图形界面下执行idea.sh
(4)创建Hello.java测试
(1)安装wget
yum -y install wget
(2)在线下载MySQL安装包
wget https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
(3)安装MySQL
rpm -ivh mysql57-community-release-el7-8.noarch.rpm
(4)进入 /etc/yum.repos.d 目录
cd /etc/yum.repos.d/
(5)安装MySQL服务。
yum -y install mysql-server
如果出现公钥尚未安装的错误,执行下面的命令并重新install
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
(6)启动MySQL服务
systemctl start mysqld
(7)获取临时密码
cat /var/log/mysqld.log | grep 'temporary password'
(8)使用临时密码登录,进入MySQL命令行
mysql -uroot -p[password]
(9)设置密码校验强度为低风险
set global validate_password_policy=LOW;
(10)设置密码长度,根据自己密码修改长度即可
set global validate_password_length=[num];
(11)修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '[password]';
(12)防火墙开放3306端口,注意重载防火墙
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reloadfirewall-cmd --query-port=3306/tcp 查看3306端口的状态
(13)登录MySQL
mysql -uroot -p[password]
(14)切换到mysql数据
use mysql;
(15)查看user表
select Host,User from user;
(16)设置root用户允许任何地址访问,并刷新权限
update user set Host='%' where User='root';
flush privileges;
(17)使用MySQL客户端(如Navicat)远程连接测试即可
服务(service)的本质是运行在后台的进程,通常会监听某个端口,等待其他程序的请求
service [serviceName] [start/stop/restart/reload/status]
在CentOS 7后,很多服务不再使用service指令,而是systemctl。使用service指令管理的服务可在/etc/init.d查看
setup
(1)CentOS 7以前,服务用chkconfig管理,可在/etc/init.d查看
chkconfig --list 查看服务的自启动状态chkconfig --level [num] [service] [on/off] 设置服务在num运行级别下启动/关闭
(2)CentOS 7及以后大部分服务使用systemctl管理,可在/usr/lib/systemd/system查看。另外该版本之后修改服务是否自启动会直接在运行级别3和5上生效
systemctl list-unit-files 查看服务的自启动状态
systemctl [enable/disable] [service] 设置服务自启动/关闭
systemctl is-enabled [service] 查看服务是否自启动systemctl status [service] 查看服务当前状态
systemctl [start/stop/restart] [service] 开启/停止/重启服务
防火墙管理访问linux系统的端口,即什么端口可以访问,什么端口不能访问
firewall-cmd --permanent --add-port=[端口]/[协议] 打开端口
firewall-cmd --permanent --remove-port=[端口]/[协议] 关闭端口
firewall-cmd --reload 重新载入生效
firewall-cmd --query-port=[端口]/[协议] 查看端口状态
netstat [option]-an 按一定顺序输出-p 显示哪一个进程在调用
日志是系统信息文件,记录重要的系统事件。也能记录系统受到攻击留下的痕迹,对安全也很重要。系统日志文件通常在/var/log中
日志内容的格式
对应的配置文件是/etc/rsyslog.conf,用于记录管理的日志。
文件格式为 [日志类型].[日志级别] [存放文件]
日志类型
日志级别(从低到高,记录信息越来越少)
ps -aux | grep "rsyslog" | grep -v "grep" 查看rsyslogd是否启动systemctl list-unit-files | grep rsyslog 查看rsyslogd的自启动状态
在配置文件中按照需求写入即可
把旧的日志文件移动并改名,同时建立新的日志文件。日志轮替可以在指定时间进行工作,依赖于系统定时任务,在/etc/cron.daily下有配置
CentOS 7使用logrotate进行日志轮替管理,通过/etc/logrotate.conf中的dateext参数改变日志轮替文件名字。如果有dateext参数,日志会用日期来作为日志文件的后缀。
可以指定日志保存的最大个数
可以把某个日志的轮替规则写到/etc/logrotate.d目录下
# see "man logrotate" for details
# 轮替时间(每天daily,每周weekly,每月monthly)
weekly# 默认保存日志文件个数
rotate 4# 在轮替后创建新的空日志文件
# create [mode] [owner] [group] 创建时指定权限,所有者,所属组
create# 使用日期作为日志文件后缀
dateext# 日志文件是否压缩
#compress# mail address 日志轮替时发送到指定邮件地址
# missingok 当日志不存在,忽略日志的警告信息
# notifempty 如果日志为空文件,不进行轮替
# minsize 日志轮替的最小值,即只有达到最小值才会轮替
# size 日志大于指定大小才会轮替
# sharedscripts 在次关键字之后的脚本只执行一次
# prerotate/endscript 在论题之前执行脚本命令
# postrotate/endscript 在轮替之后执行脚本命令# (推荐使用)引用logrotate.d目录中保存的单独的日志轮替规则
include /etc/logrotate.d# 单独指定日志轮替规则
/var/log/wtmp {monthlycreate 0664 root utmpminsize 1Mrotate 1
}/var/log/btmp {missingok monthlycreate 0600 root utmprotate 1
}
journalctl
journalctl -n 3 查看最新三条
journalctl --since 19:00 --until 20:00 查看时间范围的日志
journalctl -p err 报错日志
journalctl _PID=1245 _COMM=sshd 查看包含这些参数的日志
Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序。终端就是一种Shell(bash)
sh [filePath] 执行shell脚本
./[filePath] 执行shell脚本(需要可执行权限)
分为系统变量和用户自定义变量。
echo $[paramName] 查看系统变量值
set 查看所有系统变量[paramName]=[value] 自定义变量等号两边不能有空格变量名称一般习惯为大写unset [paramName] 撤销变量[paramName]=`[command]` 若以反引号定义,则执行命令并将结果赋值给变量
export [paramName]=[value] 将shell变量输出为环境变量
source /etc/profile 使环境变量生效
echo $[paramName] 查看环境变量的值
# [单行注释]:<
用于获取命令行输入得参数信息
$0 表示命令本身
$1-$9 代表第一到第九个参数
${10} 第十个以上用大括号表示$* 命令行所有参数,看成一个整体
$@ 命令行所有参数,区分对待
$# 命令行所有参数个数
系统内置的定义好的变量,可以直接使用
$$ 当前进程的PID
$! 后台运行的最后一个进程PID
$? 最后一次执行命令的返回状态
$((expression)) 或者 $[expression]
expr m + n (注意空格,若要返回结果用反引号包括)\* expr中的乘法
if [ condition ] 判断真假,注意有if和中括号的空格,condition和中括号的空格
then ...
fi if语句结束即使没有条件(结果为false),也要有空格字符串比较
= 字符串判断整数比较
-lt 小于
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于判断文件权限
-r 有读权限
-w 有写权限
-x 有执行权限判断文件类型
-f 文件存在且是一个常规文件,例如 if [ -f /home/a.txt ]
-e 文件存在
-d 文件存在且是一个目录
if [ condition ]
then ...
elif [ condition ]
then ...
elif [ condition ]
then ...
fi
case $paramName in
"value1")...
;;
"value2")...
;;
*)... 若都不满足执行此段程序
;;
for paramName in value1 value2 ...
do...
donefor ((初始值;循环控制条件;变量变化))
do...
done
案例:1到100求和
#计算1到100所有自然数的和
SUM=0
for ((N=1 ; N<=100; N++))
doSUM=$[$SUM+$N]
doneecho "The sum is "$SUM
while [ condition ] 注意while和中括号的空格
do...
done
案例:输入一个数,计算1到这个数的总和
SUM=0
i=1
while [ $i -le $1 ]
doSUM=$[$SUM+$i]i=$[$i+1]
doneecho "The SUM is $SUM from 1 to $1"
read [option] [param]-p 指定读取值时的提示符-t 指定读取值时的等待时间,若超时停止读取
系统函数
basename [path] [suffix] 返回文件名
basename函数会删掉所有的前缀包括最后一个/字符,然后将字符串显示出来,若指定suffix(文件名后缀),basename会将后缀也删除掉dirname [path] 返回path中的路径部分
自定义函数
# 函数定义
function functionName()
{...return int;
}# 函数调用
functionName param1 param2 ...
指定系统在某个时间执行特定的命令或程序
crontab [option]-e 编辑crontab定时任务-l 查询crontab定时任务-r 删除当前用户所有的crontab任务service crond restart 重启定时任务调度
时间规则
时间部分有5个位置,依次为 分(0-59) 小时(0-23) 日(1-31) 月(1-12) 星期(0-7) 0和7都代表周日每个位置的字符* 代表任何时间, 代表不连续的时间。如“0 8,10,15 * * *” 代表在8点,10点,15点- 代表连续的时间。如“0 5 * * 0-3”代表周日到周三的凌晨5点*/10 代表多久执行一次,例如“*/3 * * * *”代表每3分钟执行一次
例如,每个月的1号,15号的凌晨02:00将/etc目录下的所有文件输入到/tmp/to.txt文件中
0 2 1,15 * * ll /etc > /tmp/to.txt
一次性定时计划任务,执行完成就结束了。at的守护进程(service)atd后台运行,检查作业队列(设定好的任务)来运行。默认情况下atd每60秒检查作业队列,如果有作业运行时间与当前时间匹配,则运行此作业
ps -ef | grep atd 查看atd是否运行
at [option] [taskTime] 进入at命令行添加任务(Ctrl+D结束at命令输入)时间的定义时分 hh:mm ,若时间已过放在第二天执行特定时间点 midnight, noon, teatime(饮茶时间,下午4点)12小时制 3am,8pm具体日期 month day, mm/dd/yy, dd.mm.yy相对计时法 + count time-units 如 1p'x + 5 minutestoday, tomorrowatq 查询at作业队列
atrm [jobId] 删除对应编号的任务
需求
思路
(1)编写/usr/sbin/mysql_backup.sh脚本文件完成上面的需求
#!/bin/bash# 备份wanfeng数据库的genshin表 到 /home/wanfeng/backup/db
# 日期作为文件名
TIME=`date +%Y-%m-%d_%H%M%S`
echo "current time: $TIME"# 数据库信息
HOST=localhost
USER=root
PASSWD=200127
DB_NAME=wanfeng
BACKUP_PATH=/home/wanfeng/backup/db# 创建备份目录
if [ ! -d ${BACKUP_PATH}/${TIME} ]
thenmkdir -p ${BACKUP_PATH}/${TIME}
fi# 备份数据库
mysqldump -u${USER} -p${PASSWD} --host=${HOST} -q -R --databases ${DB_NAME} | gzip > ${BACKUP_PATH}/${TIME}/${TIME}.sql.gz# 将对应时间的目录打包成.tar.gz文件,并删除该时间的目录
cd ${BACKUP_PATH}
tar -zcvf ${TIME}.tar.gz ${TIME}
rm -rf ${TIME}# 检查十天前是否有.tar.gz备份文件,若有则删除
find ${BACKUP_PATH} -atime +10 -name "*.tar.gz" -exec rm -rf {} \;# 备份完成
echo "MySQL backup success~"
(2)将脚本文件放入crontab定时任务调度中执行即可
crontab -e 30 2 * * * /usr/sbin/mysql_backup.sh
基本语法
export 变量名=变量值 功能:将shell变量输出为环境变量source 配置文件 功能:让修改后的配置信息立即生效echo $变量名 功能:查询环境变量的值
Linux内置的文本编辑器,具有程序编辑能力,编程能力丰富
命令模式下
一般模式
命令行模式
(1)在linux系统终端执行ifconfig,获取ens33中得公网IP
(2)在FinalShell中新建连接,输入公网IP,管理员账号密码接口成功连接
阅读Linux内核源码可以使开发人员对操作系统的底层逻辑架构有更深刻的理解,从而能写出更优质的代码。推荐首先阅读Linux内核0.01版本,代码1w行左右。
阅读技巧: