1.NGINX启动脚本

#!/bin/bash
# chkconfig: 235 32 62
# description: nginx
[ -f /etc/init.d/functions ] && . /etc/init.d/functions
pidfile=/application/nginx/logs/nginx.pid
start(){
if [ -f $pidfile ];then
echo "Nginx is Running"
else
/application/nginx/sbin/nginx
RETVAL=$?
if [ $RETVAL -eq 0 ];then
action "Nginx is Started" /bin/true
else
action "Nginx is Started" /bin/false
fi
fi
return $RETVAL
}
stop(){
if [ -f $pidfile ];then
/application/nginx/sbin/nginx -s stop
RETVAL=$?
if [ $RETVAL -eq 0 ];then
action "Nginx is Stopped" /bin/true
else
action "Nginx is Stopped" /bin/false
fi
else
echo "Nginx is not Running"
fi
return $RETVAL
}
reload(){
if [ -f $pidfile ];then
/application/nginx/sbin/nginx -s reload &>/dev/null
RETVAL=$?
if [ $RETVAL -eq 0 ];then
action "Nginx is Reloaded" /bin/true
else
action "Nginx is Reloaded" /bin/false
fi
else
echo "Nginx is not Running"
/application/nginx/sbin/nginx
RETVAL=$?
if [ $RETVAL -eq 0 ];then
action "Nginx is Started" /bin/true
else
action "Nginx is Started" /bin/false
fi
fi
return $RETVAL
}
# case中的RETVAL=$?是为了接收函数的返回值
case $1 in
start)
start
RETVAL=$?
;;
stop)
stop
RETVAL=$?
;;
restart)
stop
sleep 1
start
RETVAL=$?
;;
reload)
reload
RETVAL=$?
;;
*)
echo "USAGE: $0 {start|stop|restart|reload} "
exit 1
esac
exit $RETVAL

添加到系统服务中

cp /server/scripts/nginx /etc/init.d/
chkconfig --add nginx
# 生成了这些文件
/etc/rc.d/rc2.d/S32nginx /etc/rc.d/rc3.d/S32nginx
/etc/rc.d/rc4.d/S32nginx /etc/rc.d/rc5.d/S32nginx
/etc/rc.d/rc0.d/K62nginx /etc/rc.d/rc1.d/K62nginx
/etc/rc.d/rc6.d/K62nginx 0-6表示不同运行级别:
0:关机
1:单用户
2:无网络的多用户
3:命令模式
4:未启用
5:图形界面模式
6:重启
# 查看运行级别
who -r
runlevel
2、3、5表示不管是这三个运行级别中的哪一个,nginx的启动顺序都是第32位
0、6表示重启或关机时,nginx的关闭顺序是第62位

2.统计日志文件流量字段之和

#!/bin/bash
exec < access_2018-12-8.log
while read line
do
i=`echo $line|awk '{print $10}'`
expr $i + 1 &>/dev/null
if [ $? -ne 0 ];then
continue
fi
((sum+=i))
done
[ -n "$sum" ] && echo $sum #!/bin/bash
while read line
do
i=`echo $line|awk '{print $10}'`
expr $i + 1 &>/dev/null
if [ $? -ne 0 ];then
continue
fi
((sum+=i))
done< access_2018-12-8.log
或者cat a.log | while read line
[ -n "$sum" ] && echo $sum

用shell取苹果

#!/bin/bash
file="/root/iplist"
exec < $file
while read line
do
echo $line >> /root/ReverseIp
done
mv $file $file.bak
cat /root/ReverseIp | tac

3.for循环实战,创建十个文件,名字为随机的八个字符

#!/bin/bash
mkdir test1
cd ./test1
for((i=1;i<=10;i++))
do
touch `echo $RANDOM |md5sum | cut -c 1-8`.html
done

批量修改文件名中指定的字符串

file="192916b7_finished.html"
mv $file `echo $file | sed 's#_finished.html#.jpg#g'`
# 第二种方法
ls test1 | awk -F '[_]' '{print "mv " $0,$1".jpg"}'
# 第三种方法
rename "_finished.html" ".jpg" /root/test1/*.html
# 第四种方法,sed后向引用
mv $file `echo $file | sed -r 's#(^.*)_finished.html#\1.jpg#g'`

4.跳板机

知识点1:trap信号;

知识点2:ssh key免密钥登录;

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa  > /dev/null 2>&1

知识点3:/etc/profile.d/:登录系统时会加载该目录,放在/etc/profile.d/的文件,即使没有x权限也能被执行.

想要cat的EOF不顶格写,第二个EOF前面是TAB键,不是四个空格.

cat /server/scripts/tiaoban.sh
#!/bin/bash
trapper(){
trap "" HUP INT QUIT TERM TSTP
}
menu(){
cat <<-EOF
========Host List================
1)172.16.1.8
2)172.16.1.31
3)172.16.1.41
4)exit
==================================
EOF
} conn_host(){
case "$1" in
1)
ssh $USER@172.16.1.8
;;
2)
ssh $USER@172.16.1.31
;;
3)
ssh $USER@172.16.1.41
;;
4)
exit
;;
*)
continue
esac
}
main(){
while true
do
clear
menu
read -p "Pls select:" num
conn_host $num
done
} trapper
main cat /etc/profile.d/tiaobanfirst.sh
#!/bin/bash
[ $UID -ne 0 ] && [ $USER != "oldgirl" ] &&\
. /server/scripts/tiaoban.sh

如果这个脚本中不写第一行,则永远也登不上这台机器了,只能虚拟机恢复快照或物理机重装系统.

b.安全方面

1)跳板机禁止外网IP登录,只能内网IP登录;

2)其他服务器也禁止外网IP登录,同时禁止root登录,做完ssh认证,将密码登录也禁止,只允许密钥登录,并且只有跳板机的密钥放在其他服务器上;

PasswordAuthentication yes改为no

3)通过VPN连到跳板机,再从跳板机登录到其他服务器.

从零开始搭建创业公司后台技术栈:http://www.phppan.com/2018/04/svr-stack/

shell脚本之nginx启动脚本、统计日志字段、for循环实战、跳板机的更多相关文章

  1. 【shell脚本】nginx启动脚本

    [root@localhost init.d]# cat nginx #!/bin/bash #nx Startup script for the Nginx HTTP Server # it ver ...

  2. centos LNMP第一部分环境搭建 LAMP LNMP安装先后顺序 php安装 安装nginx 编写nginx启动脚本 懒汉模式 mv /usr/php/{p.conf.default,p.conf} php运行方式SAPI介绍 第二十三节课

    centos  LNMP第一部分环境搭建 LAMP安装先后顺序  LNMP安装先后顺序 php安装 安装nginx  编写nginx启动脚本   懒汉模式  mv   /usr/local/php/{ ...

  3. linux nginx 启动脚本

    linux nginx 启动脚本 [root@webtest76 ~]# vi /etc/init.d/nginx #!/bin/bash # nginx Startup script for the ...

  4. Nginx 启动脚本/重启脚本

    第一步先运行命令关闭nginx sudo kill `cat /usr/local/nginx/logs/nginx.pid` 第二步 vi /etc/init.d/nginx 输入以下内容 #!/b ...

  5. nginx启动脚本,手动编辑

    nginx启动脚本,手动编辑 #! /bin/bash # chkconfig: - # description: nginx service XDIR=/www/server/nginx DESC= ...

  6. Nginx 启动脚本

    Nginx 启动脚本 1.vim /etc/init.d/nginx #!/bin/bash # chkconfig: - 30 21 # description: http service. # S ...

  7. LNMP 1.4 nginx启动脚本和配置文件

    编写Nginx启动脚本,写入下面这段,授权755 vim /etc/init.d/nginx #!/bin/bash # chkconfig: - # description: http servic ...

  8. nginx启动脚本和配置文件

    1.编写Nginx启动脚本,并加入系统服务 vim /etc/init.d/nginx并在其中写入如下内容:#!/bin/bash# chkconfig: - 30 21# description: ...

  9. nginx启动脚本(class练习)

    说明:使用类的方式编写程序启动脚本(练习) 1 #!/usr/bin/env python import sys import os from subprocess import Popen,PIPE ...

随机推荐

  1. C与C++ 中 struct和typedef struct

    总体分两块 1 首先://注意在C和C++里不同在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可:St ...

  2. Idea关于Lombok的一些问题( java: 找不到符号 符号)

    22:15 Lombok Requires Annotation Processing Annotation processing seems to be disabled for the proje ...

  3. 实验三《敏捷开发与XP实践》_实验报告

    实验三<敏捷开发与XP实践>_实验报告 一.实验内容和步骤 提交点1: 任务要求: 实验三 敏捷开发与XP实践 http://www.cnblogs.com/rocedu/p/479577 ...

  4. mysql 创建相同的表结构

    前言: 项目中用到分表存储,需要创建100张表,每个表的结构相同,原始操作,一个个复制粘贴,修改名字.今天DBA给了意见 create table a like b 将b的表结构和索引都复制  cre ...

  5. SLC-Microsoft:Microsoft Lifecycle Policy

    ylbtech-SLC-Microsoft:Microsoft Lifecycle Policy Microsoft Lifecycle Policy The Microsoft Lifecycle ...

  6. Dropdown 下拉菜单

    将动作或菜单折叠到下拉菜单中. 基础用法 移动到下拉菜单上,展开更多操作. 通过组件slot来设置下拉触发的元素以及需要通过具名slot为dropdown 来设置下拉菜单.默认情况下,下拉按钮只要ho ...

  7. 菜鸟的周末_Python试水

    搭建开发环境 下载安装包,打开官网,选择最新Windows Installer版本下载. 运行安装包,勾选Add Python 3.8 to Path,选择Install Now,等待安装完成,直接关 ...

  8. 从内存上看python的对象

    python中有一个说法:一切皆是对象,怎么理解这句话呢?我们可以通过查看数字,字符串在内存中的表示形式来对这句话有个更深的认识. 那么,怎么查看对象在内存中是什么样的呢?可以先参考一些这篇文章:ht ...

  9. 【ABAP系列】【第五篇】SAP ABAP7.50 之用户接口

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列][第五篇]SAP ABAP7.5 ...

  10. Unity中的全局坐标系和局部坐标系

      全局坐标系 描述游戏场景内所有物体位置和方向的基准,也称为世界坐标系.在Unity场景中创建的物体都是以全局坐标系中的坐标原点(0,0,0)来确定各自的位置的. 局部坐标系 每个物体都有其独立的坐 ...