linux 守护程序小记(指定进程不存在则启动 )
最近想在debian 下做个守护进程.用于守护指定的程序一直处于运行状态.网上查了下,有Crontab方式和写脚本执行方式.
Crontab
Crontab 是系统自带的,类似于Windows的计划任务.相关介绍与使用可以查看:
"
Debian的定时执行命令Crontab:http://www.tdblog.cn/?post=276
用
nano /etc/crontab #编辑配置后
root@:~# cat /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do. SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # m h dom mon dow user command
* * * * root cd / && run-parts --report /etc/cron.hourly
* * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
* * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
* * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
#my server 3分钟执行一次
*/3 * * * * root /bin/bash /abc/mysh/t2.sh
t2.sh内容为:
查找程序名为"abc",程序参数为"chanshu" 的进程
不存在则启动.
注意: & 表示退出后,在后台继续执行.
#!/bin/sh
ps -fe|grep 'abc chanshu' |grep -v grep
if [ $? -ne ]
then
echo "abc chanshu start process....."
/disk1/d1/abc chanshu &
else
echo "\r\n abc chanshu already runing....."
fi
#####
/etc/init.d/cron restart #执行重启cron
"
不过Crontab可以指 月,日,小时,分以及一直运行,但却不能指定 间隔多少秒运行.这点就缺少点灵活性.
可用Crontab来执行一些定时清理的任务,比如定期清理日志.
脚本实现
参考了
"
linux下用脚本实现:监控一个进程,不存在则将其启动。http://blog.csdn.net/rosekin/article/details/15341835
"
参考这文章后,觉得这个方式更灵活.
于是我的脚本
t3.sh
#!/bin/sh #一直执行
while [ ]
do ps -fe|grep 'abc chanshu' |grep -v grep
if [ $? -ne ]
then
#echo "abc chanshu start process....."
/disk1/d1/abc chanshu &
#else
#echo "\r\n abc chanshu already runing....." fi #10秒执行一次
sleep
done &
#####
t3.sh 是一直在后台执行,每10秒执行一次扫描任务. 为什么 扫描了程序,还要扫描程序的参数? 不同的参数可以让相同的程序 执行不同的分工.
把t3.sh放入开机启动项,就ok了.
debian设置开机自启动
这个的方法很多,个人觉得编辑/etc/rc.local配置最简单有效。
保存文件,重启系统即可生效.
#代码如下
sudo vi /etc/rc.local #在exit 0之前添加软件启动命令。如: /disk1/aaa/t3.sh
至此一个简单的设置守护进程的方法就完成了.
如果想要中止进程可以用 pkill -9 进程名或进程部分名.
参见:http://blog.sina.com.cn/s/blog_975a2a540100ywyx.html
linux 守护程序小记(指定进程不存在则启动 )的更多相关文章
- Linux kill 杀死指定进程
一 杀死指定进程 现知道有一个php线程正在运行,需要杀死 root 26278 1 0 2015 ? 00:00:31 /usr/local/php/bin/php /var/www/html/r ...
- linux下查看指定进程的所有连接信息(转)
定位某个进程的网络故障时经常需要用到的一个功能就是查找所有连接的信息.通常查找某个端口的连接信息使用 ss 或者 netstat 可以轻松拿到,如果是主动与别的机器建立的连接信息则可以通过 lsof ...
- linux如何杀死指定进程
ps aux | grep '进程名称' sudo kill pid
- linux:如何指定进程运行的CPU
coolshell最新的文章<性能调优攻略>在"多核CPU调优"章节,提到"我们不能任由操作系统负载均衡,因为我们自己更了解自己的程序,所以,我们可以手动地为 ...
- linux进程管理之开机启动
下面用自启动apache为例;自启动脚本:/usr/local/apache2/bin:./apachectl start文件位于/etc/rc.d/init.d下,名为apached, 注意要可执行 ...
- Linux高级编程--06.进程概述
进程控制块 在Linux中,每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,它通常包含如下信息: 进程id.系统中每个进程有唯一的id,在C语言中用pid_t类型表示,其实就是一个非 ...
- 【转载】linux内核笔记之进程地址空间
原文:linux内核笔记之进程地址空间 进程的地址空间由允许进程使用的全部线性地址组成,在32位系统中为0~3GB,每个进程看到的线性地址集合是不同的. 内核通过线性区的资源(数据结构)来表示线性地址 ...
- LINUX 暂停、继续进程
LINUX 暂停.继续进程 kill -STOP 1234 将该进程暂停. 如果要让它恢复到后台,用kill -CONT 1234 (很多在前台运行的程序这样是不行的) 如果要恢复到前台,请在当时运行 ...
- Linux编程实现守护进程
Linux 守护程序 守护进程(Daemon)它是在一个特定的过程的背景进行.它独立于控制终端的和周期性地执行某些任务或待某些事件.是一种非常实用的进程. Linux的大多数server就是用守护进程 ...
随机推荐
- JavaScript权威设计--事件冒泡,捕获,事件句柄,事件源,事件对象(简要学习笔记十八)
1.事件冒泡与事件捕获 2.事件与事件句柄 3.事件委托:利用事件的冒泡技术.子元素的事件最终会冒泡到父元素直到跟节点.事件监听会分析从子元素冒泡上来的事件. 事件委托的好处: 1.每个函 ...
- 设计模式(十三):从“FQ”中来认识代理模式(Proxy Pattern)
我们知道Google早就被墙了,所以FQ才能访问Google呢,这个“FQ”的过程就是一个代理的过程.“代理模式”在之前的博客中不止一次的提及过,之前的委托回调就是代理模式的具体应用.今天我们就从“F ...
- jQuery2.x源码解析(回调篇)
jQuery2.x源码解析(构建篇) jQuery2.x源码解析(设计篇) jQuery2.x源码解析(回调篇) jQuery2.x源码解析(缓存篇) 通过艾伦的博客,我们能看出,jQuery的pro ...
- Hive索引功能测试
作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 从Hive的官方wiki来看,Hive0.7以后增加了一个对表建立index的功能,想试下性能是 ...
- go语言注释
Go语言注释实例代码教程 - Go支持C语言风格的/* */块注释,也支持C++风格的//行注释. 当然,行注释更通用,块注释主要用于针对包的详细说明或者屏蔽大块的代码. 每个包都应有一个包注解,即 ...
- 【中文分词】隐马尔可夫模型HMM
Nianwen Xue在<Chinese Word Segmentation as Character Tagging>中将中文分词视作为序列标注问题(sequence labeling ...
- Angular 基础入门
简介 什么是AngularJS 一个功能非常完备的前端框架,通过增强HTML的方式提供一种便捷开发Web应用程序的方式 其核心特点就是几乎无任何DOM操作,让开发人员的精力和时间全部集中于业务 MVC ...
- Linux下的解压命令小结
Linux下常见的压缩包格式有5种:zip tar.gz tar.bz2 tar.xz tar.Z 其中tar是种打包格式,gz和bz2等后缀才是指代压缩方式:gzip和bzip2 filename. ...
- Hive技术架构
一.Hive概念 Facebook为了解决海量日志数据的分析而开发了Hive,Hive是一种用SQL语句来读写.管理存储在分布式存储设备上的大数据集的数据仓库框架. 1. 数据是存储在HDFS上的,H ...
- 【转】async & await 的前世今生
async 和 await 出现在C# 5.0之后,给并行编程带来了不少的方便,特别是当在MVC中的Action也变成async之后,有点开始什么都是async的味道了.但是这也给我们编程埋下了一些隐 ...