を使用して1行の操作を実行しようとしていますat
。
基本的には、将来のある時点でテキストメッセージを送信したいと思います。
これはSMSを送信するコマンドです。
php -r 'include_once("/home/eamorr/open/open.ie/www/newsite/ajax/constants.php");sendCentralSMS("08574930418","hi");'
上記は素晴らしい作品です!数秒でテキストメッセージを受け取りました。
今後at
、このコマンドをどのように実行できますか?
頑張った
php -r 'include_once("/home/eamorr/open/open.ie/www/newsite/ajax/constants.php");sendCentralSMS("08574930418","hi");' | at now + 2 minutes
しかし、これはすぐに私の命令を出しました! 2分でメッセージを送りたい!
答え1
なぜなら、at
コマンドがどのように機能するのかわからないからです。at
STDIN経由でコマンドを受け取ります。上記で行った操作はスクリプトを実行し、その出力(存在する場合)をat
。
これは、現在実行中の操作と機能的に同じです。
echo hey | at now + 1 minute
echo hey
「hey」という単語だけが印刷されるので、次の瞬間に「hey」という単語だけをat
実行します。直接実行するのではなく、コマンド全体をphp
エコーすることもできます。at
私の例では:
echo "echo hey" | at now + 1 minute
編集する:
@Gnoucが指摘したように、at仕様にもタイプミスがあります。 「今」と言うと、1分を追加したい時間がわかります。
答え2
構文に問題があります。
php -r 'include_once("/home/eamorr/open/open.ie/www/newsite/ajax/constants.php");sendCentralSMS("08574930418","hi");' |
at now + 2 minutes
からman at
:
You can also give times like now + count time-units, where the time-units
can be minutes, hours, days, or weeks and you can tell at to run the
job today by suffixing the time with today and to run the job tomorrow by
suffixing the time with tomorrow.
phpコマンドをシェルスクリプトでラップしてから実行する必要があります。
$ cat sms.sh
#!/bin/bash
/usr/bin/php -r 'include_once("/home/eamorr/open/open.ie/www/newsite/ajax/constants.php");sendCentralSMS("08574930418","hi");'
それから:
$ at -f sms.sh now + 2 minutes
答え3
方法に関係なく、2分後にのみメッセージを送信することが重要な場合は、使用することをお勧めしますsleep
。
( sleep 120 ; php -r 'include_once("/home/eamorr/open/open.ie/www/newsite
/ajax/constants.php");sendCentralSMS("08574930418","hi");' )