Linux

第一部分:Linux的应用领域

服务器领域

  1. Linux在服务器领域的应用是最强的。
  2. Linux免费、稳定、高效、开源、处理高并发强悍

嵌入式领域

  1. Linux运行稳定、对网络的良好支持性、低成本,且可以根据需要进行软件裁剪,内核最小可以达到几百KB等特点。
  2. 主要应用:机顶盒、数字电视、手机、智能家居等,以后在物联网中应用更加广泛。

第二部分:Linux基础

  1. 很多企业级的项目都部署到Linux/unix服务器运行。

一、Linux主要发行版本

  1. 一般所说的Linux是指Linux内核。
  2. 主要发行版本:Redhat(红帽)、centOS、ubuntu(乌班图)、Suse、红旗Linux

二、Linux和Unix的关系

  1. Linux是基于Unix的
    在这里插入图片描述

三、Linux和windows的区别

在这里插入图片描述

四、安装VM和centOS

1. 难点:虚拟机网络连接三种形式的说明

1. 桥接模式

在这里插入图片描述

  1. 安装的虚拟机会和用户的windos操作系统在同一网段。Linux可以和其他系统通信。
  2. 192.168.0这个网段理论上有255个网段,但是实际只有253个(除去网关1,和广播地址255)。
  3. 如果教室中人多,可能会造成ip地址冲突。
2. NAT模式(推荐)

在这里插入图片描述

  1. NAT模式可以转化一个网络地址,Linux可以访问到外网。
  2. 不会造成ip地址冲突。
3. 主机模式

你的Linux是一个独立的主机,不能访问外网。

2. 安装VM15

  1. 安装VM12,可能比较低。

3. 安装centOS7

  1. 阿里云镜像下载:http://mirrors.aliyun.com/centos/
  2. 安装过程出了很多问题,刚开始安装的centOS6,后来安装7终于好了

五、Linux的目录结构

  1. Linux的文件系统采用级层式的树状目录结构。在此结构的最上层是根目录“/”。
  2. 在Linux世界里,一切皆文件。

1. 目录结构

  1. /根目录
  2. /bin 存放最经常使用的目录
  3. /sbin Super User,存放系统管理员使用的系统管理程序。
  4. /home 存放普通用户的主目录,每一个用户都有一个自己的目录。
  5. /root 系统管理员。超级权限者的用户主目录。
  6. /etc 系统管理所需要的配置文件和子目录。
  7. /usr 用户的很多应用程序和文件都放在这个目录下。
  8. /boot 启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
  9. /dev 类似于windows的设备管理器,把所有的硬件已文件的形式存储。
  10. /opt 安装包存放目录(不是必须)
  11. /usr/local 安装软件的目录

六、远程登录

1. 为什么要远程登录?

  1. Linux的服务器部署在机房。
  2. 程序员需要远程登录进行操作。

2. 远程登录的客户端

Xshell:完美解决中文乱码问题。
Xshell可以远程访问Linux系统,需要Linux启动sshd服务,该服务会监听22端口。

1. 在Linux端开启sshd允许远程连接的服务。
  1. 终端输入setup命令。
  2. 选择系统服务
    在这里插入图片描述
  3. 找到sshd服务,开启(空格键:开启/关闭,*代表开启)
    在这里插入图片描述
2. 查看Linux系统的ip地址

ifconfig命令:查看Linux系统的ip地址

3. 文件上传和下载客户端

Xftp

七、vi和vim编辑器

  1. vi是文本编辑器
  2. vim是vi的增强版

1. vi和vim的三种模式

1. 一般模式

vim Hello.java 表示编辑Hello.java文件,如果没有该文件,编辑完成后也可以保存。

2. 编辑模式

按i或a进入编辑模式(按ESC退回到一般模式)

3. 命令行模式

:wq 表示保存并退出
:q 表示退出,不会保存
:q! 表示修改后不保存,强制退出

4. vim快捷键的使用
  1. 删除当前行dd
  2. 查找(在命令行模式下)输入/查找关键字,向下查找按n,向上查找按N
  3. 显示行号:set nu,取消行号:set nonu
  4. 定位到文档最上方按gg,定位到最底部按G(在一般模式下)
  5. 撤销操作,按u(相当于ctrl+z)
  6. 将光标定位到某一行,直接按行号+gg
  7. 删除一行操作,命令行模式下dd

八、关机、重启和用户登录注销

1. 关机
  1. shutdown -h now 立即关机
  2. shutdown -h 1 一分钟后关机
  3. shutdown -r now 立即重启
  4. halt 等价于关机
2. 重启系统

reboot 重启系统
sync 把内存数据同步到磁盘,防止数据丢失

3. 用户切换

su - 用户名:实现用户的切换

4. 用户注销

exit

九、用户的管理

  1. 在/home目录下,有每个用户的目录
  2. 当对应用户登录,会自动进入到自己的目录下。

1. 添加用户

useradd 用户名
设置密码:
passwd 用户名

2. 删除用户

  1. 删除用户,保留/home下用户对应的目录文件:userdel 用户名
  2. 删除用户,也删除/home下用户对应的目录文件:userdel -r 用户名
  3. 删除用户一般不删除用户对应的文件目录

3. 查询用户

id 用户名

4. 切换用户

  1. su - 用户名
  2. 从高权限用户切换到低权限用户不需要密码。
  3. 返回原来的用户,直接exit指令。

5. 查询所有用户

cat /etc/passwd

十、用户组

  1. 系统可以对用共性的多个用户进行统一管理。

1. 添加组

groupadd 组名

2. 删除组

groupdel 组名

3. 增加用户时直接加入组

useradd -g 用户组 用户名

4. 修改用户的组

usermod -g 用户组 用户名

5. 查询所有用户组

cat /etc/group

十一、用户和组的配置文件

1. 用户配置文件(存放用户信息)

/etc/passwd
在这里插入图片描述

2. 组配置文件(存放组信息)

/etc/group
在这里插入图片描述

3. 口令配置文件(存放密码和登录信息)

/etc/shadow(加密文件)

第三部分:常用指令

一、运行级别

0:关机
1:单用户【找回丢失密码时可以用】
2:多用户,没有网络
3:多用户,有网络
4:系统还未使用该状态
5:图形界面
6:系统重启

常用运行级别3和5,可以在/etc/inittab文件的id:5:initdefalut中修改默认级别
在这里插入图片描述

二、帮助指令

当我们对某个指令不熟悉时,可以使用帮助指令进行了解使用。

1. man 获取帮助信息

man ls 查看ls指令

2. help

获得shell内置命令的帮助信息。
help cd 查看cd命令的帮助信息

三、文件目录指令

1. pwd 显示当前目录

print working directory缩写
显示当前工作目录的绝对路径。

2. ls指令

  1. ls 【选项】 【目录或是文件】
    常用选项:
    -a 显示所有文件和目录,包括隐藏的
    -l 以列表方式显示
    -h 显示文件大小加单位

可以直接ll 显示文件列表

3. cd命令

cd … 回到上一级目录
cd ~ 回到家目录
cd /home 绝对路径:从根目录下进入到home目录
cd …/home 相对路径:当前在/root下

4. mkdir命令

  1. 创建目录(make directory)
  2. mkdir 【选项】创建的目录
  3. 常用选项
    -p 创建多级目录
  4. 创建一级目录 mkdir /home/tiger
  5. 创建多级目录 mkdir -p /home/animal/dog

5. rmdir删除目录

删除空目录
rmdir [选项] 删除的空目录
rmdir /home/dog
如果不是空目录,就无法删除
如果要删除非空目录 rm -rf 删除的目录(-rf 表示递归删除,rm -rf /* 删除所有Linux文件,不要用)

6. touch创建一共空文件

touch 文件名称
创建一个文件:touch hello.txt
创建多个文件:touch hello.txt hello2.txt

7. cp拷贝文件

  1. cp [选项] 要拷贝的文件 拷贝的位置
  2. 常用选项
    -r 递归复制整个文件夹
  3. cp hello.txt bbb 将当前文件夹下hello.txt文件拷贝到bbb目录下
  4. cp -r bbb aaa 将bbb目录拷贝到aaa目录下
  5. 如果复制文件夹时,已存在的文件会提示是否覆盖,如果文件太多,不想一个一个提示,可以使用/cp,直接覆盖不提示。

8. rm删除文件或目录

  1. rm [选项] 删除的文件或目录
  2. 常用选项
    -r 递归删除整个文件夹
    -f 强制删除不提示
  3. 删除一个文件 rm /home/hello.txt
  4. 递归删除整文件夹 rm -rf bbb

9. mv移动文件或重命名

在当前目录下是重命名
mv hello.txt dog.txt 修改文件名
指定目录就是移动文件
mv hello.txt /home/aaa 移动文件到home的aaa目录下

10. cat查看文件内容

只能查看文件,不能修改

  1. cat [选项] 查看的文件
  2. 常用选项
    -n 显示行号
  3. 查看文件 cat -n /etc/profile
  4. 分页查看 cat -n /etc/profile | more(空格下一页)(| more是管道命令)

11. more分页显示文本内容

  1. more指令是一个基于vi编辑器的文本过滤器,按页显示文本内容。
  2. more 查看的文件
  3. more中的内置快捷键
    1. 空格 向下翻页
    2. entre 下一行
    3. q 离开
    4. ctrl+f 向下滚动一屏
    5. ctrl+b 向上滚动一屏
    6. = 输出当前行号
    7. :f 输出文件名和当前行号

12. less分屏查看文件内容

  1. 功能于more类似,但是比more更强大。
  2. less 查看的文件
  3. less在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示加载需要的信息,对于大型文件具有较高效率。可以查看日志
  4. 快捷键
    空格 下一页
    pagedown 下一页
    pageup 上一页
    /字符 向下搜索字符功能,n 向下查找,N 向上查找
    ?字符 向上搜索字符功能,n 向下查找,N 向上查找
    q 离开

13. >覆盖和>>追加

“>” 表示输出重定向,覆盖
“>>” 表示追加

ls -l > aaa.txt 将列表内容写到aaa.txt文件(覆盖)
ls -al >> aaa.txt 将列表内容追加到aaa.txt文件
cat aaa.txt > bbb.txt 将文件aaa.txt覆盖到bbb.txt文件
echo “内容” >> aaa.txt 将内容追加到aaa.txt
cal > b.txt 将日历信息写入覆盖到b.txt文件中(cal打印当前日历信息)

14. echo输出内容到控制台

echo $PATH 输出Linux的环境变量
echo “hello” 输出一段文本

15. head查看文件的开头

head显示文件的开头部分,默认显示10行
head -n 5 显示文件前五行

16. tail输出文件尾行的部分

默认输出尾部10行
tail 文件
tail -n 5 输出尾部5行
tail -f 文件 实时跟踪文档的所有更新(经常用,查看日志)退出ctrl+c

17. ln快捷链接

软链接也叫符号链接,类似于windows中的快捷方式,主要存放其他文件的路径。
ln -s [原文件或目录] [软连接名] 给原文件创建一个软连接
ln -s /root linkToRoot 创建一个链接linkToRoot连接到/root目录(cd linkToRoot 就进入到了/root目录下,但是当前目录还在linkToRoot下)
rm -rf linkToRoot 删除软连接

18. history查看历史指令

可以查看历史指令,也可以执行历史指令
history 查看所有历史指令
history 10 显示最后10条指令
!275 执行编号为275的指令

四、时间日期指令

1. date显示日期

date 显示当前日期
date “+%Y” 显示当前年份
date “+%Y年%m月%d日 %H:%M:%S” 格式化输出时间

2. date设置当前时间

date -s “2018-06-12 20:56:52” 设置时间

3. cal显示日历

cal 显示本月日历
cal 2020 显示2020年一年的日历

五、搜索查找指令

1. find查找文件或目录

  1. find指令将从指定目录向下递归遍历其各个子目录,查找满足条件的文件或目录。

  2. find [查找的目录] [选项]

  3. 常用选项
    -name 按名称查找
    -user 按所属用户查找
    -size 按文件大小查找

  4. find /home -name aaa.txt 查找home目录下名称为aaa.txt的文件(查找到了显示路径,没查找到不显示)

  5. find /opt -user root 查找opt目录下属于root用户的文件

  6. find / -size +20M 查找根目录下大于20M的文件(-20M表示小于20M,20M表示等于20M)

  7. find /home -name *.txt (查找home路径下,txt的文件)

2. locate快速定位文件路径

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

locate 搜索文件

由于locate指令基于数据库进行查询,所以第一次运行时,必须使用updatedb指令创建locate数据库。
locate aaa.txt 查找aaa.txt的路径

3. grep过滤查找和管道符号|

  1. grep过滤查找,管道符“|” 表示将前一个命令的处理结果传递给后面的指令处理。
  2. grep 【选项】查找内容 原文件
  3. 常用选项
    -n 显示出行号
    -i 忽略大小写查找
  4. grep hello aaa.txt 在aaa.txt文件中查找hello
  5. grep -n hello aaa.txt 在aaa.txt文件中查找hello并显示出行号
  6. grep -ni hello aaa.txt 在aaa.txt文件中忽略大小写查找hello并显示出行号
  7. cat aaa.txt | grep -ni hello 显示文件aaa.txt使用管道符交给grep忽略大小写查找hello并显示行号

六、 压缩和解压指令

1. gzip/gunzip 压缩和解压

gzip 文件 用于压缩(压缩成.gz文件,压缩之后原来的文件不保留)
gunzip 文件.gz 用于解压

gzip aaa.txt 压缩aaa.txt文件
gunzip aaa.txt.gz 解压文件

2. zip/unzip 压缩和解压

zip 用于压缩文件(压缩后原文件还存在)
unzip 用于解压文件(解压后原压缩文件还存在)

zip [选项] 压缩名称 文件或目录
unzip [选项] xxx.zip

  1. zip选项
    -r 递归压缩,及压缩目录
  2. unzip选项
    -d 目录 解压到那个目录
  3. zip -r myhome.zip /home 将home目录压缩成myhome.zip的压缩包
  4. unzip -d /opt myhome.zip 将文件解压到opt目录下

3. tar打包

  1. 可以压缩和解压

  2. 打包的文件时.tar.gz文件

  3. tar [选项] xxx.tar.gz

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

  5. tar -zcvf a.tar.gz a.txt b.txt 将a.txt和b.txt压缩打包成a.tar.gz文件

  6. tar -zcvf myhome.tar.gz /home 将整个home目录压缩打包成myhome.tar.gz文件

  7. tar -zxvf a.tar.gz 将压缩文件解压到当前目录

  8. tar -zxvf a.tar.gz -C /opt 将压缩文件解压到opt目录下(目录必须存在)

第四部分:组的管理和权限管理

Linux中每个用户必须属于一个组,不能独立于组外。

一、文件/目录的所有者

1. 查看文件所有者

  1. 当一个文件创建后,这个文件的创建者就是它的所有者,默认也在该用户的组下。
  2. ls -ahl
    在这里插入图片描述

2. 修改文件所有者

(change own)

  1. chown 用户名 文件名
  2. 修改用户过后,但是用户组不会变化

3. 修改文件所在组

chgrp 组名 文件名

4. 改变用户所在组

  1. 在添加用户时,指定用户的组
    useradd -g 组名 用户名
  2. 改变用户的组
    usermod -g 组名 用户名
  3. 改变用户初始的登录目录(/home目录/用户文件夹下)
    usermod -d 目录名 用户名

二、文件的权限

1. 基本介绍

-rw-r--r--

  1. 第0位表示文件的类型
    “-” 代表普通文件
    d 表示目录
    l 表示软连接文件
    c 表示字符设备(键盘、鼠标)
    b 块文件,硬盘

  2. 第1-3位表示文件所有者拥有的权限

  3. 第4-6位表示所有组的其他用户的权限

  4. 第7-9位表示其他组的用户的权限

  5. rwx作用在文件上
    r(read)可读
    w(write)可写:可以修改,但不代表可以删除该文件,删除文件的前提是对该文件目录有写的权限,才能删除该文件。
    x(execute)可执行

  6. rwx作用在目录上
    r 可读
    w 可以创建+删除+重命名
    x 可以进入该目录

  7. 后的那个数字表示子目录数,包含两个隐藏目录(.表示当前目录,..表示上一级目录)

  8. 时间表示 最后的修改时间

2. chmod修改权限

可以修改文件或目录权限

方式一:+、-、=变更权限

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

  1. 赋给权限
    chmod u=rwx,g=r,o=r 文件或目录名
  2. 增加减少权限
    chmod u-x,g+w 文件或目录名
  3. 减少权限
    chmod o-w 文件或目录名
方式二:数字改变权限

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

  1. 直接使用数字
    chmod 751 文件或目录名

三、chown修改文件所有者

  1. 修改文件所有者
    chown 用户名 文件名
  2. 修改文件的所有者和所在组
    chown 用户名:所在组 文件名
  3. -R 如果是目录,使其下所有子文件和目录递归改变
    chown -R 用户名 目录名

四、chgrp改变文件所在组

chgrp 组名 文件名或目录名

  1. -R 如果是目录,使其下所有子文件和目录递归改变
    chgrp -R 组名 目录名

第五部分:任务调度

  1. crontab进行定时任务设置
  2. 任务调度:指系统在某个时间执行特定的命令或程序
  3. 比如病毒扫描、mysql数据库的备份

一、基本语法

  1. crontab [选项]
  2. 常用选项
    -e 设置定时任务
    -l 查询crontab任务
    -r 删除当前用户所有的crontab任务

二、使用步骤

  1. crontab -e 编辑定时执行的消息(如果执行的内容较短,可以直接直接进行编写。执行步骤较多,就需要编写shell脚本)
  2. */1 * * * * ls -l /home >> /tmp/to.txt 每分钟执行一次ls -l /home并将输出内容追加到/tmp/to.txt文件中
    参数说明
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  3. 保存退出后就生效

三、应用实例

  1. 每隔一分钟,将当前日期信息,追加到/tmp/mydate文件中
    1. 在/home下编写一个shell脚本mytask.sh里面写入date >> /tmp/mydate
    2. 给mytask.sh一个可执行的权限 chmod 744 mytask.sh
    3. crontab -e 设置定时每分钟执行一次*/1 * * * * /home/mytask.sh
  2. 每天凌晨2:00将mysql数据库testdb备份到文件中mydb.bak
    1. 编写一个shell脚本mydbtask.sh里面写mysql的备份命令/usr/local/mysql/bin/mysqldump -u root -p123 testdb > /tmp/mydb.bak
    2. 给mydbtask.sh一个可执行命令chmod 744 mydbtask.sh
    3. crontab -e设置每天凌晨2:00写入文件中0 2 * * * /home/mydbtask.sh

四、相关指令

crontab -r 终止任务调度
crontab -l 列出任务调度
service crond restart 重启任务调度

第六部分:磁盘分区、挂载

一、分区基础知识

1. mbr分区(老版分区)

  1. 最多支持四个主分区
  2. 系统只能安装在主分区
  3. 扩展分区要占一个主分区
  4. MBR最大只支持2TB,但拥有良好的兼容性

2. gpt分区

  1. 支持无限多个主分区(但操作系统可能限制,如windows下最多128个分区)
  2. 最大支持18EB的大容量(1EB=1024PB 1PB=1024TB)
  3. windows7 64位以后支持gpt

二、Linux分区

1. 原理介绍

在这里插入图片描述

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

2. 硬盘说明

  1. Linux硬盘分IDE硬盘和SCSI硬盘,目前基本使SCSI硬盘
  2. 对于SCSI硬盘标识为“sd-?”,其中-为盘号(a为基本盘,b为基本从盘,c为辅助盘,d为辅助从盘),?表示分区,前四个分区用数字1-4表示,他们是主分区或扩展分区,从5开始就是逻辑分区。
  3. 使用lsblk(老师不离开) -f 查看系统分区和挂载信息(不加-f就可以看到分区大小)
    在这里插入图片描述

3. 给Linux添加一块新硬盘

挂载命令 mount
取消挂载 umount

  1. 给虚拟机添加一块新硬盘
  2. 分区
  3. 格式化
  4. 挂载目录
  5. 设置永久挂载

4. 查看磁盘使用情况

1. 查看磁盘使用

df -lh

2. 查看指定目录的磁盘占用情况
  1. du -h /目录
    -s 目录占用大小汇总
    -h 带单位显示
    -a 含文件
    –max-depth=1 子目录深度
    -c 列出明细的同时,增加汇总值
3. 统计文件个数
  1. 统计/home文件夹下文件的个数(使用管道符,wc表示统计)
ls -l /home | grep "^-" | wc -l
  1. 统计/home文件夹下目录的个数
ls -l /home | grep "^d" | wc -l
  1. 统计/home文件夹下包括子目录的文件个数(R是递归调用)
ls -lR /home | grep "^-" | wc -l
  1. 统计/home文件夹下目录包括子目录的个数
ls -lR /home | grep "^d" | wc -l
  1. 使用tree显示树状的目录结构
    如果没有该命令就使用yum install tree安装tree的软件包
    tree显示目录结构

第七部分:网络配置

一、网络配置原理

1. 查看网络IP和网关

  1. windows可以使用ipconfig查看网络配置信息。
  2. 查看虚拟网络编辑器
    点击虚拟机 – > 编辑可以设置IP地址的网关
  3. 使用ping 目的主机 可以测试当前服务器是否可以连接目的主机。

重启网络服务命令:service network restart

第八部分:进程的管理

一、进程基本介绍

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

二、ps显示系统执行的进程

  1. ps命令是用来查看目前系统中,有哪些正在执行,以及他们执行的状况。可以不加参数。
  2. ps -a 显示当前终端的所有进程信息
  3. ps -u 以用户格式显示进程信息
  4. ps -x 显示后台进程运行的参数

ps -aux | more 分页显示线程信息
ps -aux | grep sshd 过滤sshd服务的进程
ps -ef | more 分页显示父进程

三、终止进程kill和killall

kill [选项] 进程号 通过进程号杀死该进程
killall 进程名称 通过进程名称杀死进程,也支持通配符

  1. 常用选项
    -9 强进程立即停止

  2. 常见案例
    踢掉某个非法登录用户 先ps -aux | grep sshd 找到非法登录的进程号。然后kill 进程号
    终止一个终端 先ps -aux | grep bash查看终端(bash是终端),然后kill -9 终端进程号

四、显示进程树

  1. 以树状形式显示进程id:pstree -p
  2. 以树状形式显示进程的用户id:pstree -u

五、服务管理

服务本质就是进程,但是运行在后台的,通常监听某个端口,等待其他程序的请求,比如mysql、sshd、防火墙,因此我们又称守护进程。

  1. 查看防火墙的状态(centOS7): systemctl status firewalld service firewalld status
  2. 关闭防火墙: systemctl stop firewalld service firewalld stop
  3. 开启防火墙:systemctl start firewalld service firewalld start
  4. 关闭或启动防火墙是立即生效,但是只是临时设置,当重启系统后还是会回到原来的状态。

一、setup查看服务名

输入setup指令,查看系统服务

二、动态监控进程top

  1. top和ps指令很相似,都是用来显示正在执行的进程。但top可以在执行一段时间更新正在运行的进程。
  2. top [选项]
    在这里插入图片描述

三、监控网络状态

  1. netstat [选项]
  2. 选项说明
    -an 按一定顺序排列输出
    -p 显示那个进程调用
  3. netstat -anp | more 分页查看网络信息
  4. 查看开放了那些端口号netstat -nupl (UDP类型的端口),netstat -ntpl (TCP类型的端口)

第九部分:RPM

一、RPM包管理

  1. rpm是一种用于互联网下载包的打包及安装工具。它生成.RPM扩展名的文件。类似于windows的setup.exe。

1. 查看rpm安装包

  1. 显示所有的有没有安装火狐
    rpm -qa | grep firefox

  2. 查询所有rpm软件安装包 rpm -qa

  3. 查看软件的具体安装信息 rpm -qi firefox

  4. 查看一个软件安装了那些文件 rpm -ql firefox

  5. 查看一个文件属于那个安装包 rpm -qf /etc/passwd

2. 卸载rpm包

rpm -e firefox

如果其他软件包依赖于你要删除的软件包,卸载时回产生错误信息,可以使用rpm -e --nodeps firefox 进行强制删除(不推荐)

3. 安装rpm包

  1. rpm -ivh rpm包的全路径
  2. 参数说明:
    i = install 安装
    v = verbose 提示
    h = hash 进度条
  3. 安装火狐
    1. 找到firefox的安装rpm包,需要先挂载上centOS的iso镜像文件,然后在/media下找到rpm安装包。
    2. 然后拷贝到/opt目录下 cp firefox的rpm文件 /opt
    3. 进行安装 rpm -ivh rpm.安装包

第十部分:yum

一、yum基本介绍

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

二、yum基本指令

  1. 查询yum服务器是否有需要安装的软件
    yum list | grep 软件列表
  2. 安装指定的yum包(需要联网)(默认安装最新版本)
    yum install xxx

第十一部分:Linux搭建javaEE开发环境

一般安装软件放在/opt目录下

一、安装jdk1.7

  1. 使用Xftp6将jdk1.7的Linux安装包传到Linux的/opt目录下
  2. cd /opt目录下,使用 tar -zxvf jak1.7 进行解压
  3. 在/etc/profile文件中配置环境变量,G定位到文件末尾
JAVA_HOME=/opt/jdk1.7 (JAVA_HOME)
PATH=/opt/jdk1.7/bin:$PATH (路径)
export JAVA_HOME PATH (输出变量,环境变量生效)
  1. source /etc/profile 读取执行环境变量文件

二、Mysql5.6安装和配置

  1. 查询系统中有没有安装mysql
    rpm -qa | grep mysql
  2. 解压软件包
    tar -zxvf mysql版本
  3. 创建mysql的用户和用户组
    groudadd mysql
    useradd -g mysql mysql
  4. 修改/opt/mysql版本的权限(mysql软件的用户和用户组为mysql,mysql会有专人管理)(这里是安装在了/usr目录下)
    cd /usr/mysql版本
    chown -R mysql:mysql ./
  5. 安装一个包
    yum -y install autoconf
  6. 初始化mysql
    ./scripts/mysql_install_db --user=mysql --basedir=/usr/mysql --datadir=/usr/mysql/data
  7. 启动mysql
    service mysql start
  8. 如果启动失败修改一下文件名:mv /etc/my.cnf /etc/my.cnf.bak
  9. 在mysql的目录下指定密码:./bin/mysqladmin -u root password 'abc'
  10. cd bin 登录mysql ./mysql -u root -p

三、tomcat安装

  1. 将压缩包解压到/opt
    tar -zxvf tomcat版本
  2. 进入tomcat的bin目录下
    cd /tomcat/bin
  3. 启动tomcat服务
    ./startup.sh
  4. 使用Linux系统本地的火狐浏览器可以访问localhost:8080
  5. 但是我们需要使用自己的windows系统访问tomcat,输入Linux的 ip:8080
  6. 使防火墙放行8080端口:
firewall-cmd --zone=public --add-port=8080/tcp --permanent
  1. 重启防火墙:systemctl restart firewalld
  2. windows可以进行访问tomcat了

第十二部分:Shell编程

一、为什么要学习Sheel编程

  1. Linux运维工程师在进行服务器集群管理时,需要编写Shell程序来进行服务器管理。
  2. 对于javaEE和python程序员,编写shell脚本进行程序或服务器的维护,比如编写一个定时备份数据库的脚本。
  3. 对于大数据程序员,需要编写shell程序来管理集群。

二、什么是shell

在这里插入图片描述

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

三、shell快速入门

1. shell格式要求

  1. 脚本以#!bin/bash开头(告诉系统使用bash shell来进行解析,shell的版本很多)
  2. 脚本需要可执行权限

2. 编写第一个shell脚本

  1. 创建一个shell脚本的文件夹
    mkdir shell
  2. 编写一个shell文件,输出hello world
    vim firstShell.sh (sh表明是一个shell脚本,也可以用其他后缀)
#!/bin/bash
echo "hello wolrd!"
  1. 给shell脚本一个可执行权限
    chmod 744 firstShell.sh
  2. 执行shell脚本
    相对路径执行 ./firstShell.sh
    绝对路径执行 /root/shell/firstShell.sh
  3. 第二种执行方式:不给可执行权限,使用sh 执行(不推荐)
    chmod 644 firstShell.sh
    sh ./firstShell.sh

四、shell的变量

1. 基本介绍

  1. Linux Shell中的变量分为系统变量和用户自定义变量
  2. 系统变量:$HOME、 $PWD、 #SHELL、 $USER等
  3. 输出系统变量(echo输出,#相当于注释)
    在这里插入图片描述
  4. set | more 分页查看所有系统变量

2. shell变量的声明

  1. 定义变量 变量=值
  2. 撤销变量 unset 变量
  3. 声明静态变量 readonly 变量(静态变量不能unset)
  4. 例如

声明一个自定义变量
在这里插入图片描述
声明一个静态变量
在这里插入图片描述
可把变量提升为全局环境变量,供其他shell程序使用

3. 定义变量的规则

  1. 变量名称不能由数字开头
  2. 等号两侧不能有空格
  3. 变量名习惯大写

4. 将命令的返回值赋给变量

  1. 使用``符号
  2. 使用$()
    在这里插入图片描述

5. 设置环境变量

  1. 将shell变量输出为环境变量
    export 变量名=变量值
  2. 让修改后的配置信息立即生效
    source 配置文件
  3. 输出环境变量的值
    echo $变量名
  4. 配置jdk的环境变量
    JAVA_HOME=/opt/jdk1.7 (JAVA_HOME)
    PATH=/opt/jdk1.7/bin:$PATH (路径)
    export JAVA_HOME PATH (输出变量,环境变量生效)
  5. 定义一个tomcat的环境变量
    1. vim /etc/proflie
      在这里插入图片描述
    2. 修改配置文件后需要source /etc/profile 让配置文件生效
    3. 可以在控制台查看tomcat的环境echo $TOMCAT_HOME
    4. 定义成环境变量之后,就可以在其他的shell脚本文件中使用该环境变量

6. shell脚本的注释

‘#’ 表示单行注释
:<<! 多行注释 !

7. 命令行给shell脚本中传参

  1. 当我们执行一个shell脚本时,可以在执行后面加上传入的参数
  2. 例如:./firstShell.sh 100 200 这三段相当于三个参数
  3. 基本语法:
    1. $n:n为数字,$0代表执行脚本命令本身./firstShell.sh,$1-$9代表第一到第九参数,十以上参数需要加大括号${10}
    2. $* :代表所有参数,把所有参数看成一个整体
    3. $@:也代表所有参数,但是把每个参数区分对待
    4. $#:所有参数的个数

编辑shell脚本 vim firstShell.sh
在这里插入图片描述
传入参数
在这里插入图片描述

8. shell预定义变量

  1. 预定义变量就是shell设计者事先已经定义好的变量,可以直接在shell脚本中使用。
  2. 基本语法
    1. $$ 当前进程的进程号(PID)
    2. $! 后台运行的最后一个进程的进程号(PID)
    3. $? 最后一次执行命令的返回状态,0表示上一个命令执行正确,非0表示上一个命令执行不正确。

在这里插入图片描述

五、shell运算符

1. 基本语法

  1. $((运算符)) 或 $[运算符]
    在这里插入图片描述
    (推荐)
    在这里插入图片描述

  2. `expr m + n`
    在这里插入图片描述

  3. expr + - \* / % (乘号要\* 代表转义)

命令行输入两个参数,求参数的和在这里插入图片描述
在这里插入图片描述

2. 条件判断

[ 条件 ] 条件非空返回true,为空返回false

在这里插入图片描述

  1. 判断两个字符串是否相等
    在这里插入图片描述
  2. 判断数字的大小
    在这里插入图片描述
  3. 判断一个文件是否存在
    在这里插入图片描述

3. 流程判断

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

例如:
在这里插入图片描述
在这里插入图片描述

2. case
case 变量 in
"值")
	执行的语句
;;
"值")
	执行的语句
;;
*)
	执行的语句
;;

在这里插入图片描述
在这里插入图片描述

3. for循环
方式一:
for 变量 in 值1 值2 值3 ...
	do
		程序
	done

例1:使用$*输出所有输入参数
在这里插入图片描述

在这里插入图片描述
例2:
在这里插入图片描述

在这里插入图片描述

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

例:从1加到100
在这里插入图片描述

4. while循环
while[ 条件判断式 ]
	do
		程序
	done

例:输入一个数从1加到n
在这里插入图片描述
在这里插入图片描述

5. 从控制台中输入
  1. read [选项] 参数
  2. 选项:
    1. -p 指定输入时的提示内容
    2. -t 指定读取的等待时间(秒)

例1:从控制台输入一个数
在这里插入图片描述
例2:从控制台输入一个数,限制10秒内输入
在这里插入图片描述

六、shell函数

有系统函数和自定义函数。

1. basename函数

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

  1. 返回aaa.txt
    basename /home/aaa.txt --> aaa.txt
  2. 返回aaa文件名
    basename /home/aaa.txt .txt --> aaa

2. dirname函数

文件的绝对路径,返回目录部分

  1. 返回文件目录
    dirname /home/aaa/test.txt --> /home/aaa

3. 自定义函数

在这里插入图片描述
在这里插入图片描述

七、shell编程综合案例:备份数据库

  1. 编写备份数据库的shell脚本文件
#!/bin/bash

# 定时备份数据库

# 定义备份存放的路径
BACKUP=/data/backup/db
# 获取当前时间作为备份文件的文件名
DATETIME=$(date +%Y_%m_%d_%H%M%S)

# 输出一句话开始备份
echo "===开始备份==="
echo "===备份的路径是 $BACKUP/$DATETIME.tar.gz==="

# 配置数据库
# 主机
HOST=localhost
# 用户名
DB_USER=root
# 密码
DB_PWD=abc
# 需要备份的数据库
DATABSE=mydb

# 创建备份的路径
# 如果备份的路径存在,就直接使用,否则就创建
[ ! -d "$BACKUP/$DATETIME" ] && mkdir -p "$BACKUP/$DATETIME"

# 执行mysql的备份数据库指令
mysqldump -u$DB_USER -p$DB_PWD --host=$HOST | gzip > $BACKUP/$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 {} \;

echo "备份文件成功"

  1. 编写每天晚上2:10执行的定时执行shell文件
    contab -e
    10 2 * * * /usr/sbin/mysql_db_backup.sh
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值