我写了一个小的PHP脚本来包装Ubuntu上的at
命令。 现在我需要获得在Redhat服务器上运行的相同代码。 当然,添加和列出工作时的输出当然是不同的。
Ubuntu( at -V
= 3.1.11): job 4 at Fri Nov 12 13:41:00 2010
Redhat( at -V
= 3.1.8): job 14 at 2010-11-12 13:42
有什么办法可以修改at
命令的输出使其更加统一? 我已经看过man at
,我什么都看不到,但也许我已经错过了一些偷偷摸摸的捷径。
我正在使用正则expression式来“读取”输出,所以我可以更新,以支持Redhat格式,但是如果在不同的发行版上运行它,会发生什么情况。
我可以看到这些string在date/时间格式上有所不同。 您可以将输出分成两个子string(作业4 at)和date/时间部分。 然后,您可以使用函数strtotime
parsingdate。
最后,您可以将第一部分与parsing的date/时间结合起来。 所以,你得到一个统一的输出。 此外,您可以将date/时间部分转换为所需的格式。
你可以使用如下的东西来标准化date:
date -d "$date" --rfc-3339=seconds
我会build议以下,但似乎忽略语言环境variables:
LC_TIME=C at -v ... # has no effect
我发现使用at
-v
标志在Ubuntu和Redhat上使用相同的date输出格式。 但是输出如下所示:
Ubuntu的
Fri Nov 12 13:41:00 2010 warning: commands will be executed using /bin/sh job 4 at Fri Nov 12 13:41:00 2010
红帽
Fri Nov 12 13:42:00 2010 job 14 at 2010-11-12 13:42
这将允许我从第一行获得date,然后从最后一行获取工作编号。
当添加作业时,这是很好的,但是在队列中列出作业时, -v
将不起作用,并且date格式也会有所不同。 认为可能是一个不同的队列软件的时候了。