根据https://unix.stackexchange.com/a/478636/674、cron修改执行环境来执行作业。
当我
sudo service tor reload
直接在bash中运行两次时,它总是显示两个不同的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地址与覆盖前的两个不同)。当我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
作为一个cron作业,为什么
sudo service tor reload
无法更改IP地址?我怎样才能让它发挥作用?
谢谢。
答案1
问题原因是:作业行中,命令使用的是sudo
,而用户字段是非root用户tim
。我不提供tim
所要求的密码sudo
。
我仍在尝试了解编写 cron 作业的用户和命令字段的最佳实践。“/etc/cron.d/” 文件中的 cron 任务是否不应包含“sudo”?