• 〖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
  • 相关阅读:
    bzoj2733: [HNOI2012]永无乡
    bzoj3141: [Hnoi2013]旅行
    bzoj3144: [Hnoi2013]切糕
    bzoj3140: [Hnoi2013]消毒
    bzoj3139: [Hnoi2013]比赛
    bzoj3142: [Hnoi2013]数列
    bzoj3572: [Hnoi2014]世界树
    bzoj2286: [Sdoi2011]消耗战
    bzoj3611: [Heoi2014]大工程
    The Unsolvable Problem
  • 原文地址:https://www.cnblogs.com/scue/p/3295434.html
Copyright © 2020-2023  润新知