을 사용하여 한 줄 작업을 수행하려고 합니다 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");' )