0

嗨,我是 Linux 的新手:D

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

我所做的如下。

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

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

代码如下。

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 分钟一次?

4

2 回答 2

1

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

正如 Tripleee 所说,如果您希望它打印 syslog 是一个不错的选择,或者您可以将其附加到您选择的文件中。

如果您只想让程序在终端中按时间间隔运行,那么 Shell 脚本可能是一个更好的选择:

while : 
do
    date
    sleep 180 
done

或者您可以将“日期”函数替换为“./a.out”并从同一目录运行它

于 2013-06-30T12:24:19.340 回答
1

作业的标准输出cron不会出现在控制台上。尝试使用该syslog设施。

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

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

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

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

于 2013-06-30T12:15:21.077 回答