一个简单的服务定时重拉脚本

一、背景

   应用服务,或者中间件服务启用后,如果没有守护进程,有时候可能因为未知原因进程被杀死,

为了减少这种后续修复的不必要成本,可以写个简单的服务重拉脚本

二、脚本编写

1、脚本示例如下

#!/bin/bash

num=`netstat -nlp | grep ${服务关键字} | wc -l`
#echo $num
if [ $num != ${数量按实际填写} ] ;then
   ps aux |grep ${服务关键字} |grep -v grep | awk '{print $2}' |xargs -l kill -9 > /dev/null 2>&1
   num=`netstat -nlp | grep ${服务关键字 | wc -l`
   #echo $num
   if  [ $num == 0 ] ;then
       cd  ${应用1相应目录} &&  nohup ./bin/${服务命令} -r .  > /dev/null 2>&1 &
       cd  ${应用2相应目录} &&  nohup ./bin/${服务命令} -r .  > /dev/null 2>&1 &
   fi
fi

2、注释

#  |xargs -l

|xargs  可以读取标准输入和管道中的数据

-l   可以保证输入的数据按行输入(有时候光|xargs是无法按行前面输入的 ,比如前面是ll命令等)

#  > /dev/null 2>&1 &

让前面启用应用的命令以后台进程方式运行,并不需要手动回车退出夯死状态

三、操作流程

1、添加crontab定时任务 每五分钟执行一次

crontab -e


*/5 * * * * /usr/bin/sh /root/jun/monitor.sh

题外话: 每10s执行一次定时任务怎么实现?

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,为了在 Python 中创建一个定时脚本,你需要使用一个 Python 模块叫做 `sched`。 你需要先使用 `import` 语句来导入 `sched` 模块: ``` import sched ``` 然后,你需要创建一个 `scheduler` 对象: ``` scheduler = sched.scheduler() ``` 接下来,你可以使用 `scheduler.enterabs` 方法来安排一个事件,这个事件将在指定的时间执行。例如,如果你想在 10 秒后执行一个函数,你可以使用以下代码: ``` import time def function_to_execute(): print("This function is executing!") # Schedule the event to occur in 10 seconds scheduler.enterabs(time.time() + 10, 1, function_to_execute) ``` 最后,你需要使用 `scheduler.run` 方法来开始调度器的工作: ``` scheduler.run() ``` 你可以使用这个调度器来安排任意数量的事件,并且它们将在指定的时间执行。你还可以使用 `scheduler.enter` 方法来以相对时间来安排事件,而不是绝对时间。 希望这个答案对你有帮助! ### 回答2: 要编写一个Python服务定时脚本,可以使用Python标准库中的sched模块或者第三方库如APScheduler。 首先,需要导入所需的库。如果选择使用sched模块,则需要导入time模块。如果选择使用APScheduler,则需要安装APScheduler库并导入所需的类。 接下来,可以创建一个定时任务的函数或方法。这个函数或方法将会在指定的时间间隔内执行。例如,创建一个名为"run_task"的函数,用于定时执行任务。 然后,需要初始化调度器对象。如果使用sched模块,可以使用sched.scheduler()创建一个调度器对象,并设置其相关属性,如定时任务的优先级等。如果使用APScheduler,可以创建一个调度器对象,并设置所需的调度器配置。 接下来,可以使用调度器对象的add_job()方法来添加定时任务。需要传入要执行的函数或方法的名称、任务的触发方式(可以是固定时间间隔、指定具体时间点等)以及其他相关的参数,如任务的参数等。 最后,可以调用调度器对象的run()或start()方法,开始执行定时任务。如果使用sched模块,则需要调用sched.scheduler的run()方法。如果使用APScheduler,则需要调用调度器对象的start()方法。 注意,定时脚本在后台运行时,需要确保脚本一直运行,否则定时任务将无法正常执行。可以使用while循环来保持脚本的运行状态。 以上就是编写一个Python服务定时脚本的基本步骤。根据具体的需求,可以根据所使用的库和业务逻辑进行相应的调整和优化。 ### 回答3: 要编写一个Python定时脚本来运行一个服务,可以使用Python的内置模块`sched`来实现。`sched`模块允许我们在指定的时间间隔内执行任务。 首先,需要导入`sched`模块,并创建一个调度器实例: ```python import sched import time scheduler = sched.scheduler(time.time, time.sleep) ``` 然后,定义一个定时执行的任务函数,例如: ```python def task(): print("定时任务正在执行...") # 在这里写下要执行的任务的代码 ``` 接下来,定义一个函数来安排任务的执行时间,并使用`scheduler`实例的`enter`方法将任务添加到调度器中: ```python def schedule_task(): # 安排任务在10秒后执行 scheduler.enter(10, 1, task, ()) ``` 然后,调用`scheduler`实例的`run`方法来运行调度器,并设置一个无限循环来不断执行定时任务: ```python def main(): while True: scheduler.run() time.sleep(1) ``` 最后,在程序的入口处调用`schedule_task`函数,即可开始定时执行任务了: ```python if __name__ == '__main__': schedule_task() main() ``` 这样,该Python脚本就可以周期性地执行`task`函数里的任务了。根据实际需求,可以根据`scheduler`的`enter`方法参数设置不同的时间间隔来定时执行任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值