利用cron监视后台进程状态(一)
来源:互联网 发布:php7不支持mysql 编辑:程序博客网 时间:2024/06/08 10:32
1.
利用cron监视后台进程状态,如果进程死掉或服务器重启后自动拉起进程。
目的:Linux 下服务器程序会因为各种原因dump掉,就会影响用户使用,这里提供一个简单的进程监控和重启功能。
实现原理:由定时任务crontab调用脚本,脚本用ps检查进程是否存在,如果不存在则重启并写入日志。
每分钟调用一下脚本cron_worker.sh
*/1 * * * * sudo bash /home/test/OnlineAdsDemo/bin/cron_worker.sh
查看cron 启动计划表:$crontab -l
运行crontab -e 命令;
如果出现得是:
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
说明是第一次运行该命令,这里是让选择编译器的意思,喜欢用vim的童鞋可以选择3。
补充两点:
1、如果选择了2,那个nano编辑器,可以按ctrl+x退出。
2、如果不小心选择了2,那么又想改回vim怎么办呢?运行这个命令
- 1
- 1
就又回到了选择编译器的界面上了。
选择完编辑器,就进入了编辑界面了,可以在这里添加计划任务:
最后一定要记得重启cron:$/etc/init.d/cron start 。
如果任务没有执行,那么先查看crol进程的运行情况:
- 1
- 1
另外,还要注意,在执行任务的脚本中不能用相对路径,要用绝对路径。
2.cron_worker.sh脚本如下:
#! /bin/shhost_dir=`echo ~` # 当前用户根目录proc_name="worker.py" # 进程名file_name="/OnlineAdsDemo/bin/cron_worker_log.log" # 日志文件pid=0proc_num() # 计算进程数{num=`ps -ef | grep $proc_name | grep -v grep | wc -l`return $num}proc_id() # 进程号{pid=`ps -ef | grep $proc_name | grep -v grep | awk '{print $2}'`}proc_numnumber=$?if [ $number -eq 0 ] # 判断进程是否存在then cd $host_dir/OnlineAdsDemo/bin/; ./run_worker.sh -DZone # 重启进程的命令,请相应修改proc_id # 获取新进程号echo ${pid}, `date` >> $host_dir$file_name # 将新进程号和重启时间记录fi
4.run_worker.sh 脚本如下:
#!/bin/bashnohup python -u ../worker.py >> error_log.txt 2>&1 &nohup python -u ../worker.py >> error_log.txt 2>&1 &nohup python -u ../worker.py >> error_log.txt 2>&1 &nohup python -u ../worker.py >> error_log.txt 2>&1 &nohup python -u ../worker.py >> error_log.txt 2>&1 &nohup python -u ../worker.py >> error_log.txt 2>&1 &nohup python -u ../worker.py >> error_log.txt 2>&1 &nohup python -u ../worker.py >> error_log.txt 2>&1 &nohup python -u ../worker.py >> error_log.txt 2>&1 &nohup python -u ../worker.py >> error_log.txt 2>&1 &
5. $ps -ef | grep worker.py 查看是否一次将10个进程拉起,如果拉起,该怎么批量kill这10个进程呢
stop_worker.sh 如下:
#!/bin/bashsudo ps -ef | grep 'worker.py' | grep -v grep | awk '{print $2}' | xargs sudo kill -9
6.将以上cron_worker.sh通过FileZilla上传到目标服务器,手动执行时出现 $'\r': 未找到命令的解决的问题
考虑到代码是从windows下一直过来的,脚本可能在格式上存在问题
解决方案:
sudo apt-get install dos2unix
dos2unix **.sh
- 利用cron监视后台进程状态(一)
- 利用cron监视后台进程状态(二)
- 利用信号监视进程存在
- Linux后台进程(cron和crontab)
- VB 利用WMI进行进程监视
- 如何利用cron进程来自动执行
- 后台进程一:DBWR进程
- Shell脚本之监视指定进程的运行状态
- 监视进程
- 进程监视
- ring3下利用WMI监视进程创建(vc版)
- ring3下利用WMI监视进程创建(vc版)
- 如何利用cron进程来自动执行(总结)
- 监视某进程,保持进程处于启动状态(非正常退出后能自动启动)
- 利用进程管理后台运行node
- task_struct解析(一) 进程状态
- task_struct解析(一) 进程状态
- 监视系统状态
- MFC的学习笔记(一)
- AndroidStudio 中如何查看获取MD5和SHA1值(应用签名)
- pthread_cond_wait()用法分析
- Oracle唯一主键ID的生成
- android Fragment实现Tab功能(fragment相互切换时,可保存之前状态)
- 利用cron监视后台进程状态(一)
- Subversion(SVN)学习笔记
- MFC学习笔记(二)
- nodejs安装
- Nio Tcp
- JSP九大内置对象及四个作用域
- Oracle数据库(关系型数据库2)
- NoURL拒绝Web应用25年来的不合理
- java-Cannot reduce the visibility of the inherited method from 父类