![如何确保程序始终运行但没有 root 访问权限?](https://linux22.com/image/41725/%E5%A6%82%E4%BD%95%E7%A1%AE%E4%BF%9D%E7%A8%8B%E5%BA%8F%E5%A7%8B%E7%BB%88%E8%BF%90%E8%A1%8C%E4%BD%86%E6%B2%A1%E6%9C%89%20root%20%E8%AE%BF%E9%97%AE%E6%9D%83%E9%99%90%EF%BC%9F.png)
目前我需要有一个程序一直运行,但是当服务器重新启动时我需要手动运行该程序。有时我没空。
当服务器启动时,我无法使用正常配置重新启动我的程序,因为我没有 root 访问权限,并且管理员不想安装它。
答案1
我把这个发布在类似的问题
如果您有cron
守护进程,则预定义的 cron 时间挂钩之一是@reboot
,它会在系统启动时自然运行。运行crontab -e
编辑您的crontab
文件,并添加一行:
@reboot /your/command/here
我听说这并不是为所有 cron 守护进程定义的,所以你必须检查它是否适用于你的特定守护进程
答案2
更通用的解决方案是设置一个 cronjob 来检查您的程序是否每隔几分钟运行一次。我以普通用户身份运行 dircproxy,并且 crontab 条目如下所示:
*/10 * * * * /path/to/dircproxy_cron.sh
答案3
这不是一般问题的答案,但可能应该提及。
Unix 和类 Unix 系统通常用于多用户环境,因为它们是多用户操作系统。因此,此类系统的管理员通常不愿意安装未知的服务或软件,因为这可能会导致系统的所有用户不稳定或不安全。因此,我认为第一步是
- 确定管理员不想安装该服务的原因。
- 考虑一下您是否可以通过某种方式完成任务,从而解决管理员的担忧。
- 如果不是,请确定管理员的担忧是否有效。即,问问自己,“这是否会导致其他用户不稳定?”、“这是否会影响其他用户的性能?”以及“这是否会让其他用户面临安全漏洞?”
- 如果所有这些问题的答案都是“否”,请问问自己,在没有管理员许可的情况下执行此操作是否会给您带来麻烦。
- 如果不行或者您愿意接受风险,请尝试上述方法之一。
答案4
我会推荐http://supervisord.org/它将监督您的进程,为您重新启动它,并且有很多配置,应该以普通用户身份运行。