标签: daemontools

替代 Daemontools (djbtools) 来监督 unix 进程?

我使用Daemontools提供了一种简单可靠的方法来监督我服务器上的 Unix 服务。它运作良好,但它需要不同的思维方式(DJB 方式),一些常见的抱怨是:

  • 基于TAI64N的时间戳
  • 不在 /etc/init.d(或 (/usr/local)/etc/rc.d)下存储脚本
  • 并不总是适用于像 apachectl 这样的脚本。有些脚本需要重写。

我记得大约两年前,一些类似的“主管/看门狗”守护进程正在开发中,但有些仍然有点粗糙。

如果你已经从 Daemontools 切换到其他东西,你选择了什么并且它对你来说效果很好?默认情况下,RedHat 或 Ubuntu 是否带有任何进程管理器实用程序?

unix daemontools

26
推荐指数
3
解决办法
2万
查看次数

我如何在 upstart、runit、supervisor、daemontools、... 之间进行选择,以便在进程终止时重新启动进程?(过程监督/监控)

我有一个 Nginx 网络代理、gunicorn 网络服务器和一个 python/flask 网络应用程序。Gunicorn 进程显然已经死了,我想在未来通过研究一种实用程序来改善这一点,该实用程序可以在 gunicorn 进程再次崩溃时监控并重新启动它。

我发现了几个可以完成这项工作的流程监督实用程序:

  • 守护进程
  • 启动
  • 运行
  • s6
  • 导师
  • 系统D
  • 暴发户
  • ...

是否有一篇综合文章比较和对比了用于监视和重新启动进程的各种实用程序?

https://en.wikipedia.org/wiki/Process_supervision

upstart daemontools supervisord runit

13
推荐指数
1
解决办法
5856
查看次数

runit - 无法打开监督/确定:文件不存在

我试图弄清楚为什么 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 并没有什么区别。

有什么建议?我在这里的某个地方错过了一步吗?

daemon init daemontools runit ubuntu-12.04

9
推荐指数
1
解决办法
2万
查看次数

从没有 tty stdin 的根脚本中以另一个用户身份运行脚本

使用 CentOs,我想以用户“培训”的身份运行脚本作为系统服务。我使用 daemontools 来监控进程,它需要一个以 root 身份运行并且没有 tty 标准的启动程序脚本。

下面我给出了我的五种不同尝试,但都失败了。

  1. #!/bin/bash
    exec >> /var/log/training_service.log 2>&1
    setuidgid training training_command
    
    Run Code Online (Sandbox Code Playgroud)

    最后一行不够好,因为对于training_command,我们需要为trqaining 用户设置环境。

  2. 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)但我不情愿并且不确定后果。

  3. 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'

  4. runuser - training -c 'training_command'  
    
    Run Code Online (Sandbox Code Playgroud)

    这个给runuser: cannot set …

linux su shell centos daemontools

4
推荐指数
1
解决办法
5万
查看次数

在 CentOS 上共享 .iso 文件以通过 Internet 在任何地方远程安装

我有一个远程计算机支持业务,我们需要不时在客户端计算机上远程挂载 .iso 文件,以用于获取驱动程序更新等。我们在 Netcraft 前 10 名名单上拥有一个巨大的服务器,我想在这件事上安装一些 ISO,并使用 WebDAV 之类的技术将它们安装在远程 PC 上。例如,我们将 DriverPack Solution 4GB DVD 下载到机器然后扫描/更新驱动程序是没有意义的。我们宁愿像谷歌驱动器一样安装图像......有什么想法吗?

linux iso centos webdav daemontools

4
推荐指数
1
解决办法
938
查看次数

systemd 可以管理管道吗?

systemd 可以管理类似于 daemontools 系列的管道吗?如果是这样,实现这一目标的最佳方法是什么?

我想运行与systemd 管理的service1 | service2whereservice1service2are(单独或不单独)服务的等价物。

我希望能够在service2不中断的情况下重新启动该过程service1。换句话说,退出service1时不能关闭正在写入的文件描述符service2。当 的新实例service2启动时,它应该继承现有的文件描述符,以便 stdout fromservice1将流入新的service2. (就像 daemontools 在run和之间维护一个管道log/run,尽管管道不必是服务和记录器。)

也许中间有 systemd 管理的 FIFO?

daemontools systemd

1
推荐指数
1
解决办法
3318
查看次数

标签 统计

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