ping
ip或域名
[jerry@jerry ~]$ ping 192.168.254.132
PING 192.168.254.132 (192.168.254.132) 56(84) bytes of data.
64 bytes from 192.168.254.132: icmp_seq=1 ttl=64 time=0.061 ms
64 bytes from 192.168.254.132: icmp_seq=2 ttl=64 time=0.072 ms
64 bytes from 192.168.254.132: icmp_seq=3 ttl=64 time=0.080 ms
64 bytes from 192.168.254.132: icmp_seq=4 ttl=64 time=0.073 ms
telnet ip 端口
telnet 192.168.254.132 22
yum install telnet
[jerry@jerry ~]$ telnet 192.168.254.132 22
Trying 192.168.254.132...
Connected to 192.168.254.132.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.4
命令 选项 参数
命令 Linux实现各种功能的指令
选项 option同一个命令的不同功能
参数 对象(处理文件、目录)
命令 选项 参数
rm -f /test.txt
#ls list列表,查看目录下面的内容(只有名字)
[jerry@jerry ~]$ ls /
bin/ dev/ home/ lib64/ mnt/ proc/ run/ srv/ tmp/ var/
boot/ etc/ lib/ media/ opt/ root/ sbin/ sys/ usr/
[jerry@jerry ~]$ ls /etc/
abrt dnsmasq.d issue openldap services
adjtime dracut.conf issue.net opt sestatus.conf
#ls -l 查看详细信息 d代表目录
[jerry@jerry ~]$ ls -l /tmp/
总用量 32
-rw-r--r--. 1 root root 1148 8月 5 14:11 anaconda.log
drwxr-xr-x. 2 root root 18 8月 5 13:57 hsperfdata_root
-rw-r--r--. 1 root root 415 8月 5 14:10 ifcfg.log
#ls -la /fileName/显示 /root/ 目录中所有文件,包含隐藏文件
#以"."开头的文件或者目录就是隐藏文件
#cd change directory进入目录
cd /tmp
#pwd 显示当前所在位置
#cd ~ 快速回到根目录
#cd .. 上一级目录cd
#cd - 返回上一次所在目录
#tree 以树形显示目录内容
#centOS安装软件(熟悉)
yum install -y tree #需要虚拟机可以连网
/bin (/user/bin,/user/local/bin)
/sbin (/user/sbin,/user/local/sbin)
/home
/root
/lib
/lost+found
/etc
/usr
/boot
/proc(不能动)
/srv (不能动)
/sys (不能动)
/tmp
/dev
/media
/mnt
/opt
/usr/local [常用]
/var [常用]
/selinux [security-enhanced linux]
Vim具有程序编辑的能力,可以看做是Vi的增强版本,可以主动的以字体颜色辨别语法的正确性,
方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。Linux系统会内置vi文本编辑器
正常模式
「上下左右」
按键来移动光标,你可以使用「删除字符」
或「删除整行」
来处理档案内容,也可以使用「复制、粘贴」
来处理你的文件数据。插入模式
i,I,o,O,a,A,r,R
等任何一个字母之后才会进入编辑模式,一般来说按i
即可命令行模式
esc
,再输入:
在这个模式当中,可以提供你相关指令,完成读取、存盘、替换、离开vim、显示行号等的动作则是在此模式中达成的!案例,在Xshell中输入vim Hello.java
,用vim编写这个文件
i
进入编辑模式esc
:
进入命令行模式:wq
(write quit)保存并退出拷贝当前行(正常模式下输入)yy
,拷贝当前行向下的5行5yy
, 并粘贴(输入p
)。
删除当前行dd
,删除当前行向下的5行5dd
命令行下
输入 /关键宇
,回车查找输入n就是查找下一个]设置文件的行号,取 消文件的行号.[命令行下: set nu和:set nonu]
编辑/etc/profile文件,使用快捷键到该文档的最末行[G]和最首行[gg]
在一个文件中输入"hello",然后又撤销这个动作u
编辑/etc/profile文件,并将光标移动到20行shift+g
su - 用户名
命令来切换成系统管理员身份.useradd 用户名
案例
细节注意
userdel 用户名
id 用户名
在操作Linux中,如果当前用户的权限不够,可以通过su -指令,切换到高权限用户,比如root
su - 用户名
细节说明:
输入who am i
可以查询自己是哪个用户
类似于角色,系统可以对有共性/权限的多个用户进行统一的管理
groupadd 组名
新增组groupdel 组名
删除组useradd -g 用户组 用户名
增加用户时直接加上组usermod -g 用户组 用户名
修改用户的组groups 用户名
查看用户所在组/ect/passwd 文件
/etc/shadow 文件
/etc/group文件
运行级别说明:
命令: init [0123456]应用案例:通过init 来切换不同的运行级别,比如动5-3 ,然后关机。
init 3
init 5
…
在centos7以前, /etc/inittab文件中.
之后,进行了简化,如下:
multi-user.target
: analogous(类似于) to runlevel 3graphical.target
: analogous to runlevel 5systemctl get-default
当前默认的运行级别
systemctl set-default "级别".target
设置默认的运行级别
开机之前,在这个界面输入e,进入编辑模式(要快一点,不然就错过了)
往下找到:
在UTF-8后面输入init=/bin/sh
输入完成后,直接按快捷键: Ctrl+x 进入单用户模式。
接着,在光标闪烁的位置中输入: mount -o remount,rw /
(注意:各个单词间有空格,逗号左右不要有空格),完成后按键盘的回车键(Enter),再在新的一行输入passwd
。 如图
-
输入两次密码(密码不会在上面显示,输入完成即可回车,最好是八位及以上,不强求)
输入完成后进入新的一行
接着,在鼠标闪烁的位置中(最后一行中)输入:touch /.autorelabel
(注意:touch后面有一个空格),完成后按键盘的回车键
继续在光标闪烁的位置中,输入: exec /sbin/init
(注意: exec后面有一个空格),完成后按键盘的回车键 ,等待 系统自动修改密码(这个过程时间可能有点长,耐心等待),完成后,系统会自动重启,新的密码生效了,这个界面记住多等久一点!!!
记住多等久一点!!!
系统会自动重启,新密码生效
man获得帮助信息
基本语法: man[命令或配置文件] (功能描述:获得帮助信息)
案例:查看s命令的帮助信息man ls
在linux下,隐藏文件是以开头,选项可以组合使用比如ls -al,比如ls -al /root
help指令:
pwd指令
ls指令
cd指令
mkdir 指令 创建目录
rmdir 指令删除空目录
touch指令创建空文件
cp指令 拷贝文件到指定目录
rm指令 移除文件或目录
mv指令 移动文件与目录或重命名
cat指令 查看文件内容
more指令
more指令是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more指令中内置.了若干快捷键(交互的指令) ,详见操作说明
基本语法:more 要查看的文件
操作说明:
操作 | 功能说明 |
---|---|
空格 | 代表向下翻一页; |
回车 | 代表向下翻[一-行J ; |
q | 代表立刻离开more ,不再显示该文件内容。 |
Ctrl+F | 向下滚动一屏 |
Ctrl+B | 返回上一屏 |
= | 输出当前行的行号 |
:f | 输出文件名和当前行的行号 |
less指令
less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各
种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示
需要加载内容,对于显示大型文件具有较高的效率。
基本语法:less 要查看的文件
操作 | 功能说明 |
---|---|
空白键 | 向下翻动一页; |
[pagedown] | 向下翻动一页 |
[pageup] | 向上翻动一页; |
/字串 | 向下搜寻[字串]的功能; n:向下查找; N:向上查找; |
?字串 | 向上搜寻[字串]的功能; n:向上查找: N:向下查找; |
q | 离开less这个程序; |
echo指令 输出内容到控制台
head指令 用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容
基本语法:head 文件名 (功能描述 :查看文件头10行内容)
head -n 5 文件名 (功能描述:查看文件头5行内容,5可以是任意行数)
tail指令 用于输出文件中尾部的内容,默认情况下tail指令显示文件的前10行内容。
输出重定向 >指令 (覆盖) 和 >>指令 追加
ln指令 软链接也称为符号链接,类似于windows里的快捷方式,主要存放了链接其他文件的路径
基本语法:ln -s [原文件或目录] [软链接名] (功能描述:给原文件创建一个软链接)
案例1:在/home目录下创建一个软连接myroot ,连接到/root目录
案例2:删除软连接myroot
history指令 查看已经执行过历史命令,也可以执行历史指令
date指令 显示当前日期
date (功能描述:显示当前时间)
date + %Y (功能描述:显示当前年份)
date + %m (功能描述:显示当前月份)
date + %d (功能描述:显示当前是哪一天)
date “+%Y-%m-%d %H:%M:%S” (功能描述 :显示年月日时分秒)
date -s 字符串时间(设置系统当前时间)
cal指令 显示本月日历
find指令 将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端。
基本语法:find [搜索范围] [选项]
选项说明:
选项 | 功能 |
---|---|
-name <查询方式> | 按照指定的文件名查找模式查找文件 |
-user <用户名> | 查找属于指定用户名所有文件 |
-size <文件大小> | 按照指定的文件大小查找文件。 |
案例1:按文件名:根据名称查找/home目录下的hello. txt文件
案例2 :按拥有者:查找/opt目录下,用户名称为nobody的文件
案例3 :查找整个linux系统下大于200M的文件( +n大于 -n小于 n等于,单位有k,M,G)
locate指令
locate指令可以快速定位文件路径。locate指令利用事先建 立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。Locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻
which指令,可以查看某个指令在哪个目录下,比如ls指令在哪个目录
grep指令和管道符号 |
基本语法:grep [选项] 查找内容源文件
常用选项:
选项 | 功能 |
---|---|
-n | 显示匹配行以及行号 |
-i | 忽略字母大小写 |
案例1:请在hello.txt文件中查找"yes"所在行并且显示行号
gzip/gunzip指令 压缩或解压文件
zip/unzip 指令 zip用于压缩文件, unzip 用于解压的,这个在项目打包发布中很有用的
基本语法:
zip常用选项:-r :递归压缩,即压缩目录
unzip的常用选项: -d<目录> 指定解压后文件的存放目录
unzip的常用选项:-d<目录> :指定解压后文件的存放目录
案例1:将/home’下的所有文件/文件夹进行压缩成myhome.zip
案例2:将myhome.zip解压到/opt/tmp目录下
tar指令 是打包指令,最后打包后的文件是.tar.gz的文件。
基本语法:tar [选项] XXX.tar.gz 打包的内容(功能描述 :打包目录,压缩后的文件格式.tar.gz)
选项说明:
选项 | 功能 |
---|---|
-c | 产生.tar打包文件 |
-v | 显示详细信息 |
-f | 指定压缩后的文件名 |
-z | 打包同时压缩 |
-x | 解包.tar文件 |
案例1:压缩多个文件,将/home/pig.txt和/home/cat.txt压缩成pc.tar.gz
案例2:将/home的文件夹压缩成myhome.tar.gz
一般为文件的创建者谁创建了该文件,就自然的成为该文件的所有者。
查看文件所有者,所在组
修改文件所有者
案例:使用root创建一个文件apple.txt , 然后将其所有者修改成tom
基本指令groupadd 组名
chgrp newgroup 文件名(修改文件所在组)
ls -l 中显示的内容如下:
drwx------. 16 jerry jerry 4096 8月 28 14:19 jerry
0-9位说明
rwx 作用到文件
[r]代表可读(read):可以读取查看
[w]代表可写(write):可以修改但是不代表可以删除该文件删除一个文件的前提条件是对该名件所在的目录有写权限,才能删除该文件.
[x]代表可执行(execute):可以被执行
rwx 作用到目录
其它说明
修改权限:通过chmod指令,可以修改文件或者目录的权限。
第一种方式: +、-、=更权限
第二种方式:通过数字变更权限
案例:要求:将/home/abc.txt文件的权限修改成rwxr-xr-x, 使用给数字的方式实现:
police,bandit
jack,jerry:警察xh, xq:土匪
1.创建组
2.创建用户
3.jack创建一个文件 ,自己可以读写,本组人可以读,其它组没人任何权限
4.jack修改该文件,让其它组人可以读,本组人可以读写
5.xh投靠警察,看看是否可以读写.
#创建组
groupdel police
groupadd police
groupadd bandit
useradd -g police jack
useradd -g police jerry
useradd -g bandit xh
useradd -g bandit xq
#2
passwd {username} #设置密码
#3
vim jack.txt
chmod 640 jack.txt
#4
chmod o=r,g+w jack.txt
#5 切换root用户
usermod -g police xh
crontab
进行定时任务的设置任务调度:是指系统在某个时间执行的特定的命令或程序。
任务调度分类: 1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等
个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份。
基本语法 crontab「选项]
-e | 编辑crontab定时任务 |
---|---|
-l | 查询crontab任务 |
-r | 删除当前用户所有的crontab任务 |
service crontab restart 重启任务调度
快速入门
5个占位符*的说明
项目 | 含义 | 范围 |
---|---|---|
第一个* | 一小时当中的几分钟 | 0-59 |
第二个* | 一天当中的几个小时 | 0-23 |
第三个* | 一个月中的第几天 | 1-31 |
第四个* | 一年中的第几月 | 1-12 |
第五个* | 一周中的星期几 | 0-7 (0和7都是星期日) |
特殊符号说明;
特殊符号 | 含义 |
---|---|
* | 代表任何时间。比如第一个*"就代表一小时中每分钟都执行-次的意思。 |
, | 代表不连续的时间。比如0 8,12,16***命令, 就代表在每天的8点0分, 12点0分, 16点0分都执行一次命令 |
- | 代表连续的时间范围。比如“05 * * 1-6命令”, 代表在周一到周六的凌晨5点0分执行命令 |
*/n | 代表每隔多久执行一-次。比如"*/10 * 感命令" ,代表每隔10分钟就执行一遍命令 |
案例说明:
时间 | 含义 |
---|---|
45 22 * * * | 在22点45分执行命令 |
0 17 * * 1 | 每周1的17点0分执行命令 |
0 5 1,15 * | 每月1号和15号的凌晨5点0分执行命令 |
40 4 * * 1-5 | 每周一到周五的凌晨4点40分执行命令 |
*/10 4 * * * | 每天的凌晨4点,每隔10分钟执行- -次命令 |
0 0 1,15 * 1 | 每月1号和15号,每周1的0点0分都会执行命令。注意:星期几和几号最好不要同时出现,因为他们定义的都是天。非常容易让管理员混乱。 |
应用实例
案例1 :每隔1分钟,就将当前的日期信息,追加到/tmp/mydate文件中
案例2 :每隔1分钟,将当前日期和日历都追加到/home/mycal文件中
at命令是一次性定时计划任务, at的守护进程atd会以后台模式运行,检查作业队列来运行。
默认情况下, atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业。
at命令是一次性定时计划任务,执行完一个任务后不再执行此任务了
在使用at命令的时候,一定要保证atd进程的启动,可以使用相关指令来查看
ps -ef | grep atd
可以检测atd是否正在运行
at 命令格式
选项
选项 | 含义 |
---|---|
-m | 当指定的任务被完成后,将给用户发送邮件,即使没有标准输出 |
-I | atq的别名 |
-d | atrm的别名 |
-v | 显示任务将被执行的时间 |
-c | 打印任务的内容到标准输出 |
-V | 显示版本信息 |
-q(队列) | 使用指定的队列 |
-f(文件) | 从指定文件读入任务而不是从标准输入读入 |
-t(时间参数) | 以时间参数的形式提交要运行的任务 |
at 时间定义
实例:
案例1 : 2天后的下午5点执行/bin/ls /home
案例2 : atq命令来查看系统中没有执行的工作任务
案例3 :明天17点钟,输出时间到指定文件内比如/root/date100.log
Linux来说无论有几个分区,分给哪一月录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分。
Linux采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。
lsblk
查看分区 -f
硬盘说明:
虚拟机增加硬盘步骤1
虚拟机增加硬盘步骤2
虚拟机增加硬盘步骤3
虚拟机增加硬盘步骤4
虚拟机增加硬盘步骤5
第一种方法(自动获取) :
第二种方法(指定ip)
直接修改配置文件来指定IP,并可以连接到外网(程序员推荐)
编辑vi /etc/sysconfig/network-scripts/ifcfg-ens33
要求:将ip地址配置的静态的,比如: ip地址为192.168.111.111
ifcfg-ens33文件说明
步骤
ps命令是用来查看目前系统中,有哪些正在执行,以及它们执行的状况。可以不加任何参数.
选项:
含义
System V展示风格
USER:用户名称
PID :进程号
%CPU :进程占用CPU的百分比
%MEM :进程占用物理内存的直分比
VSZ :进程占用的虚拟内存大小(单位: KB )
RSS ;进程占用的物理内存大小(单位; KB )
TT :终端名称,缩写.
STAT :进程状态,其中S-睡眠, s-表示该进程是会话的先导进程, N-表示进程拥有比普通优先级更低
的优先级,R正在运行, D-短期等待,Z-僵死进程,T-被跟踪或者被停止等等
STARTED :进程的启动时间
TIME : CPU时间,即进程使用CPU的总时间
COMMAND :启动进程所用的命令和参数,如果过长会被截断显示
若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程。使用kill命令来完成此项任务。
语法:
常用选项:
服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysqld, sshd防火墙等) ,因此我们又称为守护进程,是Linux中非常重要的知识点。[原理图]
service指令管理
查看服务名:
在/etc/initab
进行了简化, 如下:
systemctl get-default查看运行级别
systemctl set-default设置运行级别
介绍
chkconfig基本语法
案例演示:对network服务进行各种操作,播network在3运行级别,关闭自启动
基本语法:
systemctl设置服务的自动启动和关闭
systemctl list-unit-files [| grep服务名] (查看服务开机启动状态,grep可以进行过滤)
systemctl enable服务名(设置服务开机启动)
systemctl disable服务名(关闭服务开机启动)
systemctl is-enabled服务名(查询某个服务是否是自启动的)
案例:查看当前防火墙的状况,关闭防火墙和重启防火墙。=> firewalld.service
将3306端口加入防火墙
细节
top与ps命令很相似。它们都用来显示正在执行的进程。Top与ps最大的不同之处,在于top在执行-段
时间可以更新正在运行的的进程。
基本语法:
选项说明
选项 | 说明 |
---|---|
-d描述 | 指定top命令每隔几秒更新。默认是3秒 |
-i | 使top不显示任何闲置或者僵死进程 |
-p | 通过指定监控进程ID来仅仅监控某个进程的状态。 |
按下:
案例1.监视特定用户,比如我们监控tom用户
top : 输入此命令,按回车键,查看执行的进程。
u:然后输入"u"回车,再输入用户名,即可,
案例2 :终止指定的进程。
top :输入此命令,按回车键,查看执行的进程。
k:然后输入"k"回车,再输入要结束的进程ID号
案例3:指定系统状态更新的时间(每隔10秒自动更新)
rpm用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。RPM是RedHat Package Manager ( RedHat软件包管理工具)的缩写,类似windows的setup.exe , 这一文件格式名称虽然打上了RedHat的标志,但理念是通用的。
rpm包的简单查询指令
查询已安装的rpm列表 rpm -qa | grep xx
举例:查看是否安装了firefox
rpm -qa | grep firefox
名称:firefox
版本号: 91.11.0-2
适用操作系统: el7.centos.x86_64表示centos7.x的64位系统
如果是i686、i386表示32位系统, noarch表示通用。
rpm包的其他查询指令
卸载rpm包
安装rpm包
Yum是一个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动
下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。
步骤
测试是否安装成功:
脚本格式要求
案例:
需求说明:创建一个Shell脚本 ,输出hello world!
vim hello.sh
#!/bin/bash
echo "hello,world~"
chmod u+x hello.sh (添加可执行权限)
或者直接sh hello.sh执行,不需要权限
Linux Shell中的变量分为,系统变量和用户自定义变量。
shell变量的定义
基本语法:
A=`data`等价于$(data)
source 配置文件 ( 功能描述:让修改后的配置信息立即生效)
多行注释:
:<<!
注释内容
!
当我们执行一个shell脚本时 ,如果希望获取到命令行的参数信息,就可以使用到位置参数变量
比如: ./myshell.sh 100 200,这个就是一个执行shell的命令行 ,可以在myshell脚本中获取到参数
信息
基本语法:
案例:编写一个shell脚本position.sh ,在脚本中获取到命令行的各个参数信息。
#!/bin/bash
echo "$0 $1 $2"
echo "$*"
echo "$@"
echo "$#"
就是shel设计者事先已经定义好的变量,可以直接在shell脚本中使用
基本语法:
案例:在一个shell脚本中简单使用一下预定义变量
#!/bin/bash
echo "当前执行进程的id=$$"
#以后台的方式运行一个脚本,并获取它的进程号
/root/shell-codes/myshell.sh &
echo "最后一个后台方式运行的进程id=$!"
echo "执行的结果是=$?"
“ ( ( 运算式 ) ) " 或“ ((运算式))"或“ ((运算式))"或“[运算式]”或者expr m + n //expression表达式
注意expr运算符间要有空格,如果希望将expr的结果赋给某个变量,使用``
expr m-n
expr \*, /, % 乘,除取余
案例:计算(2+3)x4的值
#!/bin/bash
#第一种方式
RES1=$(((2+3)*4))
echo "res1=$RES1"
#第二种方式
RES2=$[(2+3)*4]
echo "res2=$RES2"
#第三种方式
TEMP=`expr 2 + 3`
RES4=`expr $TEMP \* 4`
echo "res4=$RES4"
基本语法:
[ condition ] (注意condition前后要有空格)
非空返回true ,可使用$?验证( 0为true , > 1为false )
案例:
[jerry] ---- 返回true
[] ---- 返回 false
[ condition ] && echo OK || echo notok 条件满足 ,执行后面的语句
常用判断条件
案例:判断23 > 22 多分支用elif
if[ 23 > 22 ]
then
echo "大于"
fi
判断文件是否存在:if[ -f 全路径名 ] then xxx fi
基本语法
case $变量名 in
"值1")
如果值为1,执行程序1
;;
"值2")
如果值为2,执行程序2
;;
*)
其他,执行此程序
;;
esac
基本语法1
for 变量 in 值1 值2 值3...
do
程序/代码
done
案例1 : 打印命令行输入的参数[这里可以看出 $* 和 $@ 的区别]
#!/bin/bash
for i in "$*"
do
echo "num is $i"
done
echo "==================="
for j in "$@"
do
echo "num is $j"
done
基本语法2
for((初始值;循环控制条件;变量变化))
do
程序/代码
done
案例1 :从1加到100的值输出显示
for ((i=1; i<=100; i++))
do
SUM=$[$SUM+$i]
done
echo "总和SUM= $SUM"
基本语法:
注意: while和[有空格,条件判断式和[也有空格
while [ 条件判断式 ]
do
程序/代码
done
案例1 :从命令行输入一个数n,统计从1+…+ n的值是多少?
SUM=0
i=0
while [ $i -le $1 ]
do
SUM=$[$SUM+$i]
i=$[$i+1]
done
echo "执行结果:SUM=$SUM"
基本语法:read(选项)(参数)
选项:
参数:变量:指定读取值的变量名
案例:
#!/bin/bash
#案例1:读取控制台输入的一个NUM1值
read -p "请输入一个数NUM1=" NUM1
echo "NUM1=$NUM1"
#案例2:读取控制台输入一个NUM2值, 在10秒内输入
read -t 10 -p "请输入一个数NUM2=" NUM2
echo "NUM2=$NUM2"
基本语法:
basename [string] [suffix]
功能: basename命令会删掉所有的前缀包括最后一个( ‘/’ )字符,然后将字符串显示出来。
suffix为后缀,如果suffix被指定了, basename会将pathname或string中的suffix去掉。
案例1 :请返回/home/aaa/test.txt的"test.txt"部分
基本语法:dirname文件绝对路径
案例:请返回/home/aaa/test.txt的/home/aaa
基本语法:
[ function ] funname[()]
{
Action;
[return int;]
}
调用直接写函数名: funname [值]
案例:计算输入两个参数的和(动态获取),getSum
#!/bin/bash
function getSum(){
SUM=$[$n1+$n2]
echo "和是=$SUM"
}
#read -p "请输入一个数n1=" n1
#read -p "请输入一个数n2=" n2
n1=$1
n2=$2
#调用
getSum $n1 $n2
需求分析:
1.每天凌晨2:30备份数据库hspEduDB到/data/backup/db
2.备份开始和备份结束能够给出相应的提示信息
3.备份后的文件要求以备份时间为文件名,并打包成.tar.gz 的形式,比如: 2021-03-12 230201.tar.gz
4.在备份的同时,检查是否有10天前备份的数据库文件,如果有就将其删除。
vim mysql_db_backup.sh
#!/bin/bash
#备份目录
BACKUP=/data/backup/db
#获取当前时间
DATETIME=$(date +%Y-%m-%d_%H%M%S)
echo "$DATETIME"
#数据库的地址
HOST=localhost
#数据库用户名
DB_USER=root
#数据库密码
DB_PWD=ROOT
#备份的数据库
DATABASE=hspEduDB
#创建备份目录,如果不存在就创建
[ ! -d "${BACKUP}/${DATETIME}" ] && mkdir -p "${BACKUP}/${DATETIME}"
#备份数据库
mysqldump -u${DB_USER} -p${DB_PWD} --host=${HOST} -q -R --database ${DATABASE} | gzip >
${BACKUP}/${DATETIME}/$DATETIME.sql.gz
#将文件处理成tar.gz
cd ${BACKUP}
tar -zcvf $DATATIME.tar.gz $DATATIME
#删除对应的备份目录
rm -rf ${BACKUP}/${DATATIME}
#删除十天前的备份文件
find ${BACKUP} -atime +10 -name "*.tar.gz" -exec rm -rf {} \;
echo "备份数据库${DATABASE}成功~"
crontab -e
基本语法:dirname文件绝对路径
案例:请返回/home/aaa/test.txt的/home/aaa
基本语法:
[ function ] funname[()]
{
Action;
[return int;]
}
调用直接写函数名: funname [值]
案例:计算输入两个参数的和(动态获取),getSum
#!/bin/bash
function getSum(){
SUM=$[$n1+$n2]
echo "和是=$SUM"
}
#read -p "请输入一个数n1=" n1
#read -p "请输入一个数n2=" n2
n1=$1
n2=$2
#调用
getSum $n1 $n2
需求分析:
1.每天凌晨2:30备份数据库hspEduDB到/data/backup/db
2.备份开始和备份结束能够给出相应的提示信息
3.备份后的文件要求以备份时间为文件名,并打包成.tar.gz 的形式,比如: 2021-03-12 230201.tar.gz
4.在备份的同时,检查是否有10天前备份的数据库文件,如果有就将其删除。
vim mysql_db_backup.sh
#!/bin/bash
#备份目录
BACKUP=/data/backup/db
#获取当前时间
DATETIME=$(date +%Y-%m-%d_%H%M%S)
echo "$DATETIME"
#数据库的地址
HOST=localhost
#数据库用户名
DB_USER=root
#数据库密码
DB_PWD=ROOT
#备份的数据库
DATABASE=hspEduDB
#创建备份目录,如果不存在就创建
[ ! -d "${BACKUP}/${DATETIME}" ] && mkdir -p "${BACKUP}/${DATETIME}"
#备份数据库
mysqldump -u${DB_USER} -p${DB_PWD} --host=${HOST} -q -R --database ${DATABASE} | gzip >
${BACKUP}/${DATETIME}/$DATETIME.sql.gz
#将文件处理成tar.gz
cd ${BACKUP}
tar -zcvf $DATATIME.tar.gz $DATATIME
#删除对应的备份目录
rm -rf ${BACKUP}/${DATATIME}
#删除十天前的备份文件
find ${BACKUP} -atime +10 -name "*.tar.gz" -exec rm -rf {} \;
echo "备份数据库${DATABASE}成功~"
crontab -e