shell语法习题练习进阶版
第4章 shell语法深度习题练习
4.1 使用if,case,函数的方法将服务改成system(centos6)
4.1.1 if方法
4.1.1.1 system实现
4.1.1.1.1 编写代码信息
[root@oldboyedu run]# vim /server/scripts/rsyncd
para=$1
proc_file="/var/run/rsyncd.pid"
if [ "x$para" == "xstart" ]
then
if [ -f $proc_file ]
then
kill `cat /var/run/rsyncd.pid` &>/dev/null
sleep 1
rsync --daemon &>/dev/null
else
rsync --daemon &>/dev/null
fi
elif [ "x$para" == "xstop" ]
then
if [ -f $proc_file ]
then
kill `cat /var/run/rsyncd.pid` &>/dev/null
else
rsync --daemon &>/dev/null
sleep 1
kill `cat /var/run/rsyncd.pid` &>/dev/null
fi
elif [ "x$para" == "xrestart" ]
then
if [ -f $proc_file ]
then
kill `cat /var/run/rsyncd.pid` &>/dev/null
sleep 2
rsync --daemon &>/dev/null
else
rsync --daemon &>/dev/null
fi
else
echo $0 "[stop] [start] [restart]"
fi
4.1.1.1.2 将rsync加入开机自启动里面
[root@oldboyedu run]# mv /server/scripts/rsyncd /etc/init.d/
[root@oldboyedu run]# cd /etc/init.d/
[root@oldboyedu init.d]# chmod +x rsyncd
[root@oldboyedu init.d]#
[root@oldboyedu init.d]# vim rsyncd
#!/bin/bash
# chkconfig: 2345 98 99
para=$1
[root@oldboyedu init.d]# chkconfig --add rsyncd
[root@oldboyedu init.d]#
[root@oldboyedu init.d]# chkconfig --list rsyncd
rsyncd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@oldboyedu init.d]#
4.1.1.1.3 使用service测试
[root@oldboyedu ~]# service rsyncd start
[root@oldboyedu ~]# service rsyncd restart
[root@oldboyedu ~]#
4.1.2 函数和case结合方法
4.1.2.1 编写代码信息
[root@oldboyedu scripts]# cat /server/scripts/rsyncd
#!/bin/bash
# chkconfig: 2345 98 99
proc_file="/var/run/rsyncd.pid"
START() {
if [ -f $proc_file ]
then
kill `cat /var/run/rsyncd.pid` &>/dev/null
sleep 1
rsync --daemon &>/dev/null
else
rsync --daemon &>/dev/null
fi
}
STOP() {
if [ -f $proc_file ]
then
kill `cat /var/run/rsyncd.pid` &>/dev/null
else
rsync --daemon &>/dev/null
sleep 1
kill `cat /var/run/rsyncd.pid` &>/dev/null
fi
}
RESTART() {
if [ -f $proc_file ]
then
kill `cat /var/run/rsyncd.pid` &>/dev/null
sleep 2
rsync --daemon &>/dev/null
else
rsync --daemon &>/dev/null
fi
}
OTHER() {
echo $0 "[stop] [start] [restart]"
}
case $1 in
start) START ;;
stop) STOP ;;
restart) RESTART ;;
*) OTHER ;;
esac
4.1.2.2 将rsyncd加入开机自启
[root@oldboyedu run]# mv /server/scripts/rsyncd /etc/init.d/
[root@oldboyedu run]# cd /etc/init.d/
[root@oldboyedu init.d]# chmod +x rsyncd
[root@oldboyedu init.d]#
[root@oldboyedu init.d]# vim rsyncd
#!/bin/bash
# chkconfig: 2345 98 99
para=$1
[root@oldboyedu init.d]# chkconfig --add rsyncd
[root@oldboyedu init.d]#
[root@oldboyedu init.d]# chkconfig --list rsyncd
rsyncd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@oldboyedu init.d]#
4.1.2.3 使用service进行测试
[root@oldboyedu scripts]# service rsyncd start
[root@oldboyedu scripts]# service rsyncd stop
[root@oldboyedu scripts]#
4.2 将服务改成systemctl(centos7)
4.2.1 将centos6下面的脚本rsyncd移动到centos7下
scp -r root@10.0.0.222:/etc/init.d/rsyncd /server/
[root@m01 server] # ls
regular rsyncd scripts
mv rsyncd /etc/init.d/
4.2.2 编写centos7的配置文件(man systemctl)
[Unit]
Description= this is a new rsync
After=network.service
[Service]
Type=forking
ExecStart=/bin/sh /etc/init.d/rsyncd start
ExecStop=/bin/sh /etc/init.d/rsyncd stop
ExecReload=/bin/sh /etc/init.d/rsyncd restart
[Install]
WantedBy=multi.user_target
4.2.3 启动rsyncd
[root@m01 system] # systemctl start rsyncd-new.service
[root@m01 system] # systemctl status rsyncd-new.service
● rsyncd-new.service - this is a new rsync
Loaded: loaded (/usr/lib/systemd/system/rsyncd-new.service; disabled; vendor preset: disabled)
Active: active (running) since Wed 2020-01-08 11:59:17 CST; 1s ago
Process: 4374 ExecStart=/bin/sh /etc/init.d/rsyncd start (code=exited, status=0/SUCCESS)
Main PID: 4377 (rsync)
Tasks: 1
CGroup: /system.slice/rsyncd-new.service
└─4377 rsync --daemon
Jan 08 11:59:17 m01 systemd[1]: Starting this is a new rsync...
Jan 08 11:59:17 m01 systemd[1]: Started this is a new rsync.
[root@m01 system] #
4.3 实现1-100的和(while循环和for循环)
[root@m01 test_init] # cat para_0.sh
#!/bin/bash
sum=0
i=0
while [ $i -le 100 ]
do
((sum=sum+i))
let i++
done
echo $sum
[root@m01 test_init] # sh para_0.sh
5050
[root@m01 test_init] #
[root@m01 test_init] # cat para_0.sh
#!/bin/bash
sum=0
i=0
for i in `seq 100`
do
((sum=sum+i))
done
echo $sum
[root@m01 test_init] # sh para_0.sh
5050
[root@m01 test_init] #
4.4 使用for循环判断10.0.0.0网段有多少台机器是通的
[root@m01 test_init] # cat para_0.sh
#!/bin/bash
for i in {1..254}
do
{
ping -c1 -W1 10.0.0.$i &>/dev/null
if [ $? -eq 0 ]
then
echo "10.0.0.$i success"
fi
} &
done
[root@m01 test_init] # sh para_0.sh
10.0.0.1 success
10.0.0.61 success
10.0.0.222 success
10.0.0.254 success
[root@m01 test_init] #
4.5 实现串联执行脚本的时候输出过多的问题
4.5.1 ctrl+z
4.5.1.1 使用ctrl+z让程序进入后台执行
4.5.1.2 查看进入后台的进程
- jobs 查看所有暂停的程序
- bg 在后台运行
- fg 在前台运行
4.5.1.3 结束暂停的程序进程
4.5.2 使用加速来进行处理
4.5.3 使用screen来进行处理
通过命令创建一个shell环境,
4.5.3.1 安装screen
[root@m01 test_init] # yum -y install screen
4.5.3.2 screen常用的参数
screen -ls 查看当前在screen存在的进程信息
screen -r 恢复当前在screen存在的进程信息
screen +a +d 相当于断开窗口连接
screen +a +k 相当于在screen窗口中先ctrl+c,接着ctrl+d
4.5.3.3 在screen窗口运行
4.6 nmap的使用方法
4.6.1 nmap的概念介绍
nmap是网络扫描工具,用来扫描网络上面的连接端,(IP/端口,域名)
4.6.2 nmap的使用
nmap -sn 10.0.0.0/24 只做ping,不做端口扫描(n不做反向解析)
nmap 10.0.0.0/24 1-1024 探测10.0.0.0网段1-1024哪些端口开放的
shell语法习题练习进阶版的更多相关文章
- webpack4打包nodejs项目进阶版——多页应用模板
前段时间我写了个打包nodejs项目的文章,点击前往 但是,问题很多.因为之前的项目是个历史遗留项目,重构起来可能会爆炸,当时又比较急所以就写个的适用范围很小的webpack的打包方法. 最近稍微得空 ...
- <进阶版>Markdown指南
有道云笔记内置Markdown编辑器和使用指南. “进阶版”有道云笔记Markdown指南,教你如何进一步掌握待办.清单.流程图和甘特图. 0 待办和清单 待办事项和清单在日常工作.生活中经常被使用. ...
- Shell编程之变量进阶
一.变量知识进阶 1.特殊的位置参数变量 实例1:测试$n(n为1...15) [root@codis-178 ~]# cat p.sh echo $1 [root@codis-178 ~]# sh ...
- 使用 shell 脚本自动获取发版指标数据
问题背景 大一点的公司都会建立一套规章流程来避免低级错误,例如合入代码前必需经过同行评审:上线前必需提测且通过 QA 验证:全量前必需经过 1%.5%.10%.20%.50% 的灰度过程.尤其是最后一 ...
- zip伪加密文件分析(进阶版)
作者近日偶然获得一misc题,本来以为手到擒来,毕竟这是个大家都讨论烂了的题,详情访问链接http://blog.csdn.net/ETF6996/article/details/51946250.既 ...
- makefile中的shell语法
在Makefile中写shell代码有点诡异,和不同的shell语法不太一样,如果不了解,看Makefile会莫名其妙.下面总结了一些. 1:尽在Makefile文件的目标项冒号后的另起一行的代码才是 ...
- python--代码统计(进阶版)
在上一篇的随笔中发表了代码统计小程序,但是发表后,我发现,以前写的代码怎么办 写了那么多,怎么就从0开始了呢,,,,我还是个孩子啊,不能这么残忍 于是,代码统计进阶版:统计当前目录下所有指定文件类型的 ...
- 手机端页面自适应解决方案—rem布局进阶版
手机端页面自适应解决方案—rem布局进阶版 https://www.jianshu.com/p/985d26b40199 注:本文转载之处:https://www.cnblogs.com/anni ...
- MyBatis实操进阶版(一)
MyBatis实操进阶版(一) 目前而言,持久层框架中,在业务实现灵活性上,无可出MyBatis之右者.具体原因,后续将逐步展开 ResultMap元素的设置 配置文件中,ResultMap元素的作用 ...
随机推荐
- python+pytest接口自动化(11)-测试函数、测试类/测试方法的封装
前言 在python+pytest 接口自动化系列中,我们之前的文章基本都没有将代码进行封装,但实际编写自动化测试脚本中,我们都需要将测试代码进行封装,才能被测试框架识别执行. 例如单个接口的请求代码 ...
- EasyUI 之datagrid 使用 【DataGrid属性解释】
可选的参数 DataGrid 属性 覆写了 $.fn.datagrid.defaults. 参数名 类型 描述 默认值 title string Datagrid面板的标题 null iconCls ...
- sql server 2000 单主键高效分页存储过程 (支持多字段排序)
sql server 2000 单主键高效分页存储过程 (支持多字段排序) Create PROC P_viewPage /* nzperfect [ ...
- J20航模遥控器开源项目系列教程(七)PPM输出 | 关于按键版本和旋转编码器版本的兼容说明、布局建议 | 关于MINI版PCB的兼容说明
我们的开源宗旨:自由 协调 开放 合作 共享 拥抱开源,丰富国内开源生态,开展多人运动,欢迎加入我们哈~ 和一群志同道合的人,做自己所热爱的事! 项目开源地址:https://github.com/J ...
- 一文看懂 C 语言 I/O
再会吧,这宝贵的片刻和短暂的时机限制了我在情义上的真挚表示,也不能容我们畅叙衷曲,这本来是亲友重逢所应有的机缘:愿上帝赐给我们美好的未来,好让我们开怀畅谈!再一次告别:勇敢作战吧,祝你胜利!--威廉• ...
- 浅谈systemd原理和应用
多不说,直接上代码(可谓配置): [Unit] Description=demo app After=network-is-online.target [Service] Type=Simple Ex ...
- linux-安装zookeeper及相关操作
下载两个安装包并解压: 配置jdk环境变量: [root@VM-0-10-centos zookeeper]# cat /root/.bash_profile # .bash_profile # Ge ...
- AQS 支持两种同步方式?
1.独占式 2.共享式 这样方便使用者实现不同类型的同步组件,独占式如 ReentrantLock,共享式如 Semaphore,CountDownLatch,组合式的如 ReentrantReadW ...
- JVM学习思考
毕业以来技术上一直没有太大进步,仔细一想可能是没有做技术分享,我喜欢把学习总结记录在印象笔记中,那么理解的是对是错也就没人能评判一下.为了技术进步,接下来将陆续把一些学习总结迁移到博客园中,欢迎大家多 ...
- C语言之基本组成(知识点6)
一.C程序基本组成 C程序是由语句组成的,通常包括一个或多个函数,其中有且只有一个函数称为 主函数,其函数名为main. 二.C程序的组成特点: 1.每个C程序由一个或多个函数组成.每个C程序有且仅有 ...