atd
OracleLinux 7サーバーでワンタイムジョブをスケジュールしました。ただし、システムクロックが所定の時間を超えた後もキューに残ります。
# atq
2 Mon Mar 14 00:00:00 2022 a root
# date
Mon Mar 14 09:38:15 NZDT 2022
サービスatd
が実行中です。
# systemctl status atd -l
● atd.service - After the Deadline Spell Check Service
Loaded: loaded (/etc/systemd/system/atd.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2022-02-08 11:16:33 NZDT; 1 months 3 days ago
Process: 1259 ExecStart=/opt/atd/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 1270 (sh)
CGroup: /system.slice/atd.service
├─1270 /bin/sh ./run.sh
└─1283 java -server -Datd.lowmem=true -Dsleep.pattern_cache_size=8192 -Dbind.interface=127.0.0.1 -Dserver.port=1049 -Xmx3840M -XX:ParallelGCThreads=8 -XX:+AggressiveHeap -XX:+UseParallelGC -Dsleep.classpath=./lib:./service/code -Dsleep.debug=24 -classpath ./lib/* httpd.Moconti atdconfig.sl
ジョブは組み込みコマンドを使用して一部のファイルを変更し、他のサーバーで正常に実行されます。
また、コマンドがフリーズしていることを確認しましたが、実行中のプロセスが見つかりませんでした。だから、atd
まだ作業が始まっていないと結論付けることができます!
以下に/var/spool/cron/root
ファイルがありますa0000201a2e594
。このスレッドに基づいて:https://stackoverflow.com/questions/4304631/rescheduling-an-at-job最後の8桁を人間が読める時間に変換してタイムスタンプを取得できます。だからhttps://www.epochconverter.com/私の時間帯に、2022年3月13日20:51:41にジョブが実行されることを教えてください。私は時間の私の定義と一致しませんが、確かにスケジュールを超えています。
このボックスではなぜこれを行うことはできませんか?
答え1
奇妙なことはatd
サービスコール/opt/atd/startup.sh
スクリプトを見つけました。
手動で実行しましたが、/usr/sbin/atd
待機中のジョブが処理されたことを確認しました。
また、デーモンが実行中であることを/var/run/atd.pid
証明するために存在しなければならないことも発見しました。atd
したがって、この問題は、誰かがsystemctlサービスを修正し、サービスがatd
実行されているかのように「最も」発生します。