2分でコマンドで実行

2分でコマンドで実行

を使用して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コマンドがどのように機能するのかわからないからです。atSTDIN経由でコマンドを受け取ります。上記で行った操作はスクリプトを実行し、その出力(存在する場合)を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");' )

関連情報