需要从 Unix 托管的静态网站触发脚本在特定日期运行

需要从 Unix 托管的静态网站触发脚本在特定日期运行

我有一个在 Unix 托管服务上运行的静态网站,我需要在特定日期触发事件,该日期是根据网站上的表格中写入的日期(定期更改)计算得出的。触发器将关闭电子邮件发送操作。有没有办法从网站中的脚本或托管平台触发事件?或者我需要求助于商业程序来执行此操作?(如果是,哪一个)?感谢您对此的想法。干杯,大卫

答案1

嗯,基本上你的选择(从我自己的用例来看)是:

  1. 用于sleep(1)需要秒级或亚秒级精度的东西,通过脚本产生并nohup(1)'d。
  2. 使用at(1)命令来安排 at-daemon 的执行(需要正在运行atd

选项 1 可以使用相对时间并可在任何 unix 上运行,如下所示sleep-script.sh

#!/bin/sh

sleep "$@"
## dostuff
echo "DONE"

然后从你的脚本中:

...
nohup sleep-script.sh 1m 19s &
...

选项 2 需要运行atd(并且支持绝对时间),在您的脚本中您需要输入:

...
at 09:45 tomorrow <<EOF
## stuff i need done
echo "DONE"
EOF
...

选项 2 更方便,因为您可以分别使用atqatrm查看命令队列或从队列中删除特定作业。但它不支持上述语法的亚分钟精度。

答案2

由于我误读了这个问题,这里是另一个涉及实际日期计算的答案:

如果你可以提取日期以便命令行工具可以使用它,那么就有很多可能性,dadd来自 dateutils例如:

$ dadd 2014-01-27 -4
2014-01-23

甚至通过 stdin:

$ echo 2014-01-27 | dadd -4
2014-01-23

如果您所说的表是指 SQL 表,那么您可以使用数据库系统的日期算法,例如在 mysql 中:

SELECT DATE_ADD(STR_TO_DATE("2014-01-27", "%Y-%m-%d"), INTERVAL -4 DAY);
+------------------------------------------------------------------+
| DATE_ADD(STR_TO_DATE("2014-01-27", "%Y-%m-%d"), INTERVAL -4 DAY) |
+------------------------------------------------------------------+
| 2014-01-23                                                       |
+------------------------------------------------------------------+

它也可以从命令行运行,将值传递给类似的工具at

答案3

再次感谢您抽出时间回答。目前,我没有启动我在这里提到的脚本。这就是当前的问题。我使用的另一个脚本是来自提交表单的简单触发器。这并不太复杂。我想我必须继续寻找。祝一切顺利,大卫

相关内容