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就是用守护进程 ...
随机推荐
- 4. SVM分类器求解(2)
最优间隔分类器(optimal margin classifier) 重新回到SVM的优化问题: 我们将约束条件改写为: 从KKT条件得知只有函数间隔是1(离超平面最近的点)的线性约束式前面的系数,也 ...
- JavaScript:正则表达式 前瞻
正向前瞻:用来捕获出现在特定字符之前的字符,只有当字符后面跟着某个特定字符才去捕获它.(?=) 负向前瞻:它用匹配只有当字符后面不跟着某个特定字符时才去匹配它.(?!) 在执行前瞻和负向前瞻之类的运算 ...
- mysql大小写敏感与校对规则
大家在使用mysql过程中,可能会遇到类似一下的问题: root@chuck 07:42:00>select * from test where c1 like 'ab%'; +-----+ ...
- 第二章 consul的安装和启动
安装环境: mac:64bit(查看mac位数:打开终端-->"uname -a") consul_0.6.4_darwin_amd64.zip和consul_0.6.4_w ...
- 手动制作微信h5分享活动页面
现在网上有很多自动制作h5宣传页的网站,可以通过传图,点几下鼠标就可以制作一个集动画.生产二维码等各种功能于一身的h5微信宣传页.对于运营来讲,非常方便,没有技术门槛,不足之处就是只有特定的动画效果, ...
- Vertica 导出数据测试用例
需求:构建简单的测试用例,完成演示Vertica导出数据的功能. 测试用例:导出test业务用户t_jingyu表中的数据. 一.初始化测试环境 二.导出数据 2.1 vsql命令说明帮助 2.2 导 ...
- Dojo前端开发框架与jQuery前端开发框架,对比分析总结
最近Dojo和jQuery双双发布了最新的1.8版本,有着相同版本号的两个Javascript库也有许多核心的相同之处:相同的资源加载机制AMD.相同的选择器 引擎Sizzle等.作为业界知名的Jav ...
- AJAX(一)
AJAX(一) Ajax是Asynchronous Javascript和XML的简写,这一技术能够向服务器请求额外的数据而无需卸载页面,会带来更好的用户体验. [前面的基础知识][关于同步和异步的了 ...
- 4D卓越团队-两天培训总结
上周末参加了公司组织的领导力培训课程-4D卓越团队(创业型团队领导力训练项目),感觉有一些用,在这里分享一下. 课前游戏 培训老师先带我们做了一个游戏:每一个人,在同时参加培训的人中找到另外的 6 个 ...
- 设计模式(九)装饰者模式(Decorator Pattern)
一.引言 在软件开发中,我们经常想要对一类对象添加不同的功能,例如要给手机添加贴膜,手机挂件,手机外壳等,如果此时利用继承来实现的话,就需要定义无数的类,如StickerPhone(贴膜是手机类).A ...