Bash 在shell脚本中定义一个增量变量,该变量在每个cronjob上递增

Bash 在shell脚本中定义一个增量变量,该变量在每个cronjob上递增,bash,shell,unix,cron,Bash,Shell,Unix,Cron,我在论坛上搜索过,但没有找到。我们可以定义一个变量,它只在每次运行cronjob时递增吗 例如: 我有一个每5分钟运行一次的脚本,所以我需要一个基于cron运行的递增变量 如果作业连续运行了5分钟。所以脚本执行了6次,所以我的计数器变量现在应该是6 我期待bash/shell的出现 如果问题重复,请道歉 尝试: ((count+1)) 您可以这样做: 创建两个脚本:counter.sh和increment_counter.sh 在cron作业中添加执行increment\u counter.s

我在论坛上搜索过,但没有找到。我们可以定义一个变量,它只在每次运行cronjob时递增吗

例如:

我有一个每5分钟运行一次的脚本,所以我需要一个基于cron运行的递增变量

如果作业连续运行了5分钟。所以脚本执行了6次,所以我的计数器变量现在应该是6

我期待bash/shell的出现

如果问题重复,请道歉

尝试:

((count+1))

您可以这样做:

  • 创建两个脚本:counter.sh和increment_counter.sh
  • 在cron作业中添加执行
    increment\u counter.sh
  • 添加
    /path/to/counter.sh
    进入
    /etc/profile
    /etc/bash.bashrc
  • counter.sh

    declare -i COUNTER
    COUNTER=1
    export COUNTER
    
    #!/bin/bash
    echo "COUNTER=\$COUNTER+1" >> /path/to/counter.sh
    
    增量_counter.sh

    declare -i COUNTER
    COUNTER=1
    export COUNTER
    
    #!/bin/bash
    echo "COUNTER=\$COUNTER+1" >> /path/to/counter.sh
    

    在其中运行命令的shell已退出;它设置的任何变量都已消失。不能为此目的使用变量

    您需要的是某种永久性数据存储。这可能是一个数据库,或远程网络服务,或各种各样的东西,但到目前为止,最简单的解决方案是将值存储在磁盘上某个位置的文件中。在脚本启动时读入该文件,然后写出递增的值


    您应该考虑如果文件丢失该怎么办,如果脚本的多个副本同时运行会发生什么情况,并确定这些情况是否是您所关心的。如果是,您需要在脚本中分别添加适当的错误处理和锁定。

    环境变量不起作用。使用文件。如果不关心计数器的实际值,只需从
    日期+%s
    中获取当前时间戳,然后除以300(5分钟内的秒数)。这将在每次运行时为您提供一个递增的值。如果您确实关心实际值,请减去一个常量值。否则,按照@thatotherguy的建议,在每次运行时保存并重新加载一个文件