第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)

网址: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html-single/system_administrators_guide/index#sect-Managing_Services_with_systemd-Targets

[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语法习题练习进阶版的更多相关文章

  1. webpack4打包nodejs项目进阶版——多页应用模板

    前段时间我写了个打包nodejs项目的文章,点击前往 但是,问题很多.因为之前的项目是个历史遗留项目,重构起来可能会爆炸,当时又比较急所以就写个的适用范围很小的webpack的打包方法. 最近稍微得空 ...

  2. <进阶版>Markdown指南

    有道云笔记内置Markdown编辑器和使用指南. “进阶版”有道云笔记Markdown指南,教你如何进一步掌握待办.清单.流程图和甘特图. 0 待办和清单 待办事项和清单在日常工作.生活中经常被使用. ...

  3. Shell编程之变量进阶

    一.变量知识进阶 1.特殊的位置参数变量 实例1:测试$n(n为1...15) [root@codis-178 ~]# cat p.sh echo $1 [root@codis-178 ~]# sh ...

  4. 使用 shell 脚本自动获取发版指标数据

    问题背景 大一点的公司都会建立一套规章流程来避免低级错误,例如合入代码前必需经过同行评审:上线前必需提测且通过 QA 验证:全量前必需经过 1%.5%.10%.20%.50% 的灰度过程.尤其是最后一 ...

  5. zip伪加密文件分析(进阶版)

    作者近日偶然获得一misc题,本来以为手到擒来,毕竟这是个大家都讨论烂了的题,详情访问链接http://blog.csdn.net/ETF6996/article/details/51946250.既 ...

  6. makefile中的shell语法

    在Makefile中写shell代码有点诡异,和不同的shell语法不太一样,如果不了解,看Makefile会莫名其妙.下面总结了一些. 1:尽在Makefile文件的目标项冒号后的另起一行的代码才是 ...

  7. python--代码统计(进阶版)

    在上一篇的随笔中发表了代码统计小程序,但是发表后,我发现,以前写的代码怎么办 写了那么多,怎么就从0开始了呢,,,,我还是个孩子啊,不能这么残忍 于是,代码统计进阶版:统计当前目录下所有指定文件类型的 ...

  8. 手机端页面自适应解决方案—rem布局进阶版

    手机端页面自适应解决方案—rem布局进阶版   https://www.jianshu.com/p/985d26b40199 注:本文转载之处:https://www.cnblogs.com/anni ...

  9. MyBatis实操进阶版(一)

    MyBatis实操进阶版(一) 目前而言,持久层框架中,在业务实现灵活性上,无可出MyBatis之右者.具体原因,后续将逐步展开 ResultMap元素的设置 配置文件中,ResultMap元素的作用 ...

随机推荐

  1. ASP.NET Core 6框架揭秘实例演示[28]:自定义一个服务器

    作为ASP.NET Core请求处理管道的"龙头"的服务器负责监听和接收请求并最终完成对请求的响应.它将原始的请求上下文描述为相应的特性(Feature),并以此将HttpCont ...

  2. 域渗透 | kerberos认证及过程中产生的攻击

    ​文章首发于公众号<Z2O安全攻防>​ 直接公众号文章复制过来的,排版可能有点乱, 可以去公众号看. https://mp.weixin.qq.com/s/WMGkQoMnQdyG8UmS ...

  3. hdu5197 DZY Loves Orzing(FFT+分治)

    hdu5197 DZY Loves Orzing(FFT+分治) hdu 题目描述:一个n*n的矩阵里填入1~n^2的数,要求每一排从前往后能看到a[i]个数(类似于身高阻挡视线那种),求方案数. 思 ...

  4. 文档类型声明<!DOCTYPE html>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  5. 阐述final、finally、finalize的区别?

    - final:修饰符(关键字)有三种用法:如果一个类被声明为final,意味着它不能再派生出新的子类,即不能被继承,因此它和abstract是反义词.将变量声明为final,可以保证它们在使用中不被 ...

  6. selenium 模块使用

    selenium 概念:基于浏览器自动化的一个模块,可以模拟浏览器行为 环境的安装:下载selenium模块 selenium和爬虫之间的关联是什么? 便捷的获取页面中动态加载的数据 requests ...

  7. java-LinkedMap

    输入一组数,输出是按每个出现的频率,比如1,3,3,4,5,9,9,9,3,3,输出为3,3,3,3,9,9,9,1,4,5如果频率一样就按原顺序输出. package com.lyb.array;i ...

  8. WSGI是个啥?大白话告诉你wsgi做了什么!

    定义: 官方定义:wsgi是Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是为Python语言定义的Web服务器和Web应用程序或框架之 ...

  9. SVN之屏蔽不需要提交的xml等文件

    SVN之屏蔽不需要提交的xml等文件 在默认"Default changelist"中是我们正常需要提交的文件 在"不需要提交的文件"中存储的是一些线下环境需要 ...

  10. 巧用CSS3:target 伪类制作Dropdown下拉菜单(无JS)

    原文链接:http://devework.com/css3-target-dropdown.html :target 是CSS3 中新增的一个伪类,用以匹配当前页面的URI中某个标志符的目标元素(比如 ...