#!/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 != ]]; then
echo "can't get root, exit."
exit
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 >& & # run as root
else
nohup $cmd > /dev/null >& & # run as other
fi
sleep 0.1
exist=$(get_process "$cmd")
echo "run [ $(echo $exist) ] at background."
fi

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

  1. linux下memcached的启动/结束的方式

    当前项目中,linux下memcached的启动/结束的方式 默认情况下memcached安装到/usr/local/bin下. 进入安装目录,启动memcached:/usr/local/memca ...

  2. linux系统下memcached启动正常但程序无法连接的问题解决

    在虚拟机linux安装好memcached之后,试着用java程序连接一下memcached的服务端,但却出现了以下错误 com.schooner.MemCached.SchoonerSockIOPo ...

  3. Linux下main函数启动过程【程序员自我修养笔记】【自用】

    1. 入口函数和程序初始化 1.1 程序从main开始吗? 当程序执行到main函数的第一行时,很多事情都已经完成了: [证1]如下是一段C语言代码: 代码中可以看到,在程序刚刚执行到main的时候, ...

  4. 〖Linux〗不重复启动某应用程序的脚本

    cmd="/home/scue/bin/ipclient $ipclient" exist=$(ps aux | grep -v 'grep' | grep "$cmd& ...

  5. Win+数字快速启动/切换指定程序

    Windows键+数字,可以快速启动任务栏上的程序 按下按下Win+4桌面将切换到排序第4的程序:页也就是谷歌浏览器. 今天刚发现这个小功能.   文章来源:外星人来地球 欢迎关注,有问题一起学习欢迎 ...

  6. 和菜鸟一起学linux之initramfs方式启动

    关于initramfs initramfs在编译内核的同时被编译并与内核连接成一个文件,它被链接到地址__initramfs_start处,与内核同时被加载到ram中.initramfs被解析处理后原 ...

  7. [C++]Linux之间隔时间内循环执行指定程序

    #include<time.h> #include<unistd.h>//usleep(num) #include<stdio.h> #include<std ...

  8. linux将80端口映射到指定端口命令

    1.添加一个端口映射 将80端口映射到8088端口命令如下: iptables -t nat -I PREROUTING -p tcp --dport 80-j REDIRECT --to-port ...

  9. 使程序在Linux下后台运行,程序运行前后台切换

    一.为什么要使程序在后台执行 我们计算的程序都是周期很长的,通常要几个小时甚至一个星期.我们用的环境是用putty远程连接到日本Linux服务器.所以使程序在后台跑有以下三个好处: 1:我们这边是否关 ...

随机推荐

  1. win7电脑遇到端口被占用的情况该如何查看并将其关闭

    转载:http://www.jb51.net/os/windows/203315.html 端口是我们在进行远程或者打印机等都会遇到的,但是有很多用户会遇到端口被占用的情况,有很多人不知道该如何查看电 ...

  2. 最快的BT软件rtorrent Step by Step指南

    原文地址:http://forum.ubuntu.org.cn/viewtopic.php?t=165069 rtorrent是linux下最快的bt下载软件,由于支持DHT网络,可以很好的于迅雷和B ...

  3. VS2010 打包生成exe文件后 执行安装文件出现 TODO:&lt;文件说明&gt;已停止工作并已关闭

    一.VS2010 打包生成exe文件后  执行安装文件出现  TODO:<文件说明>已停止工作并已关闭 TODO: <文件说明>已停止工作 原因: 打包的时候在文件系统中建立了 ...

  4. jQueryEasyUI创建菜单主页

    function addTab(title,path){ funcTab.tabs('add',{ title: title, fit:true, href:'${ctx}/login/forword ...

  5. Matlab注释多行和取消多行注释的快捷键

    matlab里注释符号是%,只是单行注释,可是没有多行注释符号,就像C/C++/Java中都有多行注释符号/*  */. 如果利用单行注释的方式手工注释一段程序会很麻烦,matlab软件自带快捷键支持 ...

  6. 启明星会议室预定系统Outlook版开始支持Exchange2013与Office365版

    版本启明星会议室预定系统支持Exchange2013与微软云服务Office365版.(注意:Exchange2007与Exchange2010也适合此版本) 1.安装 首页,安装类似启明星普通的会议 ...

  7. ELK kibana查询与过滤

    在kibana中,可通过搜索查询过滤事务或者在visualization界面点击元素过滤. 创建查询 在Discover界面的搜索栏输入要查询的字段.查询语法是基于Lucene的查询语法.允许布尔运算 ...

  8. C语言:通过指针函数输出二维数组中每个学生的成绩

    // //  main.c //  Pointer_function // //  Created by ma c on 15/8/2. //  Copyright (c) 2015年 bjsxt. ...

  9. linux下永久添加静态路由

    在linux下永久添加静态路由有两种方法: 添加路由的命令: 1,route add route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0 ...

  10. Eclipse上传代码到GitHub

    平时工作学习中难免会在Github搜索一下开源的Android代码, Android系统本身的代码就是托管在GitHub上,如果平时随手做了一个Demo,托管在云盘感觉不入流,如果平时自己一时兴起写了 ...