18

呼び出されてから 5 分後に bash スクリプトを実行したいだけです。私は何を間違っていますか?

私はコマンドを持っています:

/path/to/my/script | at now + 5 min

それでも、スクリプトは毎回すぐに実行されます。

4

6 に答える 6

50

スクリプトをすぐに実行し、その出力を に送信していますat。スクリプト自体の名前を次の場所に送信する必要がありますat

echo /path/to/my/script | at now + 5 min
于 2010-10-18T23:26:44.410 に答える
28

どうですか:

sleep 300 && /path/to/my/script
于 2010-10-18T23:26:00.543 に答える
7
at -f /path/to/my/script -t now +5 minutes

これは、特定の時間にスクリプトを実行するようにスケジュールする限り機能するはずです。at" " コマンドの詳細については、linuxmanpages.comを試してください。私は間違った考えかもしれません(現在、テストするLinuxシステムではありません)。

とにかく頑張って

于 2010-10-18T23:43:52.340 に答える
2

問題は、スクリプトを実行し、出力をatコマンドにパイプすることです。必要なことはat、スクリプトへのパスをパラメーターとして使用してコマンドを実行することです。構文はわかりませんが、at -h役立つman atはずです。

于 2010-10-18T23:28:04.440 に答える
1

コマンドは左から右に評価されるため、最初にスクリプトが実行され、その出力が at コマンドにパイプされます。これは通常の動作です。詳細については、man ページを参照してください。

于 2010-10-18T23:27:25.097 に答える
0

これを試して

sys.scheduled_run /path/to/my/script 5

主な機能

function sys.scheduled_run(){
    local PATH_TO_ACTION MINS SLEEPTIME
    PATH_TO_ACTION=$1
    MINS=$2
    SLEEPTIME=$(($MINS * 60))
    echo "Sleeping for $MINS minute ($SLEEPTIME seconds) and then running $PATH_TO_ACTION"
    ui.countdown $SLEEPTIME
    $PATH_TO_ACTION
    echo "Done"
    if [ "REPEAT" == "$3" ] 
    then
        echo "Going for Repeat"
        sys.scheduled_run "$@"
    fi
}

カウントダウン機能

function ui.countdown(){ #USAGE ui.countdown 60 countdown for 60 seconds
        local SECONDS=$1
        local START=$(date +%s)
        local END=$((START + SECONDS))
        local CUR=$START
        while [[ $CUR -lt $END ]]
        do
                CUR=$(date +%s)
                LEFT=$((END-CUR))

                printf "\r%02d:%02d:%02d" \
                        $((LEFT/3600)) $(( (LEFT/60)%60)) $((LEFT%60))

                sleep 1
        done
        echo "        "
}
于 2011-05-21T14:16:04.777 に答える