面向JAVAEE程序员的 Linux

本文旨在梳理必须掌握的 Linux 指令以及 Shell 编程。接下来将从虚拟机安装、Linux 系统安装、Linux 远程登录工具、Linux 文件上传工具、Linux 指令、Linux 下的 jdk 安装、Linux 下的 tomcat安装、Linux 下的 mysql安装、Shell 编程来全面梳理 Linux 的必知必会知识点。

需要的所有软件可私信我,我发给你。

注:

       虚拟机安装可参考这位这位作者的文章

               VMware Workstation 17 安装教程 - 知乎

        CentOS 安装可参考这位作者的文章

                CentOS 7系统安装配置图解教程_centos7_tiny丶的博客-CSDN博客

        远程登录工具使用Xshell7

        文件上传工具使用Xftp7

        jdk 选用17以上,因为springboot3 要求17

        tomcat 选用10以上

        mysql我用的8,可参考该作者文章

                Linux下安装MySQL8_linux安装mysql8_爪哇_怪盗基德的博客-CSDN博客

一、Linux 目录结构

1、介绍

        linux 的文件系统是采用层级式的树状目录结构,在此结构中的最上层目录是 / ,然后才在此目录下创建其他目录。

2、目录结构

        既然要使用 linux ,那么对于它的各个目录自然要知道都分别有什么用,打开根目录可以看到以下目录结构

/bin 这个目录存放着常用指令

/sbin 这个目录存放着管理员使用的系统管理程序

/home 这个目录用于存放普通用户的主目录,也叫家目录,你创建的任何用户都会在此目录下

/root 这个目录为系统管理员,也称超级权限者的用户主目录

/lib 这个目录为系统开机所需的最基本的动态连接共享库

/lost+found 这个目录一般不会出现,只有在系统非法关机后才会出现,并且存一些文件

/etc 这个目录很重要,用于存放系统管理所需的配置文件

/usr 这个目录很重要,用户的很多应用程序和文件都在这个目录下

/boot 这个目录存放的是系统启动时的一些核心文件,包括一些连接文件和镜像文件

/proc 这个目录一定不能动,它是系统内存的映射,可以访问该目录来获取系统信息

/srv 这个目录一定不能动,存放一些服务启动后需要提取的数据

/sys 这个目录一定不能动,该目录下有文件系统 sysfs

/tmp 这个目录是用来存放一些临时文件的

/dev 这个目录下存放的是各种硬件对应的文件形式

/media linux系统会自动识别一些设备,如 u 盘等,识别后就会将该设备挂载在此目录下

/mnt 这个目录是让用户临时挂在别的文件系统的,如共享文件

/opt 这个目录默认为空,用来存放主机需要额外安装的软件

/usr/local 这个目录是另一个用来存放主机需要额外安装的软件,一般是通过编译源码方式安装的程序

/var 这个目录存放会不断扩充的东西,一般将经常修改的目录放在此,最常见的就是日志文件

/selinux 是一种安全子系统,能控制程序只访问特定文件

二、vi 和 vim 常用的三种模式

vi 和 vim 是 linux 最长用的编辑器

1、一般模式(默认)

        以 vim 打开某个文件,一进入就是一般模式,该模式下不可更改文件

2、编辑模式

        按 i 或 a 都能进入编辑模式,进入该模式后才可以对文件进行修改。在该模式下左下角会显示插入

3、命令行模式

        需要在一般模式下才能进入命令行模式,如果在编辑模式则需要按 ESC 键来返回一般模式。在一般模式下后,按 :或者 / 就可以进入命令行模式,在该模式下可以提供相关指令,完成读取、存盘、替换、离开 vim 、显示行号等功能。左下角会显示 :或 / ,之后可输入 wq 代表保存并退出,q 代表退出,q!代表强制退出

4、快捷键的使用

(1)yy 拷贝当前行。5 yy 拷贝从当前行向下的5行。p 即进行粘贴

(2)dd 删除当前行。5 dd 删除从当前行向下的5行

(3)在一般模式下输入 / 来进入命令行模式,再输入关键字,按回车后即可进行查找,输入 n 即查找下一个

(4)在一般模式下输入 :,进入命令行模式,输入 set nu,即可显示行号,输入 set nonu,即取消行号

(5)在一般模式下 输入 gg 即到文件首行,输入 G 即到文件末行

(6)如果想撤销之前的操作,则在一般模式下按 u 即可

(7)在一般模式下,输入一个数字,再按下 shift g ,即可跳转到你输入数字所指向的行

三、关机和重启命令

1、介绍

        shutdown -h now,立刻进行关机

        shutdowm -h 1,一分钟后关机

        shutdown -r now,立刻进行重启

        halt,立刻关机

        reboot,立刻重启

        sync,把内存数据同步到磁盘

2、注意

        不管是重新启动还是关闭系统,最好都手动执行一次 sync 命令,把内存中的数据写到磁盘中

四、用户登录和注销

1、介绍

(1)切换用户

        su - 用户名

(2)输入 logout 注销用户

        loglout

2、注意

        尽量少用 root 账号,避免误操作。logout 注销指令在图形运行级别无效,在运行级别 3 才有效

五、用户管理

1、介绍

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

2、添加用户

(1)基本语法

        useradd 用户名

(2)说明

        在创建用户成功后,会自动创建和用户同名的家目录。也可以通过 useradd -d 目录名 用户名,给新创建的用户指定家目录

3、指定/修改密码

(1)基本语法

        passwd 用户名

        pwd,显示当前用户所在目录

(2)说明

        如果你输入的密码过于简单,他会提示你,不过你可以不管他接着输入就好,会生效的

4、删除用户

(1)基本语法

        userdel 用户名

        userdel -r 用户名

(2)说明

        可以看到家目录中已经没有 visiter03 了,如果不用 -r 则只会删除用户,但是用户的家目录会留下,使用 -r 则连家目录都不会留下。而一般就算删除用户还是会留下家目录的,因为其中存放了很多该用户的成果(如果你觉得这个用户写的东西啥都不是,那就给他彻底删掉,hh)

5、查询用户信息指令

(1)基本语法

        id 用户名

6、查看当前登录用户

(1)基本语法

        whoami

        who am i

7、用户组

(1)介绍

        类似于角色,将不同用户但是有相同共性的,放在一个用户组下,则只需要对用户组分配权限,组内用户就自然有该权限

(2)新增组

        groupadd 组名

(3)删除组

        groupdel 组名

(4)增加用户时直接加上组

        useradd -g 用户组名 用户名

8、用户和组相关文件

(1)/etc/passwd 文件

        用户的配置文件,记录用户的各种信息

        每行含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell

(2)/etc/shadow 文件

        口令配置文件

        每行含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

(3)/etc/group 文件

        组的配置文件,记录 linux 包含的组的相关信息

        每行含义:组名:口令:组标识号:组内用户列表

六、实用指令

1、指定运行级别

(1)运行级别说明

        0:关机

        1:单用户模式,可以用来找回密码

        2:多用户状态无网络服务

        3:多用户状态有网络服务(multi_user.target

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

        5:图形界面(graphical.target

        6:系统重启

        常用运行级别为 3 和 5

(2)切换运行级别

        init [0123456]

(3)查看当前默认运行级别

        systemctl get-default

(4)设置默认级别

        systemctl set-default TARGET.target

2、通过单用户模式找回密码

(1)启动系统,在界面按 e 进入编辑页面

(2)进入编辑页面,找到以 Linux16 所在段的最后,输入 init=/bin/sh

(3)输入完成后,按快捷键 ctrl+x 进入单用户模式

(4)接着在光标闪烁的位置输入 mount -o remount,rw /,完成后按回车

(5)在新的一行输入 passwd,即可修改密码

(6)接着在鼠标闪烁处输入 touch /.autorelabel,完成后按回车

(7)继续在光标闪烁处,输入 exec ./sbin/init,完成后按回车,系统会自动重启,新的密码生效

3、帮助指令

(1)man,获得帮助信息

        基本语法:man [命令或配置文件]

        注:在 linux 下,隐藏文件是以 . 开头

(2)help,获得 shell 内置命令的帮助信息

        基本语法:help [命令]

4、文件目录类

(1)pwd 指令,显示当前工作目录的绝对路径

        基本语法:pwd

(2)ls 指令

        基本语法:ls [选项] [目录或是文件]

        常用选项:

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

                -l:以列表的方式显示信息

(3)cd 指令,切换到指定目录

        基本语法:cd [参数]

        cd 或 cd~ ,回到自己的家目录

        cd.. ,回到当前目录的上一级目录

(4)mkdir 指令,用于创建目录

        基本语法:mkdir [选项] 要创建的目录名

        常用选项:

                -p:创建多级目录

(5)rmdir 指令,删除空目录

        基本语法:rmdir [选项] 要删除的空目录

        注意:rmdir 删的是空目录,如果目录下有内容,则无法删除

(6)touch 指令,创建空文件

        基本语法:touch 文件名称

(7)cp 指令,拷贝文件到指定目录

        基本语法:cp [选项] source dest

        常用选项

                -r:递归复制整个文件夹

        注意:强制覆盖不提示的方法  \cp

(8)rm 指令,移除文件或目录

        基础语法:rm [选项] 要删除的文件或目录

        常用选项:

                -r:递归删除整个文件夹

                -f:强制删除不提示

(9)mv 指令,移动文件与目录或重命名

        基本语法:mv oldNameFile newNameFile(重命名)

                          mv /temp/moveFile /targetFolder(移动文件)

(10)cat 指令,查看文件内容

        基本语法:cat [选项] 要查看的文件

        常用选项:

                -n:显示行号

        注意:cat 只能浏览文件,而不能修改文件,为了浏览方便,一般会带上管道命令 | more

(11)more 指令

        基本语法:more 要查看的文件

        操作说明:

                空白键        向下翻一页

                enter          向下翻一行

                q                离开 more ,不再显示该文件内容

                ctrl+f        向下滚动一屏

                ctrl+b        返回上一屏

                =                输出当前行号

                :f                输出文件名和当前行号

(12)echo 指令,输出内容到控制台

        基本语法:echo [选项] [输出内容]

        

(13)head 指令,显示文件开头部分,默认显示前10行

        基本语法:head 文件

                          head -n 5 文件(查看头5行内容)

(14)less 指令,在显示文件内容时,并不是一次将整个文件加载后才显示,而是根据需要加载内容,对于显示大型文件有较高效率

        基本语法:less 要查看的文件

        操作说明

                空白键        向下翻一页

                pagedown        向下翻一页

                pageup            向上翻一页

                /字符串             向下搜寻字符串的功能;n,向下寻找;N,向上寻找

                q                      离开 less

(15)tail 指令,输出文件中尾部的内容,默认显示尾10行

        基本语法:tail 文件

                          tail -n 5 文件

                          tail -f 文件(实时追踪文档的所有更新)

(16)> 指令和 >> 指令,> 输出重定向和 >> 追加

        基本语法:ls -l > 文件(列表的内容写入文件中)

                          ls -al >> 文件(列表的内容追加的文件末尾)

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

                          echo “内容” >> 文件

(17)ln 指令,软连接也叫符号连接

        基本语法:ln -S [原文件或目录] [软连接名]

        注意:当我们使用 pwd 查看目录时,仍然看到的是软连接所在目录

(18)history 指令,查看已执行过的历史命令,也可执行历史命令

        基本语法:history

5、时间日期类

(1)date 指令,显示当前日期

        基本语法:date(显示当前时间)

                          date +%Y(显示当前年份)

                          date +%m(显示当前月份)

                          date +%d(显示当前是那一天)

                          date “+%Y-%m-%d %H:%M:%S”

(2)date 指令,设置日期

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

(3)cal 指令,查看日历

        基本语法:cal [选项] ,不加选项就显示本月日历

6、搜索查找类

(1)find 指令,从指定目录向下递归的遍历各个子目录,将满足条件的文件或目录显示出来

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

        选项说明:

                -name,按指定的文件名查找模式查找文件

                -user,按指定用户名查找文件

                -size,按指定文件大小查找文件

(2)locate 指令,无需遍历整个文件系统,查询速度较快

        基本语法:locate 搜索文件名

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

(3)which 指令,查看某个指令在哪个目录下

(4)grep 指令和管道符号

        grep 过滤查找,管道符 | ,表示将前一个命令的处理结果传给后面的命令处理

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

        常用选项:

                -n:显示匹配行及行号

                -i:忽略字母大小写

7、压缩和解压类

(1)gzip 和 gunzip 指令

        基本语法:gzip 文件(压缩文件,压缩为 *.gz)

                          gunzip 文件.gz(解压缩)

(2)zip 和 unzip 指令

        基本语法:zip [选项] xxx.zip 将要压缩的内容(压文件和目录)

                          unzip [选项] xxx.zip(解压)

        zip 常用选项:

                -r:递归压缩,压缩目录

        unzip 常用选项:

                -d 目录:指定解压后文件的存放目录

(3)tar 指令,是打包指令,打包后的文件是,xxx.tar.gz

        基本语法:tar [选项] xxx.tar.gz 打包内容

        常用选项:

                -c:产生 .tar 打包文件

                -v:显示详细信息

                -f:指定压缩后的文件名

                -z:打包同时压缩

        压缩:-zcvf

        解压:-zxvf

七、组管理和权限管理

1、介绍

        在 linux 中的每个用户必须属于一个组,不能独立于组外。在 linux 中每个文件有所有者、所在组、其他组的概念

2、文件/目录所有者

(1)查看文件的所有者

        ls -ahl

(2)修改文件的所有者

        chown 用户名 文件名

        -R:若是目录则递归生效

3、文件/目录所在组

(1)查看文件/目录所在组

        ls -ahl

(2)修改文件所在的组

        chgrp 组名 文件名

        -R:若是目录则递归生效

4、改变用户所在组

        在添加用户时,可以指定将该用户添加到哪个组中,同样的用 root 的管理员权限可以改变某个用户所在的组

(1)改变用户所在组

        usermod -g 新组名 用户名

        usermod -g 目录名 用户名,改变该用户登录的初始目录,但首先用户需要有进入到新目录的权限

5、权限的基本介绍

        ls -l 中显示的内容如下:-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc

        0-9位说明

(1)第 0 位确定文件类型

        l 是链接,相当于快捷方式

        d 是目录,相当于文件夹

        c 是字符文件,鼠标、键盘

        b 是块设备,如硬盘

        1-3位确定所有者,4-6位所在组拥有该文件的权限,7-9其他组用户拥有该文件的权限

(2)rwx 作用到文件

        ① [r]代表可读:可以读取、查看

        ② [w]代表可写

        ③ [x]代表可执行

(3)rwx 作用到目录

        ① [r]代表可读:可以读取、ls 查看目录内容

        ② [w]代表可写:可以修改,对目录内创建、删除、重命名目录

        ③ [x]代表可执行:进入该目录

(4)用数字表示权限

        r=4,w=2,x=1

6、修改权限

        u:所有者、g:所在组、o:其他组、a:所有人

(1)chmod u=rwx,g=rx,o=x 文件/目录名

(2)chmod o+w 文件/目录名

(3)chmod a-x 文件/目录名

(4)通过数字变更权限

        chmod 751 文件/目录名

八、crond 任务调度

crontab 进行定时任务的设置

1、概述

        任务调度:是指系统在某个时间执行的特定的命令或程序

        任务调度分类:

                ① 系统工作:有些重要的工作必须周而复始的执行,如病毒扫描

                ② 个别用户工作:个别用户可能希望执行某些程序,如对 mysql 数组库的备份

2、基本语法

        crontab [选项]

3、常用选项

        -e:编辑 crontab 定时任务

        -l:查询 crontab 任务

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

4、参数说明

        第一个 *:一小时当中的第几分钟,0-59

        第二个*:一天当中的第几个小时,0-23

        第三个*:一个月中的第几天,1-31

        第四个*:一年当中的第几个月,1-12

        第五个*:一周当中的星期几,0-7(0与7都是星期天)

5、特殊符号的说明

        *,代表任何时间。如第一个*代表一小时中每分钟都执行一次

        ,代表不连续的时间。如 0 8,12 * * * 代表每天 8:00与12:00 都执行一次

        -,代表连续的时间范围。如 0 5 * * 1-6 代表周一到周六凌晨5:00执行命令

        */n,代表没隔多久执行一次

6、crond 相关指令

        crontab -r,终止任务调度

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

        service crond restart,重启任务调度

7、at 定时任务

(1)介绍

        ① at 命令是一次性定时计划任务,at 的守护进程 atd 会以后台模式运行,检查作业作业队列

        ② 默认情况下,atd 守护进程每60s检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业

        ③ at 命令是一次性定时计划任务,执行完一个任务后不再执行此任务

(2)at 命令格式

        at [选项] [时间]

        ctrl+d,按两次结束 at 命令的输入

(3)at 时间定义

        ① 接受在当天的 hh::mm 式的时间制定

        ② 使用midnight,noon,teatime来指定时间

        ③ 指定命令执行的具体日期,格式为 month day 或 mm/dd/yy 或 dd.mm.yy,指定的日期必须跟在指定的时间后面,如:22:00 2023-9-8

        ④ 采用12小时制,am 与 pm

        ⑤ 使用相对计时法,格式为:now + count time-units,now是当前时间,time-units是时间单位,可以是minutes、hours、days、weeks,count是时间的数量,几天、几小时。如:

                now + 5 minutes

        ⑥ 直接使用 today、tomorrow来指定命令的时间

(4)at 命令选项

        -m:当指定的任务完成后,将给用户发送邮件,即使没有标准输出

        -I:atq 的别名(查看系统中没有执行的工作任务)

        -d:atrm 的别名(删除指定任务,如 atrm 5)

        -v:显示任务将被执行的时间

        -c:打印任务的内容到标准输出

        -V:显示版本信息

        -q<队列>:使用指定队列

        -f<文件>:从指定文件读入任务而不是从标准输入读入

        -t<时间参数>:以时间参数的形式提交要运行的任务

(5)实例

        at 5pm + 2 days

        atq

        at now + 2 minutes

        atrm 5

九、Linux 分区

1、介绍

(1)Linux 无论有几个分区,分给哪一目录使用,归根结底只有一个根目录,一个独立且唯一的文件结构,linux 中每个分区都是用来组成整个文件系统的一部分

(2)Linux 采用了一种叫“载入”的处理方法,将一个分区和一个目录联系起来

2、查看所有设备的挂在情况

        命令:lsblk 或 lsblk -f

3、虚拟机增加硬盘

(1)在虚拟机设置中,在设备列表里添加硬盘。然后重启才能识别

(2)开始分区,分区命令

        fdisk /dev/sdb

        开始对 sdb 分区

        m:显示命令列表

        p:显示磁盘分区

        n:新增分区

        d:删除分区

        w:写入并退出

        注意:开始分区后输入 n ,新增分区,然后选择 p ,分区类型为主分区。两次回车默认剩余全部空间。最后输入 w 写入分区并退出,若不保存退出,则输入q

(3)格式化磁盘,分区命令

        mkfs -t ext4 /dev/sdb,其中 ext4 为分区类型

(4)进行挂载,将一个分区与一个目录联系起来

        mount 设备名称 挂载目录,如 mount /dev/sdb1 /newdisk

        unmount 设备名称/挂载目录,如 unmount /dev/sdb1

        注:用命令行挂载重启后就会失效

(5)永久挂载,通过修改 /etc/fstab 实现,添加完成后,执行 mount -a,立即生效

4、磁盘情况查询

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

        df -h

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

        du -h

        -s:指定目录占用大小汇总

        -h:带计量单位

        -a:含文件

        -c:列出明细的同时,增加汇总值

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

        

5、实用指令

(1)统计 /opt 文件夹下文件的个数

        ls -l /opt | grep "^-" | WC -l

(2)统计 /opt 文件夹下目录的个数

        ls -l /opt | grep "^d" | WC -l

(3)统计 /opt 文件夹下文件的个数,包括子文件夹里

        ls -lR /opt | grep "^-" | WC -l

(4)统计 /opt 文件夹下目录的个数,包括子文件夹里

        ls -lR /opt | grep “^d” | WC -l

(5)以树状显示目录结构,注意,若没有 tree ,则使用 yum install tree 安装

        tree /home

十、进程管理

1、介绍

(1)在 linux 中,每个执行的程序都称为一个进程,每个进程都有一个 ID 号(pid)

(2)每个进程都可能以两种方式存在。前台与后台

(3)一般系统的服务都是以后台进程的方式存在,而且会常驻在系统中。直到关机才结束

2、显示系统执行的进程

        ps -aux

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

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

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

3、指令说明

        USER:用户名称

        PID:进程号

        %CPU:进程占 cpu 的百分比

        VSZ:进程占虚拟内存的大小(kb)

        RSS:进程占用的物理内存的大小(kb)

        TTY:终端名称

        STAT:进程状态,S-睡眠、s-表示该进程是会话的先导进程、N-代表比普通优先级更低的优先级、R-正在运行、D-短期等待、Z-僵死进程、T-被跟踪或被停止

        START:进程启动时间

        TIME:进程使用 cpu 总时间

        COMMAND:启动进程所用的命令和参数

4、终止进程 kill 和 killall

        基本语法:kill [选项] 进程号

                          killall 进程名称

        常用选项:

                -9:表示强迫进程立即停止

5、实例,以全格式显示当前所有的进程,查看进程的父进程

        ps -ef

        -e:显示所有进程

        -f:全格式

6、服务管理

(1)介绍

        服务本质就是进程,但是运行在后台,通常会监听某个端口,等待其他程序的请求,因此又称为守护进程

(2)service 管理命令

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

        service管理的服务在 /etc/init.d 查看

(3)查看服务名

        ① ls -l /etc/init.d

        ② setup,可以看到所有服务

(4)chkconfig 指令

        通过 chkconfig 命令可以给服务的各个运行级别设置自启动和关闭

        基本语法:chkconfig 服务名 --list

                          chkconfig --level 5 服务名 on/off

        注意:重启机器才会生效

(5)systemctl 管理指令

        ① systemctl [start | stop | restart | status] 服务名(即可生效,但不持久)

        ② systemctl list-unit-files [| grep 服务名](查看服务的开机启动状态)

        ③ systemctl enable 服务名(设置服务开机启动,永久生效)

        ④ systemctl disable 服务名(关闭服务开机启动,永久生效)

        ⑤ systemctl is-enabled 服务名(查询某个服务是否自启动)

(6)打开或关闭指定端口

        在生产环境中,需将防火墙打开,而打开了那么外部请求数据包就不能跟服务器监听端口通讯。这时要打开指定端口。

        ① firewall 指令

                打开端口:firewall-cmd --permanent --add-port=端口号/协议

                关闭端口:firewall-cmd --permanent --remove-port=端口号/协议

                重新载入,才能生效:firewall-cmd --reload

                查询端口是否开放:firewall-cmd --query-port=端口号/协议

(7)动态监控进程

        基本语法:top [选项]

        注意:top 与 ps 很相似,但 top 与 ps 最大不同在于,top 执行一段时间可以更新正在运行的进程

        ① 交互操作说明

        P:以 cpu 使用率排名(默认)

        M:以内存使用率排序

        N:以 PID 排序

        q:退出 top

        ② 应用

                监视特定用户:1> 输入top,按回车

                                          2> 输入 u,按回车

                                          3> 输入用户名,即可

                终止指定进程:1> 输入 top,按回车

                                          2> 输入 k ,按回车

                                          3> 输入 PID ,即可

(8)监控网络状态

        基本语法:netstat [选项]

        常用选项:

                -an:按一定顺序排列输出

                -p:显示哪个进程在调用

十一、rpm 包的管理

1、rpm 包的其他查询指令

        rpm -qa,查询安装的所有 rpm 软件包

        rpm -q 软件包名,查询软件包是否安装

        rpm -qi 软件包名,查询软件包信息

        rpm -ql 软件包名,查询软件包中的文件

        rpm -qf 文件全路径名,查询文件所属的软件包

2、卸载 rpm 包

        rpm -e RPM包的名称

        注意,如果其他软件包依赖于要卸载的软件包,卸载,卸载时会产生错误信息,若执意

rpm -e -nodepstoorpm

3、关于 yum

(1)介绍

        yum是 shell 前端软件包管理器。基于 RPM 包管理,能从指定服务器自动下载 RPM 包且安装,可自动处理依赖关系,并且以此安装所有依赖的软件包

(2)基本指令

        yum list | grep xxx

        yum install  xxx

十二、Shell 编程

1、介绍

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

2、脚本格式要求

(1)脚本以 #!/bin/bash 开头

(2)脚本需要有可执行权限

3、shell 的变量

(1)shell 变量介绍

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

        ② 系统变量:$HOME、$PWD、$SHELL等

                如:echo $HOME

        ③ 显示当前 shell 中所有变量:set

(2)shell 变量的定义

        ① 定义变量:变量名=值

        ② 撤销变量:unset 变量名

        ③ 声明静态变量:readonly 变量

        注:静态变量不能 unset

        ④ 定义变量的规则

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

                2> 等号两侧不能有空格

                3> 变量名一般习惯为大写

        ⑤ 将命令的返回值赋给变量

                A=`date` 或 A=$(date)

4、设置环境变量

        基本语法

                export 变量名=变量值(将shell变量输出为环境变量/全局变量)

                source 配置文件(让修改后的配置文件立即生效)

                echo $变量名(输出环境变量的值)

        注意:在输出环境变量前,需让其生效:source /etc/profile

        shell 脚本的多行注释:

                :<<!

                        内容

                !

5、位置参数变量

(1)介绍

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

(2)基本语法

        ① $n,(n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数,要用大括号包含,${10})

        ② $*,(代表命令行中所有参数,把所有参数看成一个整体)

        ③ $@,(代表命令行中所有参数,把每个参数区分对待)

        ④ $#,(代表命令行中参数的个数)

6、预定义变量

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

(2)基本语法

        $$,(当前进程的进程号)

        $!,(后台运行的最后一个进程的进程号)

        $?,(最后一次执行命令的返回状态,0代表正确执行,否则执行不正确)

7、运算符

        基本语法

        (1)$((运算式)) 或 $[运算式] 或 expr m + n

        (2)注意 expr 运算符间要有空格

        (3)expr \*,/,%(乘,除,取余)

8、条件判断

(1)基本语法

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

(2)判断语句

        ① = 字符串比较

        ② 两个整数的比较

                -lt        小于

                -le        小于等于

                -eq        等于

                -gt        大于

                -ge        大于等于

                -ne        不等于

        ③ 按照文件权限进行判断

                -r        有读的权限

                -w        有写的权限

                -x        有执行的权限

        ④ 按照文件类型进行判断

                -f        文件存在,并且是一个常规的文件

                -e        文件存在

                -d        文件存在,并且是一个目录

9、流程控制

(1)if 判断

if [ condition ]
then
    代码
elis [ condition ]
then
    代码
else
    代码
fi

(2)case 语句

case $变量名 in
"1")
代码
;;
"2")
代码
;;
*)
代码
;;
esac

(3)for 循环

#方式一
for 变量 in 值1 值2 值3
do
    代码
done

#方式二
for ((初始值; 循环控制条件; 变量变化))
do
    代码
done

10、read 读取控制台输入

(1)基本语法:read (选项) (参数)

(2)选项

                -p:指定读取时的提示符

                -t:指定读取时等待的时间(s),若超时,就不再等待

(3)参数

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

11、函数

(1)介绍

        shell 编程和其他编程语言一样,有系统函数和自定义函数

(2)系统函数

        ① basename 基本语法

                功能:返回完整路径最后 / 的部分,常用于获取文件名

        basename [pathname] [suffix]

        ② dirname 基本语法

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

        dirname [文件的绝对路径]

(3)自定义函数

function funname()
{
    action;
    return int;
}

调用即直接写函数名:funname 值

总结实战

        需求:每天凌晨两点半自动备份数据库

        思路:通过需求可知在每天两点半自动执行,因此必然会用到任务调度。那接下来我们只需要编写备份数据库的代码即可,那么如何编写呢?首先,我们要有一个目录专门用来存放备份数据的,其次数据库的备份要调用数据库备份的命令,在有备份文件后,最好是通过打包压缩来存放,同时考虑到,该脚本每天都执行,时间久了就会有很多用不上的备份文件,这些文件是可以清除的,因此每次脚本执行时都删除10天前的备份文件。好啦,现在思路也有了。开始写代码吧

#!/bin/bash
#备份目录
BACKUP=/data/backup/db
#获取当前时间
DATETIME=$(date +%Y-%m-%d_%H:%M:%S)
#数据库的地址
HOST=localhost
#数据库用户名
DB_USER=root
#数据库密码
DB_PW=输入自己的密码
#要备份的数据库
DATABASE=cystudy

#创建备份目录,如果不存在就创建
[ ! -d "${BACKUP}/${DATETIME}" ] && mkdir -p "${BACKUP}/${DATETIME}"
#备份数据库
mysqldump -u${DB_USER} -p${DB_PW} --host=${HOST} -q -R --databases=${DATABASE} | gzip > "${BACKUP}/${DATETIME}/$DATETIME.sql.gz"
#将备份文件打包
tar -zcvf $DATETIME.tar.gz ${DATETIME}
#删除对应的备份目录
rm -rf ${BACKUP}/${DATETIME}

#删除10前的备份文件
find ${BACKUP} -atime +10 -name "*.tar.gz" -exec rm -rf {} \;
echo "备份数据库 ${DATABASE} 成功"

脚本写好了,接下来让我们编辑任务调度吧

30 2 * * * /usr/sbin/mysql_db_backup.sh
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值