Linux
在 At 命令中編輯作業
在這裡嘗試從
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
是工作編號的(十六進制)表示,3018e67eb
是作業執行時間的十六進製表示十六進制值
018e67eb
是十進制的 26109931。這似乎是自 26109931 * 60 = 1566595860 以來的紀元過去的分鐘數,而紀元過去的 1566595860 秒是我所在時區的 2019 年 8 月 23 日星期五下午 2:31:00。