#!/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