Arch 中的 Cronie 设置 Linux
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 已安装,正在 运行ing,请参阅:
● 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)
在 /etc/cron.d
目录中创建了一个名为 monitoring
的文件
这是文件:
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 文档中所说的脚本,但是什么类型的脚本? shell 脚本和 运行 我的 php 脚本的指令?或者还有什么?
我评论了 #!/usr/bin/php
正下方的两行,因为它不起作用。我卡在了这一点上。
我还 运行 命令 journalctl -xb -u cronie
检查作业是否 运行ning 我得到了很多这样的条目:
Jan 24 00:58:01 user-pc CROND[32175]: (root) CMD (run-parts /etc/cron.minutely #Runs a cron job script every minute)
似乎 运行ning 符合预期。
感谢对此的任何帮助。
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 成为 运行 并且暴露敏感信息)。
这是我在 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 已安装,正在 运行ing,请参阅:
● 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)
在 /etc/cron.d
目录中创建了一个名为 monitoring
的文件
这是文件:
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 文档中所说的脚本,但是什么类型的脚本? shell 脚本和 运行 我的 php 脚本的指令?或者还有什么?
我评论了 #!/usr/bin/php
正下方的两行,因为它不起作用。我卡在了这一点上。
我还 运行 命令 journalctl -xb -u cronie
检查作业是否 运行ning 我得到了很多这样的条目:
Jan 24 00:58:01 user-pc CROND[32175]: (root) CMD (run-parts /etc/cron.minutely #Runs a cron job script every minute)
似乎 运行ning 符合预期。
感谢对此的任何帮助。
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 成为 运行 并且暴露敏感信息)。