我使用Daemontools提供了一种简单可靠的方法来监督我服务器上的 Unix 服务。它运作良好,但它需要不同的思维方式(DJB 方式),一些常见的抱怨是:
我记得大约两年前,一些类似的“主管/看门狗”守护进程正在开发中,但有些仍然有点粗糙。
如果你已经从 Daemontools 切换到其他东西,你选择了什么并且它对你来说效果很好?默认情况下,RedHat 或 Ubuntu 是否带有任何进程管理器实用程序?
我有一个 Nginx 网络代理、gunicorn 网络服务器和一个 python/flask 网络应用程序。Gunicorn 进程显然已经死了,我想在未来通过研究一种实用程序来改善这一点,该实用程序可以在 gunicorn 进程再次崩溃时监控并重新启动它。
我发现了几个可以完成这项工作的流程监督实用程序:
是否有一篇综合文章比较和对比了用于监视和重新启动进程的各种实用程序?
我试图弄清楚为什么 runit 无法启动或给我托管应用程序的状态。在 Ubuntu 12.04 上运行。
我创建了 /service、/etc/sv/myapp(其中包含一个运行脚本、一个配置文件、一个日志文件夹和一个运行脚本)。我创建了一个从 /service/ 到 /etc/sv/myapp 的符号链接
当我跑
sudo sv s /service/*
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
warning: /service/myapp: unable to open supervice/ok: file does not exist
Run Code Online (Sandbox Code Playgroud)
我的一些谷歌搜索显示,据说重新启动 svscan 服务可能会解决这个问题,但杀死它并运行 svscanboot 并没有什么区别。
有什么建议?我在这里的某个地方错过了一步吗?
使用 CentOs,我想以用户“培训”的身份运行脚本作为系统服务。我使用 daemontools 来监控进程,它需要一个以 root 身份运行并且没有 tty 标准的启动程序脚本。
下面我给出了我的五种不同尝试,但都失败了。
:
#!/bin/bash
exec >> /var/log/training_service.log 2>&1
setuidgid training training_command
Run Code Online (Sandbox Code Playgroud)
最后一行不够好,因为对于training_command,我们需要为trqaining 用户设置环境。
:
su - training -c 'training_command'
Run Code Online (Sandbox Code Playgroud)
这看起来像(以不同的用户身份运行 shell 脚本)但提供 ' standard in must be tty
' as su 确保 tty 存在以可能接受密码。我知道我可以通过修改 /etc/sudoers(a la https://superuser.com/questions/119376/bash-su-script-giving-an-error-standard-in-must-be-a- tty)但我不情愿并且不确定后果。
:
sudo -u training -i bash -c 'source $HOME/.bashrc; training_command'
Run Code Online (Sandbox Code Playgroud)
同一主题的变体:' sudo: sorry, you must have a tty to run sudo
'
:
runuser - training -c 'training_command'
Run Code Online (Sandbox Code Playgroud)
这个给runuser: cannot set …
我有一个远程计算机支持业务,我们需要不时在客户端计算机上远程挂载 .iso 文件,以用于获取驱动程序更新等。我们在 Netcraft 前 10 名名单上拥有一个巨大的服务器,我想在这件事上安装一些 ISO,并使用 WebDAV 之类的技术将它们安装在远程 PC 上。例如,我们将 DriverPack Solution 4GB DVD 下载到机器然后扫描/更新驱动程序是没有意义的。我们宁愿像谷歌驱动器一样安装图像......有什么想法吗?
systemd 可以管理类似于 daemontools 系列的管道吗?如果是这样,实现这一目标的最佳方法是什么?
我想运行与systemd 管理的service1 | service2
whereservice1
和service2
are(单独或不单独)服务的等价物。
我希望能够在service2
不中断的情况下重新启动该过程service1
。换句话说,退出service1
时不能关闭正在写入的文件描述符service2
。当 的新实例service2
启动时,它应该继承现有的文件描述符,以便 stdout fromservice1
将流入新的service2
. (就像 daemontools 在run
和之间维护一个管道log/run
,尽管管道不必是服务和记录器。)
也许中间有 systemd 管理的 FIFO?
daemontools ×6
centos ×2
linux ×2
runit ×2
daemon ×1
init ×1
iso ×1
shell ×1
su ×1
supervisord ×1
systemd ×1
ubuntu-12.04 ×1
unix ×1
upstart ×1
webdav ×1