〖Linux〗以后台方式启动/结束指定程序/命令(不受 exit 或点击窗口关闭按钮等终端退出操作的影响)...

#!/bin/bash - 
#===============================================================================
#
#          FILE: bgcmd
# 
#         USAGE: 方式1 -- $ ./bgcmd             # 启动指定后台程序
#                方式2 -- $ ./bgcmd off         # 结束指定后台程序
# 
#   DESCRIPTION: 后台运行程序/命令(类似于deamon进程)
# 
#       OPTIONS: ---
#  REQUIREMENTS: >> 按需要修改 cmd 和 need_root 这两个变量<<
#          BUGS: ---
#         NOTES: ---
#        AUTHOR: linkscue(scue),
#  ORGANIZATION: 
#       CREATED: 2013年08月14日 22时04分38秒 HKT
#      REVISION:  ---
#===============================================================================

get_process(){
    cmd="$1"
    ps aux | grep -v 'grep' | grep "$cmd" | awk '{print $2}'
}

kill_process(){
    exist="$1"
    if [[ "$need_root" != "" ]]; then
        sudo kill $exist
    else
        kill $exist
    fi
    echo "process [ $(echo $exist) ] had killed."
}

#-------------------------------------------------------------------------------
#  cmd: 希望在后台执行的程序/命令
#  need_root: 是否需要root权限执行
#-------------------------------------------------------------------------------
need_root=true
cmd="python -m SimpleHTTPSever 80"

# get root, if need.
if [[ "$need_root" != "" ]]; then
    sudo ls > /dev/null
    ret=$?
    if [[ $ret != 0 ]]; then
        echo "can't get root, exit."
        exit 1
    fi
fi

# run cmd
exist=$(get_process "$cmd")
if [[ "$1" != "" ]] ; then                      # kill process
    kill_process "$exist"
else
    if [[ "$exist" != "" ]]; then
        kill_process "$exist"
    fi
    if [[ "$need_root" != "" ]]; then
        sudo nohup $cmd >/dev/null 2>&1 &       # run as root
    else
        nohup $cmd > /dev/null 2>&1 &           # run as other
    fi
    sleep 0.1
    exist=$(get_process "$cmd")
    echo "run [ $(echo $exist) ] at background."
fi

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值