crontab如何在控制台中打印消息?

时间:2013-06-30 12:09:44

标签: linux cron printf scheduling crontab

嗨,我真的很喜欢Linux:D

我制作了一个crontab程序,它应该每隔3分钟在控制台中打印当前时间。

我的所作所为。

  1. 我做了一个crontab。在终端,命令 “crontab -e”并添加短语“*/3 * * * * /home/user/a.out

  2. a.out是“gcc WowCron.c”的结果文件。

  3. 代码如下。

    int main (int argc, char* argv[]){
      time_t now;
      time(&now);
      printf("this is what we call cron does: %s\n", ctime(&now));
      return 0;
    } 
    

    ,单独运行时效果非常好。

    1. 然后我在终端中运行了“service cron restart”命令。 现在当我命令“crontab -l”时,我可以看到我在crontab中写的消息。

    2. 问题是某种程度上我觉得它有效,但从不打印时间信息。

    3. Q值。如何每3分钟打印一次这个打印时间?

2 个答案:

答案 0 :(得分:1)

cron作业的标准输出不会在控制台上结束。尝试使用syslog工具。

或者,如果您不需要将其集成到您自己的更大的C程序中,请使用logger命令。

*/3 * * * * logger Still here ...

(系统日志已包含时间戳。)

来自cron作业的任何标准输出和标准错误最终都会通过电子邮件发送给作业所有者。也许您应该检查一下您的邮箱,或者您的电子邮件可能无法正常工作?

答案 1 :(得分:1)

Cron触发一个新进程在后台启动。您通过终端(这是一个进程)配置它,但它与该终端无关。每个进程都有自己的STDOUT,STDIN,STDERR,因此cron任务在一个新进程上,它不会打印到你的终端进程'STDOUT

正如tripleee所说,如果你想要打印系统日志是个好地方,或者你可以将它附加到你选择的文件中。

如果您只是希望程序在终端中以一定的时间间隔运行,那么Shell脚本可能是更好的选择:

while : 
do
    date
    sleep 180 
done

或者你可以用“./a.out”替换“date”函数并从同一目录运行它