여기 명령을 사용하여 작업을 수정해 보세요 at
.
이 작업을 수행하는 방법에 대한 아이디어가 있습니까?
목록, 삭제, 실행이 가능했지만 수정할 수는 없습니다.
답변1
쉘 언어 자체의 오타를 수정해야 하는 경우 디렉토리에서 작업을 찾으십시오 /var/spool/cron/atjobs
.
# type -p date | at 1430
warning: commands will be executed using /bin/sh
job 2 at Fri Aug 23 14:30:00 2019
# atq
2 Fri Aug 23 14:30:00 2019 a root
# ls /var/spool/cron/atjobs/
a00002018e67ea*
# cat /var/spool/cron/atjobs/a00002018e67ea
#!/bin/sh
# atrun uid=0 gid=0
# mail root 0
umask 22
LESSCLOSE=/usr/bin/lesspipe\ %s\ %s; export LESSCLOSE
LANG=en_US.UTF-8; export LANG
LESS=-X; export LESS
EDITOR=/usr/bin/vi; export EDITOR
USER=root; export USER
PAGER=/usr/bin/less; export PAGER
PWD=/root; export PWD
HOME=/root; export HOME
XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop; export XDG_DATA_DIRS
MAIL=/var/mail/root; export MAIL
SHLVL=1; export SHLVL
LOGNAME=root; export LOGNAME
XDG_RUNTIME_DIR=/run/user/0; export XDG_RUNTIME_DIR
PATH=/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/root/bin; export PATH
LESSOPEN=\|\ /usr/bin/lesspipe\ %s; export LESSOPEN
cd /root || {
echo 'Execution directory inaccessible' >&2
exit 1
}
/bin/date
작업이 실행된 날짜/시간 수정과 관련하여 해당 날짜/시간은 작업의 파일 이름으로 인코딩됩니다. 우리가 가정한다면:
# ls -ltr /var/spool/cron/atjobs/
total 12
-rwx------ 1 root daemon 1054 Aug 23 13:58 a00002018e67ea*
-rwx------ 1 root daemon 1054 Aug 23 14:03 a00003018e67eb*
-rwx------ 1 root daemon 1054 Aug 23 14:03 a00004018e67e9*
# atq
2 Fri Aug 23 14:30:00 2019 a root
3 Fri Aug 23 14:31:00 2019 a root
4 Fri Aug 23 14:29:00 2019 a root
a00003018e67eb
그런 다음 디렉터리의 파일 이름은 /var/spool/cron/atjobs
다음과 같이 구성됩니다.
a
"큐 식별자"(a
atq 목록에서) 입니다.00003
위치 번호 3의 (16진수) 표현입니다.018e67eb
작업 실행 시간을 16진수로 표현한 것입니다.
16진수 값은 018e67eb
10진수로 26109931입니다. 26109931 * 60 = 1566595860이고 에포크에서 1566595860초가 내 시간대의 2019년 8월 23일 금요일 오후 2시 31분이므로 이는 에포크를 몇 분 지난 것으로 보입니다.