내가 명명한 스크립트를 실행하려고 합니다 script1.sh
.
out="/home/me/scripts/out.txt"
sudo ntpdate 99.99.99.99 >> $out
crontab으로 타이머 설정센토스 7운영 체제. 이것의 목적은 Centos 7 시간을 시간 서버와 자동으로 동기화하는 것입니다.
명령 사용
crontab –e # (1)
sudo crontab –e # (2)
sudo vi /etc/crontab # (3),
각 구성 파일 (1), (2), (3)에 일정 정의 문자열을 붙여넣었습니다. 문자열은
* */1 * * * me /home/me/scripts/script1.sh
sudo systemctl reload crond.service
그런 다음 새 구성을 구현하는 명령을 적용했습니다 .
이는 위의 일정에 따라 script1.sh
매 시간마다 수행되어야 합니다 . 그러나 문제는 ntpdate에도 sudo
권한이 필요하므로 script1.sh
동일한 작업을 수행한다는 것입니다. 이 문제를 인터넷 검색하여 sudo
start edit 명령을 사용하여 구성 파일을 편집하면 비밀번호 요구 사항을 억제할 수 있다는 것을 발견했습니다 . 그런 다음 맨 아래에 비밀번호 없는 액세스에 대한 몇 가지 권한을 추가했습니다.sudoer
sudo visudo
me ALL=(ALL) NOPASSWD: /home/me/scripts/*
me ALL=(ALL) NOPASSWD: /usr/sbin/ntpdate
처음에는 (1), (2), (3) 세 가지 모두에 정의되어 있을 때 작동합니다. 그런 다음 (2)와 (3)의 계획 정의에 주석을 달고 crontab을 다시 로드했기 때문에 작동이 멈추고 sudo 비밀번호를 묻기 시작했습니다. 그런 다음 그대로 돌아가서 아무런 효과가 없었습니다.
질문
이 작업을 수행하는 방법에 대한 힌트를 주실 수 있나요? 그것이 작동하도록 하려면 무엇을 할 수 있습니까?
답변1
사용자의 crontab을 통해 루트가 필요한 작업을 트리거하는 대신 시스템 crontab을 사용해야 합니다.필요 sudo
, 왜냐하면 그 일은이미루트로 실행하십시오.
하지만 이 특별한 경우에는 기술적으로 말하면 잘못된 일을 한 것입니다. ntpdate
이는 이와 같이 사용되어서는 안 됩니다. 단지 시간의 갑작스러운 점프와 지속적인 시계 드리프트를 보장하는 것일 뿐입니다.
chrony
따라서 해당 스크립트를 폐기하고 적절하게 설치하십시오.구성 /etc/chrony.conf
, 활성화: sudo systemctl enable --now chronyd
. Chrony는 오류를 최소화하면서 시계를 NTP 서버와 동기화된 상태로 유지하려는 데몬입니다.