linux学习简记

----------------------------------------------------------------感谢CSDN_感谢里面每一位大佬-----------------------------------------------------------------

 

目录

开源链接:https://www.linuxprobe.com/docs/LinuxProbe.pdf

一、部署虚拟环境安装linux系统 

1.4root密码重置

1.5RPM(红帽软件管理器)

1.6Yum软件仓库

1.7systemd初始化进程

二、新手必须掌握的linuxm命令

2.1强大好用的shell

2.2执行查看帮助命令

2.3常用系统工作的命令

2.4系统状态检查命令

2.5 工作目录切换命令

2.6 文本文件编辑命令

2.7 文件目录管理命令

2.8 打包压缩与搜索命令

三、管道符、重定向与环境变量

3.1输入输出重定向

3.2 管道命令符

3.3 命令行的通配符

3.4 常用的转义字符

3.5 重要的环境变量

四、Vim编辑器与shell命令脚本

4.1 Vim 文本编辑器

4.1.2 配置主机名称

4.2 编写 Shell 脚本

4.2.1 编写简单的脚本

4.2.2 接收用户的参数

4.2.3 判断用户的参数

 4.3 流程控制语句

4.3.1 if 条件测试语句

 4.3.2 for 条件循环语句

五、用户身份与文件权限

六、存储结构与磁盘划分

七、使用RAID与LVM磁盘阵列技术

八、iptables与firewalld防火墙

九、使用ssh服务管理远程主机

十、使用Apache服务部署静态网站

十一、使用vsftpd服务传输文件

十二、使用Samba或NFS实现文件共享

十三、使用BIND提供域名解析服务

十四、使用DHCP动态管理主机地址

十五、使用Postifx与Dovecot部署邮件系统

十六、使用Squid部署代理缓存服务

十七、使用iSCSI服务部署网络存储

十八、使用MariaDB数据库管理系统

十九、使用PEX+Kickstart无人值守安装服务

二十、使用LNMP架构部署动态网站环境


说是linux学习简记其实就是想做一篇读书笔记用于激励2021的自己,当然如果可以帮助到大家那我就更开心了。

本次选择的书籍是刘瑞老师的《linux就该这么学》链接下面给了有兴趣的可以去看看

开源链接:https://www.linuxprobe.com/docs/LinuxProbe.pdf

       前言中老师就将一段稻盛和夫先生在《活法》一段一直激励他自己的话送给了读这本的人:

“工作马马虎虎,只想在兴趣和游戏中寻觅快活,充其量只能获得一时的快感,绝不能尝到从心底涌出的惊喜和快乐,但来自工作的喜悦并不像糖果那样放进嘴里面就甜味十足,而是需要从苦劳与艰辛中渗出,因此当我们聚精会神,孜孜不倦,克服艰辛后的成就感,世上没有那种喜悦可以类比”。

“更何况人类生活中工作占据了较大的比重,如果不能从劳动中、工作中获得充实感,那么即使从别的地方找到快乐,最终我们仍然会感到空虚和缺憾。”

一、部署虚拟环境安装linux系统 

从零基础详细讲解了虚拟机软件与红帽 Linux 系统,完整演示了 VM 虚拟机的安装与配置过程,以及红帽 RHEL 7 系统的安装、配 置过程和初始化方法。此外,本章还涵盖了在 Linux 系统中找回 root 管理员密码、RPM 与 Yum 软件仓库的知识,以及 RHEL 7 系统中 systemd 初始化进程的特色与使用方法。

小节1.4(不包括1.4)之前我就不做陈述了毕竟安装系统嘛一搜教程一大堆

1.4root密码重置

在学习之前首先确认自己是什么系统书中是用的RHEL7,但是大部分人用的可能是centos或者其他


查询命令 cat /etc/redhat-release


至于两个版本的操作我直接放链接了这样子比较直观

大佬的centos7的修改链接

 RHEL7的重置链接

1.5RPM(红帽软件管理器)

RPM有点像Windows里面的控制面板,会建立一个统一的数据库文件,详细记录软件信息并能够自动分析依赖关系

                                           常用的RPM软件包命令
安装软件的命令格式rpm  -ivh filename.rpm
升级软件命令格式rpm  -Uvh filename.rpm
卸载软件的命令格式rpm  -qpi filename.prm
查询软件描述信息的命令格式rpm  -qpi filename.prm
列出软件文件信息的命令格式rpm  -qpl filename.prm
查询文件属于那个RPM的命令格式rpm  -qf filename.prm

 

1.6Yum软件仓库

Yum可以根据用户的要求分析出所需要的软件包及相关的依赖关系,然后自动从服务器下载软件包并安装到系统

常见Tum命令
yum repolist all列出所有仓库
yum list all列出仓库中所有软件包
yum info 软件包名查看软件包信息
yum install 软件包名安装软件包
yum reinstall 软件包名重新安装软件包
yum update 软件包名升级软件包
yum remove 软件包移除软件包
yum clean all 清除所有仓库缓存
yum check - update 检查可更新的软件包
yum grouplist查看系统中已经安装的软件组
yum groupinstall 软件包组安装指定的软件包
yum groupremove 软件包租移除指定的软件包组
yum groupinfo 软件包组查询指定的软件包信息

 

1.7systemd初始化进程

    这节没看懂后期补一下吧

二、新手必须掌握的linuxm命令

本章首先介绍系统内核和 Shell 终端的关系与 作用,然后介绍 bash 解释器的 4 大优势并学习 Linux 命令的执行方法。本章还精挑细 选了数十个 Linux 命令,它们与系统工作、系统状态、工作目录、文件、目录、打包 压缩与搜索等主题相关。学习这些最基础的 Linux 命令,可以为今后学习更复杂的命 令和服务做好必备知识铺垫。

2.1强大好用的shell

Shell是一个命令行工具,主流Linux都用的是Bash解释器(Bourne-Again shell)解释器该解释器共有四大优势

  1. 通过上下方向键l来调取过往执行过的Linux指令
  2. 命令或参数仅需输入前几位就可以用Tab键补全
  3. 具有强大的批处理脚本
  4. 具有实用的环境变量功能

2.2执行查看帮助命令

常见执行Linux命令的格式为:

命令名称 [命令参数] [命令参数](不论参数还是名称,之间都是有空格作为分隔)

命令的参数可以用长格式(完整的选项名称),也可以用段格式(单个字母的缩写)

长格式    man --help

短格式    man -h

                                     man命令中常用按键以及用途
按键用途
PaGe down向上翻一页
空格键向下翻一页
PaGe up向上翻一页
home直接前往首页
end直接前往尾页
/从上至下搜索某个关键词,如“/Linux”
从下至上搜索某个关键词,如“?Linux”
n定位到下一个搜索到的关键词
N定位到上一个搜索到的关键词
q退出b帮助文档
                                 man命令帮助信息的结构以及意义
结构名称代表意义
NAME命令的名称
SYNOPSIS参数d的大致使用方法
DESCRIPTION介绍说明
EXAMPLES演示
OVERVIEW概述
DEFAULTS默认的功能
OPTIONS具体的可用选项
ENVIRONMENT环境变量
FILES用到的文件
SEE ALSO 相关的资料
HISTORY维护历史与联系方式

当然安装了图形化界面并安装简体中文的话要相对英语功底差一些的同志要友好很多

2.3常用系统工作的命令

这节就开始一些常用命令的学习了

1.echo命令

命令用于在终端输出字符串或变量提取后的值,格式为echo [字符串|$变量] 

2.date命令

date命令用于显示设置系统的时间,格式为date[选项] [+指定的格式]

具体命令 man date都有还是挺详细的

3.reboot命令

reboot命令用于重启系统,其格式为reboot(限于root管理员使用)

4.poweroff命令

poweroff 命令用于关闭系统,其格式为 poweroff(限于root管理员使用)

5.wget 命令

wget 命令用于在终端中下载网络文件,格式为“wget [参数] 下载地址”

6.ps 命令

ps 命令用于查看系统中的进程状态,格式为“ps [参数]”

Linux系统中时刻运行着许多进程,如果能够合理地管理它们,则可以优化系统性能,在Linux系统中有5中常见的进程状态,分别为运行、中断、不可中断、僵死与停止

  • R(运行):进程正在运行或在运行列队中
  • S(中断):进程处于休眠,当某个条件形成后或者接受到信号时,则脱离该状态
  • D(不可中断):进程不相应系统异步信号,即便使用kill也不能将其中断
  • Z(僵死):进程已经终止,但进程描述符依然存在,知道父进程调用wait4()系统函数后将进程释放
  • T(停止):进程收到停止信号后停止运行

 说一下长格式和短格式是不能合并的,但是短格式之间是可以合并的

如:ps -uax  包留一个 - 就可以了

7.top命令

top 命令用于动态地监视进程活动与系统负载等信息,其格式为 top

  1. 第 1 行:系统时间、运行时间、登录终端数、系统负载(三个数值分别为 1 分钟、5 分钟、15 分钟内的平均值,数值越小意味着负载越低)
  2. 第 2 行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数
  3. 第 3 行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源 百分比、空闲的资源百分比等

8.pidof 命令

pidof 命令用于查询某个指定服务进程的 PID 值,格式为“pidof [参数] [服务名称]”

9.kill 命令

kill 命令用于终止某个指定 PID 的服务进程,格式为“kill [参数] [进程 PID]”

10.killall 命令

killall 命令用于终止某个指定名称的服务所对应的全部进程,格式为:“killall [参数] [进 程名称]”

2.4系统状态检查命令

1.ifconfig 命令

ifconfig 命令用于获取网卡配置与网络状态等信息,格式为“ifconfig [网络设备] [参数]”

2.uname 命令

uname 命令用于查看系统内核与系统版本等信息,格式为“uname [-a]”

3.uptime 命令

uptime 用于查看系统的负载信息,格式为 uptime

4.free 命令

free 用于显示当前系统中内存的使用量信息,格式为“free [-h]”

5.who 命令

who 用于查看当前登入主机的用户终端信息,格式为“who [参数]”

6.last 命令

last 命令用于查看所有系统的登录记录,格式为“last [参数]”

7.history 命令

history 命令用于显示历史执行过的命令,格式为“history [-c]”

8.sosreport 命令

sosreport 命令用于收集系统配置及架构信息并输出诊断文档,格式为 sosreport

2.5 工作目录切换命令

1.pwd 命令

pwd 命令用于显示用户当前所处的工作目录,格式为“pwd [选项]”

2.cd 命令

cd 命令用于切换工作路径,格式为“cd [目录名称]”

3.ls 命令

ls 命令用于显示目录中的文件信息,格式为“ls [选项] [文件] ”

2.6 文本文件编辑命令

1.cat 命令

cat 命令用于查看纯文本文件(内容较少的),格式为“cat [选项] [文件]”

如果在查看文本内容时还想顺便显示行号的话,不妨在 cat 命令后面追加一个-n 参数

2.more 命令

more 命令用于查看纯文本文件(内容较多的),格式为“more [选项]文件”

3.head 命令

head 命令用于查看纯文本文档的前 N 行,格式为“head [选项] [文件]”

4.tail 命令

tail 命令用于查看纯文本文档的后 N 行或持续刷新内容,格式为“tail [选项] [文件]”

5.tr 命令

tr 命令用于替换文本文件中的字符,格式为“tr [原始字符] [目标字符]”

6.wc 命令

wc 命令用于统计指定文本的行数、字数、字节数,格式为“wc [参数] 文本”

7.stat 命令

stat 命令用于查看文件的具体存储信息和时间等信息,格式为“stat 文件名称”

8.cut 命令

cut 命令用于按“列”提取文本字符,格式为“cut [参数] 文本”

9.diff 命令

diff 命令用于比较多个文本文件的差异,格式为“diff [参数] 文件”

2.7 文件目录管理命令

1.touch 命令

touch 命令用于创建空白文件或设置文件的时间,格式为“touch [选项] [文件]”

2.mkdir 命令

mkdir 命令用于创建空白的目录,格式为“mkdir [选项] 目录”

3.cp 命令

cp 命令用于复制文件或目录,格式为“cp [选项] 源文件 目标文件”

4.mv 命令

mv 命令用于剪切文件或将文件重命名,格式为“mv [选项] 源文件 [目标路径|目标文件名]”

5.rm 命令

rm 命令用于删除文件或目录,格式为“rm [选项] 文件”

6.dd 命令

dd 命令用于按照指定大小和个数的数据块来复制文件或转换文件,格式为“dd [参数]”

7.file 命令

file 命令用于查看文件的类型,格式为“file 文件名”

2.8 打包压缩与搜索命令

1.tar 命令

tar 命令用于对文件进行打包压缩或解压,格式为“tar [选项] [文件]”

2.grep 命令

grep 命令用于在文本中执行关键词搜索,并显示匹配的结果,格式为“grep [选项] [文件]”

3.find 命令

find 命令用于按照指定条件来查找文件,格式为“find [查找路径] 寻找条件 操作”

 

三、管道符、重定向与环境变量

本章讲解了与文件读写操作有关的重定向技术 的 5 种模式:

  1. 标准覆盖输出重定向
  2. 标准追加输出重定向
  3. 错误覆盖输出重定向
  4. 错误追加输出重定向
  5. 输入重定向

让读者通过实验切实理解每个重定向模式的作用,解决输出信息的保 存问题;然后深入讲解了管道命令符,帮助读者掌握命令之间的搭配使用方法,进 一步提高命令输出值的处理效率;随后通过讲解 Linux 系统命令行中的通配符和常 见转义符,让您输入的 Linux 命令具有更准确的意义,为下一章学习编写 Shell 脚本 打好功底。

3.1输入输出重定向

输入重定向是指把文件导入到命令中去,输出重定向则是把原本输出到屏幕上的数据信息写入到指定文件中

  • 标准输入重定向(STDIN,文件描述符0):默认从键盘输入,也可以从其他文件或命令中输入
  • 标准输出重定向(STDOUT,文件描述符1):默认输出到屏幕
  • 错误输出重定向(STDERR,文件描述符2):默认输出到屏幕
          输入重定向中用到的符号及其作用
命令<文件将文件作为命令到标准输入
命令<<分界符从标准输入中读入,直到遇见分界符才停止
命令<文件1>文件2见文件1作为命令的标准输入并将标准输出到文件2中
          输出重定向中用到的符号及作用
命令>文件将标准输出重定向到一个文件中(清空原有文件数据)
命令2>文件将错误输出重定向到一个文件中(清空原有文件的数据)
命令>>文件将标准输出重定向到一个文件中(追加到原有内容的后面)
命令2>>文件将错误输出重定向到一个文件中(追加到原有内容的后面)
命令>>文件2>&1或命令&>>文件将标准输出与错误输出共同写入到文件中(追加到原有内容的后面)

 例如输出重定向man bash > test.txt

输出重定向追加内容  echo "good" >> test.txt

如果是错误的输出重定向 错误的信息 2> test.txt

输入重定向 wc -l < test.txt

简单总结一下把: 首先要把思想转换一下 输出就是要输出在屏幕中的信息,重定向就是指将这些信息展示的地方改变,输入重定向就是将命令作用到文件中去然后将信息输出到屏幕中

3.2 管道命令符

执行的格式为  “命令A|命令B”  概括一下就是说把前一个命令原本要输出到屏幕的数据当作是后一个命令的标准出入

grep "/sbin/nologin" /etc/passwd | wc -l 

嗯~这个就酸爽舒服的不行好随意~

3.3 命令行的通配符

*代表匹配0或多个字符

?代表匹配单个字符

[0~9]代表匹配0~9个之间的字符

[abc]代表匹配括号内的字符中任意字符

3.4 常用的转义字符

反斜杠:使用反斜杠后面的一个变量变为单纯的字符串

单引号:转义其中所有的变量为单纯的字符串

双引号:保留其中的变量属性,不进行转义处理

反引号:把其中的命令执行后返回结果

3.5 重要的环境变量

书中介绍命令的执行顺序并解释PATH的用处

alias 别名 = 命令 创建属于自己的命令别名

unalias 别名 取消一个命令别名

export 别名 设置全局变量

 

四、Vim编辑器与shell命令脚本

本章讲解了如何使用 Vim 编辑器来编写、修 改文档,然后通过逐个配置主机名称、系统网卡以及 Yum 软件仓库参数文件等实验, 帮助读者加深 Vim 编辑器中诸多命令、快捷键、模式切换方法的理解;然后把前面章节中讲解的 Linux 命令、命令语法与 Shell 脚本中的各种流程控制语句通过 Vim 编 辑器写到 Shell 脚本中结合到一起,实现最终能够自动化工作的脚本文件;本章最后 演示了怎样通过 at 命令与 crond 计划任务服务来分别实现一次性的系统任务设置和长 期性的系统任务设置,从而让日常的工作更加高效,更自动化。

4.1 Vim 文本编辑器

Vim 编辑器中设置了三种模式—命令 模式、末行模式和编辑模式,每种模式分别又支持多种不同的命令快捷键,这大大提高了工 作效率,而且用户在习惯之后也会觉得相当顺手。要想高效率地操作文本,就必须先搞清这 三种模式的操作区别以及模式之间的切换方法

  • 命令模式:控制光标移动,可对文本进行复制、粘贴、删除和查找等工作
  • 输入模式:正常的文本录入
  • 末行模式:保存或退出文档,以及设置编辑环境
                                                  vim常用命令
            命令                                   作用
dd删除(剪切)光标所在整行
5dd删除(剪切)从光标处开始的5行
yy复制光标所在行
5yy复制从光标处开始的5行
n显示搜索命令定位到下一个字符串
N显示搜索命令定位到上一个字符串
u撤销上一步的操作
p将之前删除(dd)或复制(yy)过的数据粘贴到后面
                                           末行模式中可用的命令
           命令                                       作用
:w保存
:q退出
:q!强制退出(放弃对文档的修改内容)
:wq!强制保存退出
:set nu显示行号
:set nonu

不显示行号

:命令执行该命令
:整数跳转到该行
:s/one/two将当前光标所在行的第一个one替换成two
:s/one/two/g将当前光标所在行的所有one替换成two
:%s/one/two/g将全文中的所有one替换成two
?字符串在文本中从下至上搜索该字符串
/字符串在文本中从上至下搜索该字符串

 a键与i键分别实在光标后面一位和光标当前位置切换到输入模式,而o键则是在光标的下面在创建一个空行,此时可敲击a键进入到编辑器的输入模式

4.1.2 配置主机名称

  1. 使用vim编辑器修改/etc/hostname主机名称文件
  2. 把原始主机名称删除后追加“用户名” 然后在末行执行:wq!
  3. 使用hostname命令检查是否修改成功

4.2 编写 Shell 脚本

可以将 Shell 终端解释器当作人与计算机硬件之间的“翻译官”,它作为用户与 Linux 系 统内部的通信媒介,除了能够支持各种变量与参数外,还提供了诸如循环、分支等高级编程 语言才有的控制结构特性。要想正确使用 Shell 中的这些功能特性,准确下达命令尤为重要。 Shell 脚本命令的工作方式有两种:交互式和批处理。

交互式(Interactive):用户每输入一条命令就立即执行

批处理(Batch):由用户事先编好写一个完整的Shell脚本,Shell会一次性执行脚本中诸多的命令

4.2.1 编写简单的脚本

#!用来告诉系统使用哪种 Shell 解释器来执行该脚本

#是对 脚本功能和某些命令的介绍信息

4.2.2 接收用户的参数

 

$0 对应的是当前 Shell 脚本程序的名称

$#对应的是总共 有几个参数

$*对应的是所有位置的参数值

$?对应的是显示上一次命令的执行返回值

$1、$2、$3……则分别对应着第 N 个位置的参数值

[root@linuxprobe ~]# vim example.sh

#!/bin/bash

echo "当前脚本名称为$0"

echo "总共有$#个参数,分别是$*。"

echo "第 1 个参数为$1,第 5 个为$5。"

[root@linuxprobe ~]# sh example.sh one two three four five six

当前脚本名称为 example.sh

总共有 6 个参数,分别是 one two three four five six。

第 1 个参数为 one,第 5 个为 five。

4.2.3 判断用户的参数

条件测试语句可以分为 4 种:

  • 文件测试语句
  • 逻辑测试语句
  • 整数值比较语句
  • 字符串比较语句
运算符作用
-d测试文件是否为目录类型
-e测试文件是否存在
-f判断是否为一般文件
-r测试当前用户是否有权限读取
-w测试当前用户是否有权限写入
-x测试当前用户是否有权限执行

 [root@linuxprobe ~]# [ -d /etc/fstab ]

[root@linuxprobe ~]# echo $?

1

在 Shell 终端中逻辑“与”的运算符号是&&它表示当前面的命令执行成功后才会执行它后面的命令

有逻辑“或”在 Linux 系统中的运算符号为||表示当前面的 命令执行失败后才会执行它后面的命令

逻辑语句是“非”在 Linux 系统中的运算符号是一个叹号(!)它表示把条件测 试中的判断结果取相反值

当前我们正在登录的即为管理员用户—root

[root@linuxprobe ~]# [ ! $USER = root ] && echo "user" || echo "root"

root

  

可用的整数比较运算符
运算符作用
-ep是否等于
-ne是否不等于
-gt是否大于
-lt是否小于
-le是否等于或小于
-ge是否大于或等于

 

在 2.4 节曾经讲过 free 命令,它可以用来获取当前系统正在使用及可用的内存量信息。 接下来先使用 free -m 命令查看内存使用量情况(单位为 MB),然后通过 grep Mem:命令过滤 出剩余内存量的行,再用 awk '{print $4}'命令只保留第四列,最后用 FreeMem=`语句`的方式把语句内执行的结果赋值给变量。 这个演示确实有些难度,但看懂后会觉得很有意思,没准在运维工作中也会用得上。

[root@linuxprobe ~]# free -m

total used free shared buffers cached

Mem: 1826 1244 582 9 1 413

-/+ buffers/cache: 830 996

Swap: 2047 0 2047

[root@linuxprobe ~]# free -m | grep Mem:

Mem: 1826 1244 582 9

[root@linuxprobe ~]# free -m | grep Mem: | awk '{print $4}' 582

[root@linuxprobe ~]# FreeMem=`free -m | grep Mem: | awk '{print $4}'`

[root@linuxprobe ~]# echo $FreeMem

582

[root@linuxprobe ~]# [ $FreeMem -lt 1024 ] && echo "Insufficient Memory"

Insufficient Memory

常见的字符串比较运算符
=比较字符串是否相同
!=比较字符串内容是否不同
-z判断字符串内容是否为空

 

例子:通过判断 String 变量是否为空值,进而判断是否定义了这个变量

[root@linuxprobe ~]# [ -z $String]

[root@linuxprobe ~]# echo $?

0

 4.3 流程控制语句

if、for、while、case4 种流程控制语句学习

4.3.1 if 条件测试语句

 

if、then、fi例子:

[root@linuxprobe ~]# vim mkcdrom.sh

#!/bin/bash DIR="/media/cdrom"

if [ ! -e $DIR ]

then mkdir -p $DIR

fi

if、then、else、fi例子:

[root@linuxprobe ~]# vim chkhost.sh

#!/bin/bash

ping -c 3 -i 0.2 -W 3 $1 &> /dev/null

if [ $? -eq 0 ]

then

echo "Host $1 is On-line."

else

echo "Host $1 is Off-line."

fi

[root@linuxprobe ~]# bash chkhost.sh 192.168.10.10

Host 192.168.10.10 is On-line.

[root@linuxprobe ~]# bash chkhost.sh 192.168.10.20

Host 192.168.10.20 is Off-line.

 

[root@linuxprobe ~]# vim chkscore.sh

#!/bin/bash

read -p "Enter your score(0-100):" GRADE

if [ $GRADE -ge 85 ] && [ $GRADE -le 100 ] ;

then

echo "$GRADE is Excellent"

elif [ $GRADE -ge 70 ] && [ $GRADE -le 84 ] ;

then

echo "$GRADE is Pass"

else

echo "$GRADE is Fail"

fi

运行脚本

[root@linuxprobe ~]# bash chkscore.sh

Enter your score(0-100):88

88 is Excellent

[root@linuxprobe ~]# bash chkscore.sh

Enter your score(0-100):80

80 is Pass

 4.3.2 for 条件循环语句

for 循环语句允许脚本一次性读取多个信息,然后逐一对信息进行操作处理

面使用 for 循环语句从列表文件中读取多个用户名,然后为其逐一创建用户账户并设 置密码。首先创建用户名称的列表文件 users.txt,每个用户名称单独一行。

[root@linuxprobe ~]# vim users.txt

andy

barry

carl

duke

eric

george

 4.3.3 while 条件循环语句

例子: 

[root@linuxprobe ~]# vim Guess.sh

#!/bin/bash

PRICE=$(expr $RANDOM % 1000)

TIMES=0

echo "商品实际价格为 0-999 之间,猜猜看是多少?"

while true

do

read -p "请输入您猜测的价格数目:" INT

let TIMES++

if [ $INT -eq $PRICE ] ; then

echo "恭喜您答对了,实际价格是 $PRICE"

echo "您总共猜测了 $TIMES 次"

exit 0

elif [ $INT -gt $PRICE ] ; then

echo "太高了!"

else

echo "太低了!"

fi

done

4.3.4 case 条件测试语句 

[root@linuxprobe ~]# vim Checkkeys.sh

#!/bin/bash

read -p "请输入一个字符,并按 Enter 键确认:" KEY

case "$KEY" in

[a-z]|[A-Z])

echo "您输入的是 字母。"

;;

[0-9])

echo "您输入的是 数字。"

;;

*)

echo "您输入的是 空格、功能键或其他控制字符。"

esac

[root@linuxprobe ~]# bash Checkkeys.sh 请输入一个字符,并按 Enter 键确认:6

您输入的是 数字。 [root@linuxprobe ~]# bash Checkkeys.sh 

请输入一个字符,并按 Enter 键确认:p

您输入的是 字母。

[root@linuxprobe ~]# bash Checkkeys.sh

请输入一个字符,并按 Enter 键确认:^[[15~

您输入的是 空格、功能键或其他控制字符。

4.4 计划任务服务程序 

顾名思义,一次性计划任务只执行一次,一般用于满足临时的工作需求。我们可以用 at 命令实现这种功能,只需要写成“at 时间”的形式就可以。如果想要查看已设置好但还未执 行的一次性计划任务,可以使用“at -l”命令;要想将其删除,可以用“atrm 任务序号”

at时间定义

at允许使用一套相当复杂的指定时间的方法。 
1)能够接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。 例如:04:00 
2)能够使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的词语来指定时间。 
3)能够采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。 例如:12pm 
4)能够指定命令执行的具体日期,指定格式为month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面。 例如:04:00 2009-03-1 
5)能够使用相对计时法。指定格式为:now + count time-units ,now就是当前时间,time-units是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是时间的数量,几天,几小时。 例如:now + 5 minutes 04pm + 3 days 
6)能够直接使用today(今天)、tomorrow(明天)来指定完成命令的时间。

关于at的讲解这个人写的挺好可以看一看

例如,使用下述命令将系 统设置为在今晚 23:30 分自动重启网站服务。

[root@linuxprobe ~]# at 23:30

at > systemctl restart httpd

at > 此处请同时按下 Ctrl + D 组合键来结束编写计划任务

job 3 at Mon Apr 27 23:30:00 2017

[root@linuxprobe ~]# at -l

3 Mon Apr 27 23:30:00 2017 a root

希望系统能够周期性地、有规律地执行某些具体的任务那么 Linux 系统 中默认启用的 crond 服务 

 

使用crond设置任务的参数字段说明
字段说明
取值0~59的整数
取值0~23的任意整数
取值1~31的任意整数
取值1~12的任意整数
星期取值0~7的任意整数,其中0与7均为星期日
命令要执行的命令或程序脚本

 

 

五、用户身份与文件权限

本章详细讲解了文件的所有者、所属组以及其他人可 对文件进行的读(r)写(w)执行(x)等操作,以及如何在 Linux 系统中添加、删 除、修改用户账户信息。我们还可以使用 SUID、SGID 与 SBIT 特殊权限更加灵活地 设置系统权限功能,来弥补对文件设置一般操作权限时所带来的不足。隐藏权限能够 给系统增加一层隐形的防护层,让黑客最多只能查看关键日志信息,而不能进行修改 或删除。而文件的访问控制列表(Access Control List,ACL)可以进一步让单一用户、 用户组对单一文件或目录进行特殊的权限设置,让文件具有能满足工作需求的最小权 限吧。本章最后还将讲解如何使用 su 命令与 sudo 服务让普通用户具备超级管理员的 权限,不仅可以满足日常的工作需求,还可以确保系统的安全性。

六、存储结构与磁盘划分

本章详细地分析了 Linux 系统中最常见的 Ext3、Ext4 与 XFS 文件系统的不同之处,并带领各位读者着重练习硬盘设备分区、格式化以及 挂载等常用的硬盘管理操作,以便熟练掌握文件系统的使用方法。在打下坚实的理论 基础与完成一些相关的实践练习后,我们还将进一步完整地部署 SWAP(交换)分区、 配置 quota 磁盘配额服务,以及掌握 ln 命令带来的软硬链接。

七、使用RAID与LVM磁盘阵列技术

本章深入讲解了各个常用 RAID 技术方 案的特性,并通过实际部署 RAID 10、RAID 5+备份盘等方案来更直观地查看 RAID 的强大效果,以便进一步满足生产环境对硬盘设备的 I/O 读写速度和数据冗余备份 机制的需求。同时,考虑到用户可能会动态调整存储资源,本章还将介绍 LVM (Logical Volume Manager,逻辑卷管理器)的部署、扩容、缩小、快照以及卸载删 除的相关知识。

八、iptables与firewalld防火墙

本章讲解了 RHEL 7 中新增的 firewalld 防火墙 与先前版本中 iptables 防火墙之间的区别,并分别使用 iptables、firewall-cmd、 firewall-config 和 TCP Wrappers 等防火墙策略配置服务来完成数十个根据真实工作需 求而设计的防火墙策略配置实验。在学习完这些实验之后,各位读者不仅可以熟练地 过滤请求的流量,还可以基于服务程序的名称对流量进行允许和拒绝操作,确保 Linux 系统的安全性万无一失。

九、使用ssh服务管理远程主机

本章讲解了如何使用 nmtui 命令配置网络参数, 以及通过 nmcli 命令查看网络信息并管理网络会话服务,从而让您能够在不同工作场 景中快速地切换网络运行参数;还讲解了如何手工绑定 mode6 模式双网卡,实现网络 的负载均衡。本章还深入介绍了 SSH 协议与 sshd 服务程序的理论知识、Linux 系统 的远程管理方法以及在系统中配置服务程序的方法,并采用实验的形式演示了使用基 于密钥验证的 sshd 服务程序进行远程登录,以及使用 screen 服务程序远程管理 Linux 系统的不间断会话等技术。

十、使用Apache服务部署静态网站

本章通过对比当前主流的 Web 服务程序 来使读者更好地理解各自的优势及特点,并真正掌握在 Linux 系统中配置服务的技巧。 本章还详细讲解了 SELinux 服务的作用、三种工作模式以及策略管理方法,确保读者 掌握 SELinux 域和 SELinux 安全上下文的配置方法。

十一、使用vsftpd服务传输文件

本章讲解了什么是文件传输协议(File Transfer Protocol,FTP),以及如何部署 vsftpd 服务程序,然后深度剖析了 vsftpd 主配置 文件中最常用的参数及其作用,并完整演示了 vsftpd 服务程序三种认证模式的配 置方法;本章还涵盖了可插拔认证模块的原理、作用以及实用配置方法。

十二、使用Samba或NFS实现文件共享

本章讲解了 Samba 服务的理论知识, 以及 SMB 协议与 Samba 服务程序的起源和发展过程,并通过实验的方式部署文件共 享服务来深入了解 Samba 服务程序中相关参数的作用;还讲解了如何配置网络文件系 统(Network File System,NFS)服务来简化 Linux 系统之间的文件共享工作,以及通 过部署 NFS 服务在多台 Linux 系统之间挂载并使用资源。

十三、使用BIND提供域名解析服务

本章讲解了 DNS 域名解析服务的原理以及 作用,介绍了域名查询功能中正向解析与反向解析的作用,实践部署了 DNS 主服务器、 DNS 从服务器、DNS 缓存服务器,并通过实验的方式演示了如何在 DNS 主服务器上 部署正、反解析工作模式,以便让大家深刻体会到 DNS 域名查询的便利和强大。

十四、使用DHCP动态管理主机地址

本章讲解了动态主机配置协议的作用,以 及在 Linux 系统中配置部署 dhcpd 服务程序的方法,剖析了 dhcpd 服务程序配置文件 内每个参数的作用,并通过自动分配 IP 地址、绑定 IP 地址与 MAC 地址等实验,让 各位读者更直观地体会 DHCP 协议的强大之处。

十五、使用Postifx与Dovecot部署邮件系统

本章介绍了 SMTP、POP3、IMAP4 等 常见的电子邮件协议,以及 MUA、MTA、MDA 这三种服务角色的作用;还完整地演示 了在 Linux 系统中使用 Postfix 和 Dovecot 服务程序配置电子邮件系统服务的方法,重点 讲解了常用的配置参数,此外将结合 BIND 服务程序提供的 DNS 域名解析服务来验证客 户端主机与服务器之间的邮件收发功能;最后还介绍了如何在电子邮件系统中设置用户 别名,以帮助大家在生产环境中更好地控制、管理电子邮件账户以及信箱地址。

十六、使用Squid部署代理缓存服务

本章介绍了代理服务的原理以及作用、Squid 服务程序正向解析和反向解析的理论以及配置方法。在掌握了 Squid 服务程序的标准 正向代理模式、透明正向代理模式、访问控制列表功能以及反向代理等实用功能之后, 读者不但可以进一步理解代理服务,提升服务控制能力,而且在步入运维岗位后能够 游刃有余地处理相关问题。

十七、使用iSCSI服务部署网络存储

本章开篇介绍了计算机硬件存储设备的不同接 口技术的优缺点,并由此切入 iSCSI 技术主题的讲解。本章还将带领大家在 Linux 系统上 部署 iSCSI 服务端程序,并分别基于 Linux 系统和 Windows 系统来访问远程的存储资源。

十八、使用MariaDB数据库管理系统

本章介绍了数据库以及数据库管理系统的 理论知识,然后介绍了 MariaDB 数据库管理系统的内容,接下来将通过动手实验的 方式,帮助各位读者掌握 MariaDB 数据库管理系统的一些常规操作;最后还介绍了 数据库的备份与恢复方法。

十九、使用PEX+Kickstart无人值守安装服务

本章介绍了可以实现无人值守安装服 务的 PXE+Kickstart 服务程序,并带领大家动手安装部署 PXE + TFTP + FTP + DHCP + Kickstart 等服务程序,从而搭建出一套可批量安装 Linux 系统的无人值守安装系统。在学 完本章内容之后,运维新手就可以避免枯燥乏味的重复性工作,大大提高系统安装的效率。

二十、使用LNMP架构部署动态网站环境

LNMP 动态网站部署架构是一套由 Linux + Nginx + MySQL + PHP 组成的动态网站系统解决方案,具有免费、高效、扩展性强且资源消耗低等优良特性。本章首先对比了使用源码包安装服务程序与使用 RPM 软件包安装服务程序的区别,然后讲解了如何手工编译源码包并安装各个服务 程序,以及如何使用 Discuz! X3.2 版本论坛系统验证架构环境。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值