我有一台服务器,需要永久运行某些程序;其中两个程序出现了问题,我不确定我找到的解决方案是否正确,因此我向在这些问题上更有经验的用户征求意见。
一方面,我有一个 cron-task-launched 脚本,它连接到 FTP 来更新服务器的 IP,因此,如果 IP(它是动态的)发生变化,我可以检查 FTP 以获取当前 IP,这样我就可以连接到服务器。
另一方面,我有一个由 wine 启动的程序,它也需要连接到另一个 FTP 帐户并时不时执行需要 root 权限的其他命令。
我有什么问题?
如果我登录并启动这些进程,它们会完美运行数小时,即使我让会话“进入阻止密码询问屏幕”,我猜是因为它们经常执行需要 root 密码的进程(可能每 2-10 分钟一次),但如果它们停止执行这些进程,例如,它们在 5 或 10 小时内不需要连接到 FTP,那么在那之后它们就无法再这样做,直到我再次登录,而在那一刻它们就可以再次连接到 FTP。
因此,在阅读了有关它的大量信息后,我猜解决方案是编辑 /etc/sudoers 并添加类似于以下的一行:
user_X ALL=NOPASSWD:/home/user_X/script.sh
因此,此用户(在其会话上运行的进程)能够永久访问 FTP。事实上,wine 启动的进程,即使我登录也无法再次连接,所以我猜 wine 需要它自己的权限,所以也许我应该做点不同的事情来代替它?
我不确定这是否是正确的解决方案。有人可以确认一下吗?
提前致谢。
编辑:
用于编辑 cron 任务的命令:
sudo crontab -u root -e
我添加了一行来(尝试)使其工作:
*/30 * * * * /home/user_X/check_public_IP.sh > /home/user_X/Desktop/cron_res.txt