根据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地址失败?我怎样才能让它工作?
谢谢。
问题的原因是:在作业行中,命令使用
sudo
,而用户字段是非root用户tim
。我不提供tim
要求的密码sudo
。我仍在尝试了解编写 cron 作业的用户和命令字段的最佳实践。`/etc/cron.d/` 文件中的 cron 任务是否应该不包含 `sudo`?