shell脚本的上次运行时间?

shell脚本的上次运行时间?,shell,unix,timestamp,ksh,sunos,Shell,Unix,Timestamp,Ksh,Sunos,我需要在我的一个脚本中创建某种类型的故障保护,以防止它在发生故障后立即重新执行。通常,当脚本失败时,我们的支持团队会使用第三方工具重新运行脚本。这通常是可以的,但对于这个特定的脚本不应该发生 我打算在日志中回显一个时间戳,然后设置一个条件,看看当前时间戳是否至少比日志中的时间戳大2小时。如果是这样,脚本将自行退出。我相信这个主意会奏效的。然而,这让我好奇地想知道是否有办法从系统本身获取脚本的最后一次运行时间?或者,如果存在防止脚本立即重新运行的替代方法 这是一个使用Ksh Shell的SunOS

我需要在我的一个脚本中创建某种类型的故障保护,以防止它在发生故障后立即重新执行。通常,当脚本失败时,我们的支持团队会使用第三方工具重新运行脚本。这通常是可以的,但对于这个特定的脚本不应该发生

我打算在日志中回显一个时间戳,然后设置一个条件,看看当前时间戳是否至少比日志中的时间戳大2小时。如果是这样,脚本将自行退出。我相信这个主意会奏效的。然而,这让我好奇地想知道是否有办法从系统本身获取脚本的最后一次运行时间?或者,如果存在防止脚本立即重新运行的替代方法


这是一个使用Ksh Shell的SunOS Unix系统。

按照您的建议,保存
日期>一些文件,并在脚本开始时检查它。你可以:

  • 检查最后一行(作为日期字符串本身)
  • 或文件的最后修改时间(例如,当最后日期命令修改
    somefile
其他常用方法是创建一个指定的
锁文件
,或
pid文件
/var/run/script.pid
,其内容通常是pid(以及主机名,如果需要)当然,文件修改时间会告诉您它是什么时候创建的,您可以通过它的内容检查正在运行的PID。如果PID不存在(例如,预处理已停止),并且文件修改时间早于X分钟,您可以再次启动脚本

这种方法很好,主要是因为您可以简单地使用
cron
+
一些脚本启动程序.sh
什么将定期检查脚本运行状态,并在需要时重新启动它

如果您想使用系统资源(并具有root访问权限),可以使用
accton+lastcomm

我不知道SunOS,但可能知道这些程序。
accton
启动所有程序的系统范围记帐(需要是root,
lastcomm命令| name | tail-n1
显示上次执行
命令(名称
的时间


检查命令行开关的
man lastcomm

谢谢您的帮助。我刚刚使用了
日期+%s
时间戳。