shell语法习题练习进阶版

第4章 shell语法深度习题练习

4.1 使用if,case,函数的方法将服务改成system(centos6)

4.1.1 if方法

4.1.1.1 system实现

4.1.1.1.1 编写代码信息

[[email protected] 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加入开机自启动里面

[[email protected] run]# mv /server/scripts/rsyncd /etc/init.d/

[[email protected] run]# cd /etc/init.d/

[[email protected] init.d]# chmod +x rsyncd

[[email protected] init.d]#

?

[[email protected] init.d]# vim rsyncd

?

#!/bin/bash

# chkconfig: 2345 98 99

para=$1

?

[[email protected] init.d]# chkconfig --add rsyncd

[[email protected] init.d]#

?

[[email protected] init.d]# chkconfig --list rsyncd

rsyncd ????0:off????1:off????2:on????3:on????4:on????5:on????6:off

[[email protected] init.d]#

4.1.1.1.3 使用service测试

[[email protected] ~]# service rsyncd start

[[email protected] ~]# service rsyncd restart

[[email protected] ~]#

4.1.2 函数和case结合方法

4.1.2.1 编写代码信息

[[email protected] 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加入开机自启

[[email protected] run]# mv /server/scripts/rsyncd /etc/init.d/

[[email protected] run]# cd /etc/init.d/

[[email protected] init.d]# chmod +x rsyncd

[[email protected] init.d]#

?

[[email protected] init.d]# vim rsyncd

?

#!/bin/bash

# chkconfig: 2345 98 99

para=$1

?

[[email protected] init.d]# chkconfig --add rsyncd

[[email protected] init.d]#

?

[[email protected] init.d]# chkconfig --list rsyncd

rsyncd ????0:off????1:off????2:on????3:on????4:on????5:on????6:off

[[email protected] init.d]#

?

4.1.2.3 使用service进行测试

[[email protected] scripts]# service rsyncd start

[[email protected] scripts]# service rsyncd stop

[[email protected] scripts]#

4.2 将服务改成systemctl(centos7)

4.2.1 将centos6下面的脚本rsyncd移动到centos7下

scp -r [email protected]:/etc/init.d/rsyncd /server/

[[email protected] 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

[[email protected] system] # systemctl start rsyncd-new.service

[[email protected] 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.

[[email protected] system] #

4.3 实现1-100的和(while循环和for循环)

[[email protected] 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

[[email protected] test_init] # sh para_0.sh

5050

[[email protected] test_init] #

?

[[email protected] test_init] # cat para_0.sh

#!/bin/bash

sum=0

i=0

for i in `seq 100`

do

((sum=sum+i))

done

echo $sum

[[email protected] test_init] # sh para_0.sh

5050

[[email protected] test_init] #

4.4 使用for循环判断10.0.0.0网段有多少台机器是通的

[[email protected] 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

[[email protected] 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

[[email protected] 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

[[email protected] 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哪些端口开放的

原文地址:https://www.cnblogs.com/liangyuxing/p/12166085.html

时间: 2024-10-10 10:04:03

shell语法习题练习进阶版的相关文章

java集合框架小结(进阶版)之HashMap篇

基本概念: Hash(哈希):hash一般也译作“散列”.事实上,就是一个函数,用于直接定址.将数据元素的关键字key作为变量,通过哈希函数,计算生成该元素的存储地址. 冲突:函数是可以多对一的.即:多个自变量可以映射到同一函数值.一般而言,不同的key的hash值是不同的.在往hash表中映射的时候,不同的hash值可能映射到同一存储地址,这种情况被称为冲突. 解决冲突的方法: 1. 链表法:将冲突的各个元素用一个一维数组来维护.(java源码实现) 2. 开发寻址法:具体的有线性探测法.二次

java集合框架小结(进阶版)之HashSet篇

建议先看下:java集合框架小结(进阶版)之HashMap篇 基本概念: hashSet: 根据java集合框架小结(初级版)图示,HashSet是AbstractSet的一个子类,是基于Hash算法的Set接口的实现,顾名思义.允许添加null. --------------------------------------↑ 以上都是扯淡 ↑,↓ HashSet完全是在挂羊头卖狗肉 ↓------------------------------------------- 何谓挂羊头卖狗肉?大家

层序遍历及其进阶版

输入为:abd##eh###cfi##j##g## 1.普通层序遍历:输出为一行 2.进阶版1:输出每一层,从左向右依次输出 3.进阶版2:S型输出每一层,即从右向左和从左向右交替输出 #include<iostream> #include<vector> using namespace std; template<class T> struct BiNode { T data; BiNode<T>* leftchild,*rightchild; }; te

ES系统封装教程 高级进阶版 提供Wind7,xp系统下载

 ES系统封装教程 高级进阶版,提供我自己封装的Wind7 x86&x64和XP三个版本的系统下载.这个教程不是为没有基础的人准备的,要想从头学起,我推荐几个基础的教程. 1.使用 VMware Player 创建适合封装的虚拟机 2.使用 Easy Sysprep v4 封装 Windows XP 基础篇 3.使用 Easy Sysprep v4 封装 Windows 7 凡是里面用到的的工具我都会提供下载地址. 虚拟机VM ware10 .系统补丁到2014年10月.系统运行库.封装用的

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

作者近日偶然获得一misc题,本来以为手到擒来,毕竟这是个大家都讨论烂了的题,详情访问链接http://blog.csdn.net/ETF6996/article/details/51946250.既然作为进阶版,当然得对的起这括号里三个字,那道题我断断续续研究了两天,才勉强算是破解了.不废话了,直入主题. 对于普通的zip文件有了解的应该都认得下面这张图片: 对于其中各个字段的含义请大家访问首行提供的链接学习,对于了解过的小伙伴接着往下看,以下是题目中的截图: 仔细点研究会发现这里有五个50

makefile中的shell语法

在Makefile中写shell代码有点诡异,和不同的shell语法不太一样,如果不了解,看Makefile会莫名其妙.下面总结了一些. 1:尽在Makefile文件的目标项冒号后的另起一行的代码才是shell代码.eg:xx = xx1         // 这里时makefile代码yy:xx = xx2   // 这是是makefile代码,makefile允许变量赋值时,'='号两边留空格yy:    xx=xx3 // 只有这里是shell代码 ,shell不允许‘=’号两边有空格哦.

L脚本语言语法手册 0.10版

L脚本语言语法手册 0.10版 赵亮       简  介 L脚本语言是一个轻量级的,旨在接近自然语言的编程语言,目前支持在中文.英文基础上的编程.并可扩展为任意语种.L脚本语言的语法结构简单,程序结构相对松散,易学易用. 目前L脚本语言仍处于开发初期,功能尚不完善.目前提供了一个简单的源码编辑器,建议使用notepad++或者ultraedit进行源码编辑. 目录 一.        介绍.. 2 二.        注释.. 3 三.        对象定义和引用.. 3 四.       

(简单母函数进阶版,暴力)hdu 2069 Coin Change

Coin Change Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 14857    Accepted Submission(s): 5024 Problem Description Suppose there are 5 types of coins: 50-cent, 25-cent, 10-cent, 5-cent, and

逗比之——程序员装逼手册2(进阶版)

1. 着装 一根牛X的程序员是根本没有时间打理自己外貌的,发型就要像爱因斯坦一样,顶着一脑袋鸡窝,凌乱蓬松美,给人随时能从头发里掏出一个鸡蛋的感觉.胡子一大把,彰显自信又从容,不近视则以,近视就要戴酒瓶底子那么厚的大眼镜,一种科研工作者的风格.牛X程序员对自己着装是有高要求的,无论是春夏秋冬,白天晚上,刮风下雨,一个牛X的程序员都要十分在意自己着装,T恤+大花裤衩子+拖鞋是标配,一年365天风雨无阻.换衣服保持一年3-5件T恤的更新频率就可以,T恤大多是参见开源大会免费获得的,上面印着ruby