在每次运行时将cronjob输出写入不同的命名文件

时间:2014-06-18 17:24:24

标签: php crontab

我使用以下内容通过cronjob运行php脚本:

* / 1 * * * * / usr / bin / php -q /home/hduser/Documents/WebCrawl-ProtestData/preg_match.php> /home/hduser/Documents/cronoutput.txt

脚本每分钟执行一次并在以下位置输出输出:

/home/hduser/Documents/cronoutput.txt

有没有办法在每次运行时将输出存储在新文件中?

2 个答案:

答案 0 :(得分:2)

您可以将变量放入crontab文件并在命令中使用它们:

 DATE_STRING =date +%s

 */1 * * * * /usr/bin/php -q /home/hduser/Documents/WebCrawl-ProtestData/preg_match.php > /home/hduser/Documents/cronoutput_$($DATE_STRING).txt

在这种情况下,我创建了一个date命令的字符串,并在文件名中进行评估(在文件名中添加一个纪元时间戳)

请注意,初始赋值不会计算,因为cron不是shell,但cron execute的命令行在输出文件名中使用时会对字符串date +%s进行求值。

答案 1 :(得分:0)

是的,它很简单,可以通过多种方式完成。最好的方法是创建一个包含以下内容的bash脚本:

#!/bin/bash

datestamp=$(date +%Y%m%d-%H%M%S)
outfile=cronoutput-${datestamp}.txt

/usr/bin/php -q /home/hduser/Documents/WebCrawl-ProtestData/preg_match.php > \
/home/hduser/Documents/$outfile

将其存储在runwebcrawl.sh中,生成runwebcrawl.sh可执行文件

chmod 0755 runwebcrawl.sh

从crontab调用runwebcrawl.sh

*/1 * * * * runwebcrawl.sh

它将创建名为:

的文件
cronoutput-20140618-123456.txt