At コマンドでジョブを編集する

At コマンドでジョブを編集する

ここでコマンドを使用してタスクを修正してみてください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「キュー識別子」(aatq リストから)です。
  • 00003位置番号3の(16進数)表現です。
  • 018e67ebジョブ実行時間を16進数で表現したものです。

16進値は018e67eb10進数で26109931です。 26109931 * 60 = 1566595860で、エポックから1566595860秒が私のタイムゾーンの2019年8月23日金曜日の午後2時31分なので、エポックを数分経過したようです。

おすすめ記事