Linux

在 At 命令中編輯作業

  • October 9, 2019

在這裡嘗試從at命令修改作業。

關於如何做的任何想法?

已設法列出、刪除和執行,但無法修改。

如果您只需要修復 shell 語言本身的拼寫錯誤,請在目錄中查找您的工作/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
  • 018e67eb是作業執行時間的十六進製表示

十六進制值018e67eb是十進制的 26109931。這似乎是自 26109931 * 60 = 1566595860 以來的紀元過去的分鐘數,而紀元過去的 1566595860 秒是我所在時區的 2019 年 8 月 23 日星期五下午 2:31:00。

引用自:https://unix.stackexchange.com/questions/537131