特定の時間にコマンドを実行しようとしています。 「at」コマンドを確認しましたが、機能させる方法がわかりません...
これが私がすることです:
at 1843 (Enter)
php /run/this/script.php (Ctrl+D)
しかし、bashスクリプトでこれを行うにはどうすればよいですか?つまり、遅延を設定するには、Enterキーと "Ctrl + D"を押す必要があります...スクリプトでこれを行う方法は?
どんな提案でも大歓迎です。
前もって感謝します、
あなたはこれを試すことができます:
at 1843 <<_EOF_
php /run/this/script.php
_EOF_
編集 Firefoxを実行する場合は、次を試してください。
at 1843 <<_EOF_
DISPLAY=:0.0 /usr/bin/firefox
_EOF_
コマンドをat
に入力としてエコーできます。
echo "/usr/bin/php /run/this/script.php" | at 18:43
bash
またはzsh
では、次のように言うことができます
at 1843 <<< 'php /run/this/script.php'
失敗した場合は、ヒアドキュメントを使用する必要があります。
at 1843 <<EOF
php /run/this/script.php
EOF
また、定期的にスケジュールされたジョブについてcron
を調べることもできます。 crontab
エントリは次のようになります
43 18 * * * php /run/this/script.php
(編集:whoops、どのバージョンのat
を思い出すのに役立ちます。ローカルmodだったと思います。)
echo "php /run/this/script.php" | at 18:43
atコマンドは、私のシステム(Ubuntu、RHEL)にデフォルトでインストールされておらず、新しいソフトウェアをインストールする権限がないため、bashとawkを組み合わせたスクリプトを使用して、 at機能は次のとおりです。
#! /bin/bash
res=""
while [ ! $res ]; do
res=$( date | awk -v hour=$1 -v min=$2 '{
split($4, tmp, ":" );
if( (tmp[1] == hour) && (tmp[2] == min) )
{
print "ok";
}
else
{
print "";
}
}' )
done
./ atReplacement.sh $ HOUR $ MIN; [OTHER_COMMANDS]