mysql查询前五行数据_linux shell练习常用实例30个

本文介绍了30个Linux Shell实战案例,包括获取网卡IP、复制目录、按序号获取IP、用户管理、文件传输、远程登录、网络监控、资源监控、文件操作、服务管理、进程统计等,详细解析了每个案例的实现过程和思路。
摘要由CSDN通过智能技术生成

shell实例

案例一:输入网卡名称,输出对应ip

问题

输入不合理

网卡名如何获取

如何获取需要的网卡ip

分析

利用if判断输入是否正确

grep和awk获取所有网卡名并保存至networkname文件中

sed 使用变量进行替换时,要用双引号

awk 使用变量进行匹配时,要把变量用三引号括起来

实现解析

手动给变量k赋值,判断k是否为空。将所有网卡名都存到netorkname.txt

文件,用sed命令通过替换产生networkname_back.txt文件,比较两个文件

行数检查网卡名是否正确。最后awk匹配网卡名输出ip。

案例二:将/root/下的所有目录(一级)复制到/tmp目录下

问题

多次实现复制

复制到指定位置

分析

采用for循环结构实现列出root所有目录

for循环中调用函数实现多次复制

实现解析

定义copy函数,在for中调用函数,实现多次复制。

案例三:选择网卡序号返回相应ip

问题

输入是否正确

打印出网卡名及序号

根据序号决定输出

分析

ifconfig命令grep awk匹配所有的网卡并记录到networkname文件

sed替换文件,测试文件大小变化决定输入是否正确

根据行数进行匹配输出

实现解析

将所有网卡名称及序号保存至networkname.txt文件,打印出文件中所有内

容,通过输入给n赋值。if判断是否为空,比较n.txt与n_new.txt字节数来判

断输入是否正确。按照输入的数字取出对应序号的网卡名,用awk打印出

对应ip。

案例四:按照文件内容创建或删除用户

问题

判断文件是否存在

区分创建或删除功能

根据文档创建或删除用户

分析

-e参数检查文件是否存在

利用case实现选择功能

利用for循环读取文件行数进行创建或删除

实现解析

case判断,决定是创建还是删除。如果为create,输入userfile和

passwdfile并分别通过-e参数判断文件是否存在,通过awk N自增判断行数

在循环中按照行数设置user与password。如果是delete,在循环中按照行

数删除对应user。如果输入为其他,则返回error。

案例五:批量传送文件

问题

检查ip与password的文件

获取传送文件的目的ip

分析

利用-e检测文件是否存在

循环给予rsync命令ip

实现解析

首先判断输入的文件是否存在,通过awk计算行数,在循环中使用rsync命

令将指定的文件传输到指定位置。在机器之间要做免密,否则需要在运行

过程中输入密码。

案例六:自动远程连接并保持登录

问题

自动连接并输入密码

保持登录

分析

使用expect send输入密码

实现解析

进入expect环境通过send输入密码进行连接,使用interact保持连接。

案例七:自动ping各个主机ip,如果通则输出主机名和ip,如果不通则输出ip

问题

连接各个主机

获取到各个主机的主机名

显示其他内容

分析

利用ssh hostname获取主机名

循环输出时去除关键字

sed对\r进行替换

实现解析

首先设立获取主机名的函数,然后在循环中ping各个ip。通过函数给

hostname赋值并除去多余内容,最后输出。

案例八:监控cpu、内存和硬盘利用率

问题

获取到相关资源

显示的更人性化

分析

利用vmstat、free和cut命令

显示时间

实现解析

首先判断vmstat命令是否存在,然后分别对cpu mem disk进行判断,

如果符合要求则返回相应的值。

案例九:url指定目录下载

问题

检测输入是否正确

创建目录递归

手动选择是否创建目录

分析

-z检测输入是否正确

case选择是否创建

wget -p参数下载文件

实现解析

编写函数,只需判断$2有无值便可得知输入是否正确。利用case选择是否创

建目录,wget下载。下载后利用返回码等于0判断下载是否成功。

案例十:找到指定目录下后缀名为.txt文件进行改名和压缩操作

问题

查找到.txt文件

替换名字

批量打包压缩

分析

利用find查找.txt文件

tar -zcvf压缩

for循环进行

mv进行改名

实现解析

首先判断目录和输入是否正确,进入到目录后find查找.txt文件利用for循环

进行改名,之后进行压缩,压缩结束再通过for循环把文件名改回去。

案例十一:一个脚本根据选择执行对应命令

问题

区分要执行的命令

分析

采用case进行区分

实现分析

采用case区分ls、date和pwd的功能,出现其他情况则结束

案例十二:监控mysql服务是否开启,如果未开启则重启mysql服务并发送一封邮件

问题

每隔一段时间检测一遍

一直循环

发送邮件

分析

使用sleep命令间隔时间

下载mailx使用163邮箱,修改/etc/mail.rc文件填入账号密码

163邮箱开启smtp

使用mail 命令发送邮件

实现解析

while死循环每隔60秒检测一次mysql端口是否开启,判断之后决定重启并发送邮件。

案例十三:输出每行数字个数并计算文件中数字总个数

问题

获取到每行的数字个数

获取文件数字个数

文件是否存在

分析

用-e参数判断文件是否正确

tr命令获取文件数字

实现解析

检测文件是否存在,awk获取行数,循环输出每行数字个数并输出,最后

获取文件数字总个数并输出。

案例十四:每天凌晨三点备份数据库,备份文件在本地一份,在远程一份,本地文件保存七天

问题

定时执行脚本

远程发送文件

文件定时删除

分析

crontab定时执行

rsync发送到远程

find查找并删除七天之前的文件

实现解析

首先备份数据库到指定的目录,再通过find查找并rm删除掉七天之前的.sql

类型文件,然后通过rsnyc发送到192.168.2.180的/root/mysqlbak目录下,

最后修改crontab -e定时执行脚本。

案例十五:随机生成1-100的一个数进行猜测,猜对退出

问题

随机生成数字

判断输入是否正确

猜测失败重复输入

分析

利用random生成随机数

正则匹配判断输入是否正确

循环输入

实现解析

利用random并限定随机数的范围给b赋值,通过匹配判断输入的a是否规范,再比较b与

a的大小给出提示,当b=a时退出。

案例十六:根据时间输出不同问候语

问题

获取时间

区分时间

分析

awk获取小时

if判断区分时间段

实现解析

利用awk分两次最终获取到时间,再if判断时间所在的时间段输出不同语句。

案例十七:把磁盘情况每日记录,不考虑cron,只写脚本

问题

查看磁盘情况

创建文件格式为年月日

分析

使用df命令创建

date提取时间

实现解析

使用df命令将输出保存至date定义的文件名下

案例十八:实现给输入的名字进行随机赋值并打印,且不能相同输入q或Q退出

问题

随机赋值

输入同一的名字输出同一数字

分析

random随机复制

整体循环

把所有对应输入到文件里,便于查找输出

实现解析

创建需要存放name和n对应关系的文件,整体在循环中,先判断输入是否

为q或Q决定是否退出,在检测输入是否符合要求,不符合就重新输入。随

机值赋值给变量,检查文件中是否已经存在这个值,匹配name是否存在判

断输出已有值还是输出随机值并保存。

案例十九:检测httpd和mysql服务是否安装和启动。

问题

检测两个服务是否安装

未安装要进行安装并且开启

检测服务是否启动

未启动要进行开启

分析

使用systemctl进行状态检测

并对返回值进行匹配决定进行安装还是开启

实现解析

对查看状态返回的值进行匹配,判断决定要执行下载安装还是开启服务

案例二十:检测当前所有机进程占用内存的和

问题

检测到当前所有进程的内存

对数值进行相加

分析

用ps aux命令进行检测

采用awk循环相加进行求和

实现解析

使用ps aux 检测内存值,使用awk内循环使内存值相加为sum并输出

案例二十一:删除文件前五行中带字母的行,删除文件5-10行中的字母

问题

对前五行进行处理

对五到十行进行处理

其他行不变

分析

对每一行进行处理根据行号进行判断

实现解析

先获取行数,对一到五行打印除了带有字母的行,对五到十行打印除了字

母的内容,十行以外正常输出。

案例二十二:查看机器是否开启web服务(80端口),如果开启了是hpptd还是nginx还是其他

问题

检查是否有80端口

输出类型

分析

利用netstat命令查看所有端口

awk匹配输出类型

实现解析

匹配80端口是否开启,判断a是否为空,a不为空则服务开启,并检查是何

类型,a为空则未开启

案例二十三:计算100以内能整除3数的和

问题

计算能被三整除

从1到100

求和

分析

通过循环进行多次判断

%为除

实现解析

从1-100循环每次除以三,把能整除的数字相加,不能整除就继续执行,知道

循环完成,输出sum

案例二十四:输入数字,输出这个数字,让输入end时退出

问题

可以一直输入输入脚本不停止

不能输入除了数字的内容

检测到end时退出

分析

写在循环里

判断到end时退出

正则匹配只允许输入数字

实现解析

整体卸载死循环里,首先检测输入是否为end,如果为end则退出,在判断

输入是否为数字,如果不为数字则退出本次循环,重新输入,如果输入为

数字,则输出这个数字

案例二十五:简单的弹出式菜单用户能根据显示的菜单选项执行相应的命令

问题

弹出式菜单

根据输入决定执行命令

分析

read -p 提示菜单

case决定执行命令

实现解析

利用read -p打印提示菜单,再利用case决定要执行什么命令,如果超出范围

就做出提示并退出。

案例二十六:查看是否有输入的用户名,如果有则输出相关信息,每五分钟执行一次。

问题

查看是否有这个用户

获取信息

每五分钟执行一次

分析

查找/etc/passwd文件是否有输入的用户

正则匹配取出对应信息

每五分钟执行一次

实现解析

判断输入是否为空,为空则退出,不为空继续执行。匹配输入的名字是否存在,存在测

输出相应信息,不存在则提示并退出。

案例二十七:测试所有pid是否在proc目录里

问题

获取到所有pid

获取proc目录中所有内容

检查有无出入

分析

利用ps aux命令查看pid

将proc目录下的内容存入文件

匹配判断是否有出入

实现解析

先进行说明,os为1需要检查,os为0不需要检查,将pid和proc分别存入文件,循环匹配

pid文件内容是否都存在在proc中。如果发生不匹配现象,给os赋值为1。最后输出os。

案例二十八:测试ip是否存活

问题

测试ping是否能通

多次测试

分析

ping三次决定是否存活

运用循环

实现解析

定义ip列表,使用循环ping各个ip,ping的失败次数达到三次时,不再ping这个ip,输出

失败,ping成功则输出成功。

案例二十九:查看网页状态码,如果是200,则报错

问题

获取到网页状态码

判断是否为200

分析

使用curl命令获取状态码

if判断是否为200

实现解析

通过curl命令-o保存网页,-s静音模式-w匹配状态码获取到网页状态码,再进行判断是否

为200,如果为200,则提示报错信息。

案例三十:判断输入ip格式是否正确

问题

输入要进行判断是否符合ip格式

分析

使用if判断

正则匹配判断

实现解析

输入后首先进行分析四个数字是否都小于等于255,如果符合则给valid_check赋值yes,

进一步if判断四个数字都为0-9组成的1-3位数,如果不匹配则输出格式错误,如果符合0-

9组成的1-3位数但valid_check不为yes,则输出ip不可用,如果两项都符合,则输出ip可

用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值