~에 따르면https://unix.stackexchange.com/a/478636/674, cron은 작업을 실행하기 위해 실행 환경을 수정합니다.
Bash에서 직접 두 번 실행 하면
sudo service tor reload
항상 두 개의 다른 IP 주소가 표시됩니다.$ sudo service tor reload; torsocks curl ipinfo.io/ip; sudo service tor reload; torsocks curl ipinfo.io/ip 12.345.678.901 987.654.321.00
sudo service tor reload
이렇게 하면 종료 노드가 변경될 가능성이 높으며 이에 따라 공용 IP 주소가 변경됩니다. 이것이 맞습니까?하지만 cron 작업을 만들
/etc/cron.d/myjob
때* * * * * tim (sudo service tor reload; torsocks curl ipinfo.io/ip; sudo service tor reload; torsocks curl ipinfo.io/ip) > /tmp/cron.log
를 확인할 때마다
/tmp/cron.log
IP 주소는 작업마다 다르지만 항상 두 개의 동일한 IP 주소가 표시됩니다(다음 예약 작업이 로그를 덮어쓰면 덮어쓰기 전의 두 IP 주소와 다른 두 개의 동일한 IP 주소가 표시됩니다). 다시 로드 사이에 삽입할 때도 마찬가지입니다sleep 20
.* * * * * tim (sudo service tor reload; torsocks curl ipinfo.io/ip; sleep 20; sudo service tor reload; torsocks curl ipinfo.io/ip) > /tmp/cron.log
크론 작업으로서
sudo service tor reload
IP 주소를 변경할 수 없는 이유는 무엇입니까? 어떻게 작동하게 할 수 있나요?
감사해요.
답변1
문제의 원인은 작업 라인에서 명령이 사용되고 sudo
사용자 필드가 루트가 아닌 사용자라는 것입니다 tim
. tim
요청한 비밀번호를 제공하지 않았습니다 sudo
.
저는 여전히 cron 작업에 대한 사용자 및 명령 필드 작성에 대한 모범 사례를 이해하려고 노력하고 있습니다."/etc/cron.d/" 파일의 cron 작업에 "sudo"가 포함되어서는 안 되나요?