Shell 脚本实现自动启动程序、日志管理和定时任务监控

这篇具有很好参考价值的文章主要介绍了Shell 脚本实现自动启动程序、日志管理和定时任务监控。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

本篇将通过Shell 脚本实现自动启动Java程序、日志管理和定时任务监控。脚本启动程序具灵活定制、可移植性和扩展性强的优点,可以根据需要添加额外的功能、配置选项和自定义行为,从而满足更具体的要求。

脚本编写

vim start_program.sh
#!/bin/bash
cd /path/to/youdir
# 设置Java程序的名称
JAVA_PROGRAM="java -jar test.jar"
# 设置日志输出路径
LOG_DIR="/path/to/log"
# 设置日志文件的前缀
LOG_PREFIX="program_log"
# 设置日志文件的最大大小(200M)
MAX_LOG_SIZE=200000000
# 设置最多保留的日志文件个数
MAX_LOG_FILES=7
# 设置定时任务检查的端口
CHECK_PORT=your_program_port

# 创建日志目录
mkdir -p "$LOG_DIR"
# 在日志轮转之前创建一个空白的日志文件
touch "$LOG_DIR/$LOG_PREFIX.log"

# 定义日志轮转函数
rotate_logs() {
    # 检查日志文件数量是否超过最大保留个数
    if [ $(ls -1 "$LOG_DIR/$LOG_PREFIX"* | wc -l) -gt $MAX_LOG_FILES ]; then
        # 删除最旧的日志文件
        rm -f "$(ls -1t "$LOG_DIR/$LOG_PREFIX"* | tail -n 1)"
    fi

    # 检查当前日志文件大小是否超过最大大小
    if [ $(wc -c <"$LOG_DIR/$LOG_PREFIX.log") -gt $MAX_LOG_SIZE ]; then
        # 轮转日志文件
        mv "$LOG_DIR/$LOG_PREFIX.log" "$LOG_DIR/$LOG_PREFIX-$(date +'%Y%m%d%H%M%S').log"
        touch "$LOG_DIR/$LOG_PREFIX.log"
    fi
}

# 定义检查程序运行状态函数
check_program_status() {
    # 检查程序是否在运行
    netstat -an | grep "$CHECK_PORT" > /dev/null
    if [ $? -ne 0 ]; then
        # 如果程序不在运行,则重新启动
        echo "程序未运行,重新启动中..."
        nohup $JAVA_PROGRAM >> "$LOG_DIR/$LOG_PREFIX.log" 2>&1 &
    else
        echo "程序正在运行..."
    fi
}

# 调用日志轮转函数
rotate_logs

# 调用检查程序运行状态函数
check_program_status

确保将脚本中的/path/to/log和your_program_port等替换为实际的日志路径和程序监听的端口。然后,赋予脚本执行权限:

chmod +x start_program.sh

最后,将脚本添加到定时任务中。可以使用crontab -e命令编辑定时任务表,例如:

*/5 * * * * /path/to/start_program.sh

程序运行示例
Shell 脚本实现自动启动程序、日志管理和定时任务监控,linux,开发语言,java
Java程序最好是运行在一个低权限的用户中,以保证系统不会因为Java程序出错而受到影响。

脚本释义

Shebang 行:

#!/bin/bash

这一行指定了用于运行脚本的解释器,这里是 Bash。
Java 程序和日志设置:

JAVA_PROGRAM="java -jar test.jar"
LOG_DIR="/path/to/log"
LOG_PREFIX="program_log"
MAX_LOG_SIZE=200000000
MAX_LOG_FILES=7
CHECK_PORT=your_program_port

这些行定义了 Java 程序的命令、日志目录、日志文件前缀、最大日志大小、最大保留的日志文件数以及用于检查程序运行状态的端口。
创建日志目录:

mkdir -p "$LOG_DIR"

这一行创建日志目录,-p选项确保如果目录不存在,也会创建。
启动 Java 程序:

nohup $JAVA_PROGRAM >> "$LOG_DIR/$LOG_PREFIX.log" 2>&1 &

这一行使用 nohup 启动 Java 程序,并将输出追加到指定路径的日志文件中。2>&1将标准错误流(stderr)也重定向到标准输出流(stdout),&使得该命令在后台运行。
定义日志轮转函数:

rotate_logs() {
    # ...
}

这一部分定义了一个函数 rotate_logs,用于实现日志轮转的逻辑。
检查程序运行状态函数:

check_program_status() {
    # ...
}

这一部分定义了一个函数 check_program_status,用于检查程序运行状态的逻辑。
调用日志轮转函数:

rotate_logs

这一行调用了之前定义的 rotate_logs 函数,执行日志轮转逻辑。
调用检查程序运行状态函数:

check_program_status

这一行调用了之前定义的 check_program_status 函数,执行检查程序运行状态的逻辑。
最后,确保将脚本中的/path/to/log和your_program_port等替换为实际的日志路径和程序监听的端口。赋予脚本执行权限,并将脚本添加到定时任务中。
######################################################################################################################

今日推荐

小说:《仙狐》
推荐理由:创意A,开篇A,文笔也不错,太平天兵这个概念还是蛮不错的。
Shell 脚本实现自动启动程序、日志管理和定时任务监控,linux,开发语言,java文章来源地址https://www.toymoban.com/news/detail-810474.html

到了这里,关于Shell 脚本实现自动启动程序、日志管理和定时任务监控的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • shell脚本之003获取固定时间段(分钟)内的日志,并将其定时通过sftp上传至服务器中

    #!/bin/bash export PATH=/home/ccbt/software/lftp-4.9.2/usr/local/bin/:$PATH # 获取当前系统时间 now=$(date +\\\"%Y/%m/%d %H:%M:%S\\\") echo \\\"当前日期时间:$now\\\" # 当前时间戳 now_time=$(date +%s) echo \\\"当前时间戳:$now_time\\\" #获取指定开始时间的时间戳 10分钟 time_befo=$(($now_time-600)) echo \\\"指定开始时间戳: $time_befo\\\"

    2024年02月01日
    浏览(55)
  • 【Linux】在服务器上创建Crontab(定时任务),自动执行shell脚本

    业务场景:该文即为上次编写shell脚本的姊妹篇,在上文基础上,将可执行的脚本通过linux的定时任务自动执行,节省人力物力,话不多说,开始操作! 连上服务器后,在任意位置都可以执行: crontab -e 如果没有进入 编辑cron任务模式 根据提示查看我们的服务器上是否未安装crontab没有则

    2024年02月14日
    浏览(59)
  • jenkins使用shell脚本自动部署java项目,nohup启动不成功

    百度搜索了很长时间,很多种说法,但是都没说太明白,整合了很长时间,测出来了解决方法,仅测试了自由风格项目和流水线项目,其他的选项未测试,jenkins版本2.400。   以下为正文: 执行脚本时,因为jenkins会在构建结束时,将shell运行期间产生的进程全部关闭,所以n

    2024年02月08日
    浏览(36)
  • 在linux上启动、重启、查询、停止java服务脚本,并且设置定时任务自动执行

    以下代码来源于另一位博主,在实践过程中需要设置定时任务,所以遇到一些问题,把没有写清楚的地方优化了一下。 我们把上面的脚本复制到以下目录的脚本文件/data/www/shtools/startmanage.sh,执行命令可以得到不同的结果。 设置的三个定时任务运行脚本, 第一个是0 3 * * *

    2024年02月07日
    浏览(60)
  • [含完整代码]Linux使用.sh脚本自动部署(启动|停止|状态|日志)项目[超详细]

    个人博客: www.wdcdbd.com   我们在linux部署.jar项目时,都需要通过java -jar的形式来部署,每次都要手动停止,部署,这样用起来会很麻烦。所以,这篇文章就是自己通过.sh脚本一键 启动 , 停止 , 重启 , 查看状态 , 查看日志 。这样会方便一些。  将你的java项目放到你lin

    2024年01月19日
    浏览(55)
  • 通过定时任务+sh脚本方式实现服务器日志文件异机备份

    等保要求服务器A日志(服务器、数据库、后端、nginx、redis等)备份在另外一台服务器B上 通过定时任务+sh脚本+scp命令,实现定时执行脚本,将文件备份到另外一台服务器上 step1、准备工作 服务器A ipA 服务器B ipB step2、脚本命令backup.sh 服务器A上,以nginx日志为例 step3、配对秘钥

    2024年02月16日
    浏览(43)
  • javascript 实现自动定时刷新网页脚本

    利用脚本自动刷新页面模拟用户点击刷新页面(F5刷新),用于刷某些博客阅读量。 实现方法是把脚本写进控制台里面 废话不多说,看代码 把以上代码复制到控制台,然后回车就可以看到页面输入一个刷新时间就自动刷新页面了 如果要停止自动刷新页面的话,按F5刷一下当

    2024年02月12日
    浏览(39)
  • Linux之实现Apache服务器监控、数据库定时备份及通过使用Shell脚本发送邮件

    目录  一、Apache服务器监控 为什么要用到服务监控? 实现Apache服务器监控 二、数据库备份 为什么要用到数据库备份? 实现数据库备份 三、Shell脚本发送邮件 为什么要用使用Shell脚本发送邮件? 实现Shell脚本发送邮件 在Linux中监控Apache服务器是非常重要的,原因如下: 保证

    2024年04月15日
    浏览(71)
  • shell脚本实现自动封IP和解IP

    当项目正式上线后,如果有人恶意多次请求网站地址,对网站发起攻击,则会使服务器或者后端服务宕机,因此写一个shell脚本,实现一段时间内的请求访问判断,结合iptables规则对请求的源IP地址进行封操作和解封操作。 提示:以下是本篇文章正文内容,下面案例可供参考 本案例是

    2024年02月03日
    浏览(36)
  • Linux管理SpringBoot应用shell脚本实现

    Liunx系统如何部署和管理SpringBoot项目应用呢?最简单的方法就是写个shell脚本。 Spring Boot是Java的一个流行框架,用于开发企业级应用程序。下面我们将学习如何在Linux服务器上部署Spring Boot应用,并通过一个脚本实现启动、停止、重启等操作。 Linux系统安装JDK环境:确保你的

    2024年02月11日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包