Cronie Setup in Arch Linux



这是我在 debian 上的工作 crontab,它每 5 分钟运行一次。

*/05 * * * * user /usr/bin/php /var/www/monitoring/cron/status.cron.php

我可以在我的浏览器或 php cli 中status.cron.php执行脚本,脚本按预期工作。

现在我被迫在 Arch Linux 中运行相同的脚本,问题是,Arch 使用 systemd/timers,我不习惯它,然后我听说了cronie并决定试一试,这是我到目前为止得到的:

cronie 已安装并正在运行,请参阅:

● cronie.service - Periodic Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/cronie.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2019-12-23 00:40:31 +07; 1 months 1 days ago
Main PID: 631 (crond)
Tasks: 1 (limit: 4620)
Memory: 5.4M
CGroup: /system.slice/cronie.service
└─631 /usr/bin/crond -n
Jan 24 00:41:01 user-pc CROND[31933]: (root) CMD (run-parts /etc/cron.minutely #Runs a cron job script every minute)

在目录中创建了一个名为monitoring的文件/etc/cron.d这是文件:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
*/1 * * * * root run-parts /etc/cron.minutely #Runs a cron job script every minute
01 * * * * root run-parts /etc/cron.hourly #Runs a cron job script every hour
02 4 * * * root run-parts /etc/cron.daily #Runs a cron job script every day
22 4 * * 0 root run-parts /etc/cron.weekly #Runs a cron job script every week
42 4 1 * * root run-parts /etc/cron.monthly #Runs a cron job script every month

/etc/中创建了一个名为cron.minutely的新目录,然后在其中创建了一个名为monstatuscron的新文件,这是文件:

#!/usr/bin/php
#*/01 * * * * user /usr/bin/php /var/www/monitoring/cron/status.cron.php
#/usr/bin/php /var/www/monitoring/cron/status.cron.php
/usr/bin/php /var/www/monitoring/cron/status.cron.php

我想这个文件应该是一个脚本,因为它说它是 Arch docs,但是什么类型的脚本? 带有运行我的 PHP 脚本的说明的 shell 脚本? 还是什么? 我在下面评论了两行#!/usr/bin/php因为它不起作用。我在这一点上陷入了困境。

我还运行命令journalctl -xb -u cronie来检查作业是否正在运行,我得到了很多这样的条目:

Jan 24 00:58:01 user-pc CROND[32175]: (root) CMD (run-parts /etc/cron.minutely #Runs a cron job script every minute)

它似乎按预期运行。

感谢对此的任何帮助。

shebang 不应该是#!/usr/bin/php,而是#!/usr/bin/env bash#!/bin/bash。这是因为 Bash 是 ArchLinux 的默认 shell——这是一个 shell 脚本,调用 PHP 脚本。还要确保chmod +x cron.minutely/*.sh,以便可以执行它。没有必要将PHP-CLI脚本放入/var/www,因为它们可以在任何地方运行(在那里它们最终可以通过PHP-SAPI运行并暴露敏感信息(。

最新更新