shell脚本编写,实现爬虫挂掉后重启

本文介绍了如何通过shell脚本来后台运行一个Java爬虫,并实现当爬虫进程挂掉时自动重启。主要内容包括使用nohup命令后台运行爬虫、通过检查进程数量判断爬虫状态、利用jps命令列出Java进程,以及编写shell脚本确保爬虫的稳定运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先我说一下需求

我有一个java写的爬虫,需要运行在linux后台,爬虫分为服务器端和客户端

后台运行爬虫

linux运行jar文件 java -jar ./spider_server.jar
后台运行:

nohup java -jar ./spider_server.jar > server.log 2>&1 &

使用nohup命令,然后把日志信息输出到server.log中

如果直接使用 java -jar ./spider_server.jar & 当前终端关闭后则程序停止运行

判断爬虫进程是否挂掉

ps -ef | grep spider_server.jar |wc -l

此命令输出结果为下面记录的个数:

这里写图片描述

当spider_server进程存在时,输出为2
当spider_server进程不存在时,输出为1
我们可以判断输出结果是否大于1来判断爬虫是否存在

另一种方式判断爬虫进程是否挂掉

jps |grep spider_server

jps命令列出所有的java进程

shell脚本

我的爬虫是这样设计的,server端挂掉则client端会跟着挂掉,而client端挂掉server端继续运行,所以编写的shell脚本如下

vim restart.sh
#!/bin/bash
while :       #循环,为了让脚本一直运行监控
do
  COUNT=`ps -ef | grep spider_server.jar |wc -l`
  COUNT1=`ps -ef | grep spider_client.jar |wc -l`

  if [ "$COUNT" -gt 1 ];then
    echo "server service is ok"
    if [ "$COUNT1" -gt 1 ];then
      echo "client service is ok"
    else
      echo "client servicie not exist"
      nohup java -jar ./spider_client.jar > client.log 2>&1 &
    fi
  else
    echo "server servicie not exist"
    nohup java -jar ./spider_server.jar > server.log 2>&1 &
    sleep 10s
    nohup java -jar ./spider_client.jar > client.log 2>&1 &
  fi
  sleep 60
done

运行shell脚本

因为我们需要脚本一直运行在后台,所以也需要使用nohup运行

nohup ./restart.sh > restart.log 2>&1 &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值