더 일찍 실행되도록 작업 일정을 변경하는 방법은 무엇입니까?

더 일찍 실행되도록 작업 일정을 변경하는 방법은 무엇입니까?

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

허용된 답변을 바탕으로 편의 스크립트는 다음과 같습니다 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

관련 정보