Unixホスティングサービスで実行している静的なWebサイトがあり、サイトのテーブルに書き込まれた(定期的に変更される)日付から計算された特定の日付にイベントをトリガーする必要があります。トリガーは、電子メール送信操作をオフに設定します。サイト内のスクリプトまたはホスティングプラットフォームからイベントをトリガーする方法はありますか?または、これを行うには商用プログラムに切り替える必要がありますか?(もしそうなら、どれ)?これについてのあなたの考えに感謝します。乾杯、デビッド
Unixホスティングサービスで実行している静的なWebサイトがあり、サイトのテーブルに書き込まれた(定期的に変更される)日付から計算された特定の日付にイベントをトリガーする必要があります。トリガーは、電子メール送信操作をオフに設定します。サイト内のスクリプトまたはホスティングプラットフォームからイベントをトリガーする方法はありますか?または、これを行うには商用プログラムに切り替える必要がありますか?(もしそうなら、どれ)?これについてのあなたの考えに感謝します。乾杯、デビッド
回答:
基本的にあなたのオプションは(私自身のユースケースから)です:
sleep(1)スクリプトを介して生成され、nohup(1)'d。秒または1秒未満の精度が必要なものに使用します。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
...
を使用atqしatrmて、コマンドのキューを表示したり、キューから特定のジョブを削除したりできるため、オプション2はより快適です。ただし、上記の構文では1分未満の精度はサポートされていません。
私が質問を誤解したので、実際の日付計算を扱う別の答えがあります:
コマンドラインツールで使用できるように日付を抽出できる場合、たとえばdadd、dateutilsから次のような多くの可能性があります。
$ dadd 2014-01-27 -4
2014-01-23
または標準入力経由でも:
$ 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。