兄弟们不知道是否有被要求24小时不允许关机的痛苦经历,有时半夜正在做着美梦却被客户或老板抓起来一通臭骂,服务器怎么回事down了,网站访问不了... 唉,真是痛不欲生呀!
经历过N次折磨后,我下定决心要改变这种情况,想一下,也许我可以写个crontab来监控程序的运行情况,如果服务停止或发生了不可修复的错误时,自动重启服务器,这样我就不用担心半夜被人抓起来骂了。
说动手就动手,虽说我linux/unix脚本不是很熟,但我想应该也难不到我,左瞧瞧右看看,拼出了一个脚本,给大家参考下,大家可以修改下路径与端口适应自己的程序:
#查找当前工作日志文件,判断是否发生不可修复的错误,若有则重启
LOG=`ls /workdir/server-*.log -lrt |tail -1`
ERROR_NUM=`cat $LOG | grep java.lang.OutOfMemoryError | wc -l`
if [ $ERROR_NUM -ne 0 ];then
echo "found $ERROR_NUM times at $LOG"
kill -9 `netstat -anp|grep :::8080 | awk '{print substr($7,1,index($7,"/java")-1)}'`
cd /workdir;exec startserver.sh
exit
fi
#检查当前服务是否还在运行,若已停止,则重新启动
PROCESS_NUM=`netstat -anp|grep :::8080 | awk '{print substr($7,1,index($7,"/java")-1)}' | wc -l`
if [ $PROCESS_NUM -eq 0 ];
then
cd /workdir;exec startserver.sh
fi
然后在crontab中定时执行此脚本,就可以了!嘿... 这下闹心的电话少多了,当然不要忘记定时去看下日志哦!
本人原创文章,转载请注明出处!
分享到:
相关推荐
通过crontab机制,在设定的时间间隔内反复执行监控程序,达到每隔一个时间间隔监控一下进程的运行情况,若有异常则报警。 2,注意事项: (1)进程列表在一个configurationfile.txt文件中,进程名的格式又/n分隔,...
总结来说,利用`crontab`结合进程或端口检查,我们可以构建自动化监控程序运行状态的机制,确保关键服务始终可用,并在必要时采取恢复措施。这对于服务器管理和运维工作至关重要,可以显著提高系统的稳定性和可靠性...
linux 下服务器程序会因为各种原因dump掉,就会影响用户使用,这里提供一个简单的进程监控和重启功能。 实现原理: 由定时任务crontab调用脚本,脚本用ps检查进程是否存在,如果不存在则重启并写入日志。 crontab...
这个主题主要涉及到计算机系统的自动化操作,如定时重启以及确保特定程序在系统启动后或在运行过程中得到稳定执行的进程守护功能。 首先,让我们来了解一下“定时重启”。定时重启功能允许用户预设一个时间点,让...
每个进程都可以视为一个独立的任务执行者,它们并行工作,减少了整体的执行时间。这种设计思路借鉴了分布式系统中的并行处理概念,可以有效地利用服务器资源,尤其是在处理大量定时任务时。 进程间的通信是通过消息...
在Linux环境中,`cron`守护进程负责监控和执行由`crontab`配置的定时任务。 一、Crontab的基本结构 Crontab文件由一系列行组成,每行代表一个任务。每个任务行包含六个字段,依次表示分钟、小时、日期、月份、星期...
- `crontab`是Linux系统中的一个守护进程(daemon),用于执行计划任务。 - 用户可以使用`crontab`命令来创建、编辑或删除计划任务。 2. **Crontab配置文件**: - 每个用户都有自己的`crontab`文件,通常存储在`...
在Docker环境中,每个容器默认会管理一个主进程,这个主进程通常是`CMD`或`ENTRYPOINT`指令指定的命令。当这个主进程结束时,Docker容器也会随之停止。因此,如果要在Docker容器中运行多个长时间运行的进程,如在本...
Crontab是Linux系统中的一个用于计划周期性被执行的命令的守护进程。用户可以通过编辑crontab文件来定义一系列的任务及其执行时间,这些任务将在指定的时间点由Crontab自动执行。Crontab支持各种复杂的定时策略,如...
通过掌握`ps`、`top`等进程监控命令,和`crontab`等计划任务配置命令,系统管理员可以更好地执行日常维护任务,确保系统的顺畅运行。这些工具和命令的熟练运用,有助于快速定位和解决问题,对于提升系统的性能和可靠...
守护进程(Daemon)是计算机程序的一种,它在后台运行,没有控制终端,并且持续等待处理来自用户、操作系统或网络的任务。在PHP中实现守护进程通常是为了执行一些长期运行的任务,如队列处理、定时任务等,而无需...
最后一行则是指定每分钟执行mrtg网络监控程序。 #### 三、Cron配置语法 Cron的配置语法非常简单,每个任务都由一行组成,格式为: ``` minute hour day month weekday command ``` 其中,minute代表分钟(0-59),...
3. **任务注册**:在Python程序中,你可以使用`add_schedule()`函数来添加新的定时任务,只需提供一个函数(或可调用对象)以及对应的crontab表达式即可。 4. **事件触发**:当指定的时间点到达时,`...
在Linux系统中,进程是操作系统资源分配的基本单位,每个运行中的程序都是一个进程。进程管理是Linux系统管理的核心部分,涉及到进程的创建、调度、监控以及终止等操作。 ### 进程状态与属性 进程有多种状态,包括...
用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货: #!/bin/sh ps -fe|grep processString |grep -v grep if [ $? -ne 0 ] then echo start process..... else echo runing..... fi ##### ...
每个用户都有自己的 `crontab` 文件,存储在 `/var/spool/cron/username` 目录下,或者在 `/etc/cron.d` 目录下为全局任务。 ### 添加定时任务 添加定时任务使用 `crontab -e` 命令,这会打开默认的文本编辑器让你...
实验“进程调度的操作1”是Linux操作系统课程中的一个实践环节,旨在帮助学生深入理解进程的概念,熟悉进程管理机制,特别是掌握如何使用命令进行进程及其状态的控制,以及如何利用cron进行计划任务的设置和管理。...
在"protectMain"这个文件中,我们可以预期找到一个实现守护进程功能的主程序。它可能包含了上述创建守护进程的步骤,并且会包含特定的任务逻辑,比如定期执行的检查、监听特定事件或提供某种服务。具体代码细节需...
进程是操作系统资源分配的基本单位,每个运行中的程序在Linux中都被视为一个进程。每个进程都有唯一的进程ID(PID),并可以拥有子进程。进程的状态包括运行(Running)、就绪(Ready)、阻塞(Blocked)和僵尸...
`crond`是Linux系统中的一种守护进程,负责监控并执行定时任务。它类似于Windows系统的计划任务,但更符合Unix/Linux哲学,即通过小型、单一功能的程序来完成特定任务。当系统安装完成后,`crond`通常会作为默认服务...