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

今天看到一个脚本,可以完成脚本的启动/停止/重启/状态,和/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 来完成启动任务。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值