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
실행 중인 것처럼 "가장"하여 발생합니다!