首页 > 其他分享 >使用cron来定时执行脚本的步骤

使用cron来定时执行脚本的步骤

时间:2023-08-02 16:24:43浏览次数:49  
标签:opt 文件 stats 10 步骤 cron 定时 port 日志

创建一个脚本,比如:/opt/port_stats.sh,脚本内容:


#!/bin/bash

# 设置要监控的端口列表
ports=({80,8080,456})

# 执行一次循环
for port in "${ports[@]}"; do
  num=$(netstat -nat | grep ":"$port | wc -l)
  echo "[$(date '+%Y-%m-%d %H:%M:%S')] $port $num" >> /opt/output.log
done

 

打开终端或命令行界面。

输入以下命令来编辑 crontab 文件:
crontab -e

在 crontab 文件中添加以下一行,以使脚本每隔一分钟自动执行一次:
* * * * * /bin/bash /opt/port_stats.sh
保存文件并退出文本编辑器。

确保脚本 port_stats.sh 具有可执行权限:
chmod +x /opt/port_stats.sh

重启 cron 服务以使更改生效(在某些系统中可以使用 cronie 替代 cron):
sudo systemctl restart cron

这些步骤会将你的脚本配置为每隔一分钟自动执行一次,并将结果写入 /opt/output.log 文件中。


【设置开机执行该任务】

创建一个新的服务单元文件,比如 port_stats.service,并将以下内容粘贴进去:

[Unit]
Description=Run port_stats.sh every minute at startup

[Service]
Type=simple
ExecStart=/bin/bash /opt/port_stats.sh

[Install]
WantedBy=default.target

这会在系统开机时执行你的脚本 /opt/port_stats.sh。

将这个文件保存到 /etc/systemd/system/ 目录中。
运行以下命令启用并启动这个服务:

sudo systemctl enable port_stats.service
sudo systemctl start port_stats.service

这将启用服务并在系统开机时自动执行定时任务。


【日志拆分】
可以使用 logrotate 工具来自动拆分日志文件,以防止日志文件过大。logrotate 是一个用于管理日志文件的系统工具,它可以按照一定的条件和规则自动进行日志文件的轮转和拆分。

以下是如何设置 logrotate 来处理你的 output.log 文件:

创建一个新的配置文件,比如 port_stats_logrotate.conf,并将以下内容粘贴进去:
/opt/output.log {
    size 10M #当日志文件达到 10 兆大小时触发拆分
    rotate 10 #最多保留 10 个旧的日志文件
    compress #压缩旧的日志文件
    missingok #如果日志文件不存在,则忽略错误
    notifempty #如果日志文件为空,则忽略错误
    create 644 root root #创建新的日志文件时使用指定的权限和所有者
}


/opt/output.log {
    size 10M #当日志文件达到 10 兆大小时触发拆分
    rotate 10  #最多保留 10 个旧的日志文件
    compress
    missingok #如果日志文件不存在,则忽略错误
    notifempty #如果日志文件为空,则忽略错误
    create 644 root root #创建新的日志文件时使用指定的权限和所有者
    olddir /opt/archive
    postrotate
        mv /opt/output.log.1 /opt/output.log.1.log
    endscript
}


这个配置文件指定了以下内容:
size 10M:当日志文件达到 10 兆大小时触发拆分。
rotate 10:最多保留 10 个旧的日志文件。
compress:压缩旧的日志文件。
missingok:如果日志文件不存在,则忽略错误。
notifempty:如果日志文件为空,则忽略错误。
create 644 root root:创建新的日志文件时使用指定的权限和所有者。
将这个配置文件保存到 /etc/logrotate.d/ 目录中。

运行以下命令来手动执行一次 logrotate:
sudo logrotate -f /etc/logrotate.d/port_stats_logrotate.conf

这将立即执行一次日志轮转,并拆分 output.log 文件。

之后,每当 output.log 文件达到 10 兆大小时,logrotate 将自动执行日志轮转,拆分日志文件并保留指定数量的旧日志文件。

标签:opt,文件,stats,10,步骤,cron,定时,port,日志
From: https://www.cnblogs.com/brad93/p/17600977.html

相关文章

  • 一种轻量级定时任务实现
    现在市面上有各式各样的分布式定时任务,每个都有其独特的特点,我们这边的项目因为一开始使用的是分布式开源调度框架TBSchedule,但是这个框架依赖ZK,由于ZK的不稳定性和项目老旧无人维护,导致我们的定时任务会偶发出现异常,比如:任务停止、任务项丢失、任务不执行等;每逢618大促,在单量很......
  • 一种轻量级定时任务实现 | 京东云技术团队
    现在市面上有各式各样的分布式定时任务,每个都有其独特的特点,我们这边的项目因为一开始使用的是分布式开源调度框架TBSchedule,但是这个框架依赖ZK,由于ZK的不稳定性和项目老旧无人维护,导致我们的定时任务会偶发出现异常,比如:任务停止、任务项丢失、任务不执行等;每逢618大促,在单量很大......
  • Sourcetree解决冲突步骤
    Sourcetree解决冲突步骤解决冲突的时候,操作已暂存文件,不操作未暂存文件第一步:找到冲突文件——.py文件且有标识,打开外部合并工具BeyondCompare第二步:视图-->隐藏中心窗格第三步:点击“显示差别”,则窗口只剩下有区别的内容第四步:自行选择想要的内容,然后点击箭头即采用右边......
  • RTMP流媒体服务器LntonMedia(免费版)视频直播点播平台视频回看列表显示为ID的优化具体操
    视频直播点播LntonMedia平台具备灵活的视频能力,包括直播、点播、转码、管理、录像、检索、时移回看等,平台支持音视频采集、视频推拉流、播放H.265编码视频、存储、分发等能力服务,可应用在无人机推流、在线直播、虚拟直播、远程培训等场景中。有兴趣的用户可以去我们官网https://ww......
  • [MySQL] 调用定时器时event_scheduler是Off问题解决
    永久解决方法:修改MySQL配置文件,设置event_scheduler=ONvi/etc/my.cnf在[mysqld]下添加一行重启mysql服务event_scheduler=ON临时方法执行mysql语句1、查看事件调度器状态showVARIABLESlike'event_scheduler'......
  • Windows下Oracle11G定时备份
    首先我们先编写定时备份用到的脚本文件 我们新建txt文本文件,输入下列内容并保存为Oracle_bak.bat 把Oracle_bak.bat文件放到oracle的目录下(其他目录也可以)@echooffecho开始备份数据库#设置备份时间格式(使用cmd输入date查看服务器时间格式,按需设置)setvar=%date:~......
  • CentOS 7中搭建NFS文件共享存储服务的完整步骤
    1、https://pythonjishu.com/yemqmdrvwtbrciq/ 步骤一:安装NFS工具在命令行中执行以下命令:sudoyuminstallnfs-utils步骤二:创建共享目录在命令行中执行以下命令:sudomkdir/mnt/nfs_share步骤三:配置NFS服务用以下命令来打开“/etc/exports”文件,并在文件结尾添加如......
  • 要在 Dev-C++ 中添加 SFML 库,你需要按照以下步骤进行设置:
    下载SFML:首先,你需要从SFML官方网站下载适用于你的编译器(例如MinGW)和操作系统的SFML库。确保下载正确版本的SFML(32位或64位)和与你的编译器兼容的版本。配置Dev-C++环境:打开Dev-C++,转到"Tools"(工具)菜单,然后选择"CompilerOptions"(编译器选项)。添加S......
  • CronExpression 表达式详解
    参数名有效值Seconds(秒)可以用数字0~59表示Minutes(分)可以用数字0~59表示Hours(时)可以用数字0~23表示Day-of-Month(日)可以用数字1~31中的任一个值,但要注意一些特别的月份Month(月)可以用0~11或用字符串JAN,FEB,MAR,APR,MAY,JUN,JU......
  • Spring集成Quartz定时任务框架介绍和Cron表达式详解
    在JavaEE系统中,我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等。我们可以使用java.util.Timer结合java.util.TimerTask来完成这项工作,但时调度控制非常不方便,并且我们需要大量的代码。使用Quartz框架无疑是非常好的选择,并且与Spring可以非常方便的集成,下......