より早く実行されるようにタスクスケジュールを変更する方法は?

より早く実行されるようにタスクスケジュールを変更する方法は?

at3時間後にジョブが実行されるようにスケジュールしているとします。

$ echo command | at now +3 hours
$ atq
9     Mon Dec  5 14:00:00 2016 a nr

しかし、1時間後に心が変わり、#9キューから特定のタスクをすぐに実行する必要がありましたa。つまり、予定より2時間早く実行しなければなりませんでした。

どうすればいいですか?

ジョブコマンドをに印刷してコピーstdoutしてコマンドラインに貼り付けて手動で実行し、ジョブを削除できることを知っています#9

$ at -c 9
command
$ command
$ atrm 9

しかし、これは走っているようですその他#9キューではなく作業してくださいa

答え1

2つの可能性があります。

答え2

許可された回答に基づいて、便利なスクリプトは次のとおりですatmv

#!/usr/bin/bash

# Idea taken from here:
# https://unix.stackexchange.com/a/331789/68456

set -euo pipefail

atlist() { atq | sed 's/^/  /'; }

if [ $# -lt 2 ]; then
    echo "Syntax: atmv job_num new time arguments"
    exit 1
fi

job_num="$1"
shift

if [ "$(atq | cut -f 1 | grep "$job_num" | wc -l)" != "1" ]; then
    echo "Error: There is no job with number \"$job_num\"."
    echo "Pick one of these:"
    atlist
    exit 2
fi

at -c "$job_num" | at "$@" 2> /dev/null
atrm "$job_num"
echo "Done! This is the new list of at jobs:"
atlist

関連情報