今天看到一个脚本,可以完成脚本的启动/停止/重启/状态,和/etc/init.d中的服务一样。但是/etc/init.d里面的服务要设置开机启动,可以使用service来管理。如果不设置开机启动且方便管理,这个独立脚本就可以自由完成特定的动作。于是笔者将其简单改写后保存下来,用作操作脚本的一种方法,也可以利用crontab将其加入定时任务作为判断进程是否正常并重启。

脚本startup后面传递两个参数,需要操作的脚本名称$1和运行方式$2(start stop restart......)。

1、startup脚本#!/bin/bash

APP_NAME=$1

DIR_NAME=$HOME/shell/$APP_NAME

#使用说明,用来提示输入参数

usage() {

echo "Usage: sh 执行脚本.sh app_name [start|stop|restart|status]"

exit 1

}

#检查程序是否在运行

is_exist(){

pid=`ps -ef | grep $DIR_NAME | grep -v grep | grep -v $0 | awk '{print $2}'`

echo $pid

#如果不存在返回1,存在返回0

if [ -z "${pid}" ]; then

return 1

else

return 0

fi

}

#启动方法

start(){

is_exist

if [ $? -eq "0" ]; then

echo "${APP_NAME} is already running. pid=${pid} ."

else

nohup sh $DIR_NAME > /dev/null 2>&1 &

fi

}

#停止方法

stop(){

is_exist

if [ $? -eq "0" ]; then

kill -9 $pid

else

echo "${APP_NAME} is not running"

fi

}

#输出运行状态

status(){

is_exist

if [ $? -eq "0" ]; then

echo "${APP_NAME} is running. Pid is ${pid}"

else

echo "${APP_NAME} is NOT running."

fi

}

#重启

restart(){

stop

sleep 5

start

}

#根据输入参数,选择执行对应方法,不输入则执行使用说明

case "$2" in

start)

start

;;

stop)

stop

;;

status)

status

;;

restart|reload)

restart

;;

exist)

is_exist

;;

*)

usage

;;

esac

脚本中pid=`ps -ef | grep $DIR_NAME | grep -v grep | grep -v $0 | awk '{print $2}'` 中grep -v $0直接将本程序start筛选掉。$0代表startup本身文件名。

2、放置于默认路径中

移动到默认路径/usr/local/bin中:mv startup /usr/local/bin ,这样就可以直接使用startup 而不加路径。

3、使用脚本

测试脚本testwhile.sh放置于/root/shell目录下:#!/bin/bash

echo "my while_prog:"

while true

do

echo "test mysh!"

sleep 2

done

startup testwhile.sh start 完成开启脚本

startup testwhile.sh stop 完成关闭脚本

startup testwhile.sh status完成查看脚本状态

startup testwhile.sh restart/reload 完成重启脚本

此脚本的意义在提供一种独立于/etc/init.d 的方法,当然也可以和/etc/init.d中的服务一样,虽不设置开机启动,也可以将运行的脚本做成服务放置于其中,使用/etc/init.d/testwhile.sh start 来完成启动任务。

linux启动关闭脚本,Linux中启动/停止/重启/状态的startup脚本相关推荐

  1. win7oracle启动服务,如何快速启动/关闭Win7系统中的oracle服务

    如何快速启动/关闭Win7系统中的oracle服务  在我们使用开发系统的时候,我们就需要使用到oracle数据库,在我们使用的Win7系统重装中都会有一个oracle服务,通常这个服务都是关闭的.如 ...

  2. Linux编辑启动停止重启springboot jar包脚本

    springboot的配置文件中,配置文件的名字都有各自的意义跟用途 dev 开发环境 prod 生产环境(默认) test 测试环境 加载指定配置文件 --spring.profiles.activ ...

  3. Linux系统关闭nginx,linux下nginx启动、重启、关闭

    方式一:传统方法 一.启动 cd usr/local/nginx/sbin ./nginx 二.重启 更改配置重启nginx kill -HUP 主进程号或进程号文件路径 或者使用 cd /usr/l ...

  4. Android程序暂停sh,init进程 解析Android启动脚本init.rc 修改它使不启动android init.rc中启动一个sh文件...

    Android启动后,系统执行的第一个进程是一个名称为init 的可执行程序.提供了以下的功能:设备管理.解析启动脚本.执行基本的功能.启动各种服务.代码的路径: system/core/init,编 ...

  5. linux脚本怎么获取参数,在Bash shell脚本编程中,如何正确无误获取到“脚本选项参数”和“脚本参数”呢?...

    Linnux 中有些命令的功能非常强大,主要是因为它支持的命令选项比较多.如:[ip]命令可以配置IP地址.路由条目的配置管理操作非常完善,该命令就可以完成[ifconfig]和[route]命令实现 ...

  6. 启动关闭oracle命令,oracle启动关闭命令

    关闭: 1.shutdown normal 不允许新的连接.等待会话结束.等待事务结束.做一个检查点并关闭数据文件.启动时不需要实例恢复. 2.shutdown transactional 不允许新的 ...

  7. linux oracle 关闭防火墙,Linux 下关闭防火墙设置

    一.Linux下开启/关闭防火墙命令 1) 永久性生效,重启后不会复原 开启: chkconfig iptables on 关闭: chkconfig iptables off 2) 即时生效,重启后 ...

  8. 阿帕奇退出java_java+tomcat+apache安装整合,启动/关闭,添加开机启动服务

    安装java1.8 #yum update    服务器更新源码包 #rpm -qa |grep -E '^open[jre|jdk]|j[re|dk]'  搜索任何版本的已安装JDK组件 java- ...

  9. Shell脚本运行中的停止方法

    Linux系统Shell中提交了一个脚本,但是需要停止这个进程,如何处理? 方式1 killall file-flume-kafka 说明:killall是一个命令,不是kill all,file-f ...

最新文章

  1. C# 各种进制之间相互转换 [ZT]
  2. HTSRealistic missions 10:Holy Word High School
  3. Tensorflow 2.1.0 中 keras.utils.plot_model()出错的解决方法
  4. 在流程梳理的过程中,OA工作组应采用国际先进方法
  5. nodejs-ORM 框架 waterline和Sails
  6. exchange无法收发邮件_MAPI session超过Exchange最大限制,邮件发送失败的终极解决方法...
  7. STM32-雨滴传感器
  8. 高级维修电工实训装置
  9. Tcl 语言——过程与字符串匹配篇
  10. 基于张量分解的药物重定位预测药物、靶点和疾病之间的关联
  11. 【C#.NET MVC】Deft框架简介与基本使用
  12. 古希腊神话故事:纳鲁斯和普鲁吐斯
  13. Android使用HereMap教程
  14. 360进攻搜狗后院!研发输入法 搜狗称无压力
  15. excel计算机基础知识考试题,2017年计算机excel基础考试题「附答案」
  16. IntelliJ IDEA 中设置左菜单字体, 编辑器字体和控制台的字体
  17. 用Python实现Word多文档合并
  18. podman加速配置、harbor镜像仓库部署
  19. 程序猿之间的鄙视链,你在第几层
  20. python由大到小排序_Python选择从小到大的排序,python

热门文章

  1. 尼康日本拟裁员约一千人 涉及半导体制造业务
  2. Discuz常见小问题-如何为每个板块设置不同的图标
  3. 【Todo】【读书笔记】Linux高性能服务器编程
  4. Mina的TCP的主要接口
  5. 寄存器间接寻址缺点_详解西门子间接寻址之地址寄存器间接寻址
  6. mysql dsec_MySql数据库操作命令
  7. Linux用户基础操作入门
  8. 在全员编程时代下,软件测试员又该何去何从?
  9. 计算机网络rip工作原理,12. 小型网络 RIP 协议工作原理
  10. LoadRunner踩坑记录:服务器“127.0.0.1”在尝试协商 SSL 会话时关闭连接