我应该以什么用户身份创建和执行 cron 作业?阿帕奇?根?我?

我应该以什么用户身份创建和执行 cron 作业?阿帕奇?根?我?

我正在设置一个新的网络服务器,但无法让 cron 按预期执行。我正在使用脚本在 中创建 cron 作业.tmp/crontab.txt,然后将其移至/var/spool/cron用户“Apache”下。据我所知,这些 Apache 条目不会执行。

/var/spool/cron:有3个用户文件:

  • 根0字节

  • Apache 344 字节(看起来不错,但不执行)。

  • JLee 3514 字节(这是我所有手动输入的地方)。

我安排的手动作业正在正常执行。然而,手动作业会创建一个“子 cron”,这就是 Apache 的任务。我究竟做错了什么?

我希望所有 cron 作业都在一个用户下创建,因为我是该服务器的管理员和唯一用户。

答案1

如果您只是复制新文件,则 cron 守护程序不会读取它们。您应该使用 crontab 命令来安装新的 crontab 文件。它还向 cron 守护进程发出信号以读取文件。

从 crontab 手册页:

...and though these are files in /var, they are not  intended  to  be
   edited directly.

答案2

正如在基思的回答,您不应该将文件直接放入,/var/spool/cron因为它们不会被看到crond

您应该维护自己的用户crontab文件实例,并使用crontab命令来发出更改信号crond

echo '* * * * * date >>/tmp/output' | crontab

如果您可以创建多个条目,则可以将每个条目写入其自己的文件,然后将cat结果写入单个crontab.

mkdir .crondir
...
echo '* * * * * echo job1 >> /tmp/output.1' > .crondir/job1
echo '* * * * * echo job2 >> /tmp/output.2' > .crondir/job2
echo '* * * * * echo job3 >> /tmp/output.3' > .crondir/job3
cat .crondir/job* | crontab

显然,运行该命令的用户必须crontab有权使用它。根据您为应用程序设置权限方案的方式,它可能是其自己的用户帐户。否则,它可能必须是您的 Web 服务器用户 ( apache) 甚至可能是root

相关内容