两分钟内按命令运行

两分钟内按命令运行

我正在尝试使用 执行一行操作at

基本上,我想在将来的某个时候发送短信。

这是我发送短信的命令:

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只打印出“嘿”这个词,所以“嘿”这个词就是我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 命令包装在 shell 脚本中,然后执行它。

$ 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");' )

相关内容