标签: daemon

如何在不使用 root 的情况下运行 supervisord?

我似乎无法弄清楚为什么 supervisord 不会以非 root 用户身份运行。如果我在用户设置为 jason (pid 1000) 的情况下启动它,我会在日志文件中得到以下信息:

2010-05-24 08:53:32,143 CRIT Set uid to user 1000
2010-05-24 08:53:32,143 WARN Included extra file "/home/jason/src/tsched/celeryd.conf" during parsing
2010-05-24 08:53:32,189 INFO RPC interface 'supervisor' initialized
2010-05-24 08:53:32,189 WARN cElementTree not installed, using slower XML parser for XML-RPC
2010-05-24 08:53:32,189 CRIT Server 'unix_http_server' running without any HTTP authentication checking
2010-05-24 08:53:32,190 INFO daemonizing the supervisord process
2010-05-24 08:53:32,191 INFO supervisord started with pid 3444
Run Code Online (Sandbox Code Playgroud)

...然后该过程因某种未知原因而终止。如果我在没有 sudo 的情况下启动它(在用户 jason 下),我会得到类似的输出:

2010-05-24 08:51:32,859 INFO supervisord …
Run Code Online (Sandbox Code Playgroud)

daemon root sudo supervisord

8
推荐指数
1
解决办法
3万
查看次数

Ubuntu 上的 init.d 在启动时没有启动守护进程的核心转储

如何让 init.d 在启动时启动守护进程到 Ubuntu 上的 coredump?这是我到目前为止所做的......

echo "ulimit -c unlimited" >> /etc/profile
mkdir /corefiles/
chmod 777 /corefiles/
echo "kernel.core_pattern=/corefiles/core.%e.%u.%t" >> /etc/sysctl.conf
echo "fs.suid_dumpable=1" >> /etc/sysctl.conf
echo "kernel.core_uses_pid = 1" >> /etc/sysctl.conf
sysctl -p
Run Code Online (Sandbox Code Playgroud)

这对除了由 init.d 在引导时启动的守护进程之外的所有内容都非常有用。我正在运行 Ubuntu 10.04。我正在寻找一种不涉及编辑每个守护进程 init.d 文件的解决方案。

编辑:另外,以 sudo 启动的守护进程不进行核心转储。

linux ubuntu daemon dump init.d

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

如何判断 ssh ControlMaster 连接是否正在使用中

我想使用sshControlMaster功能来共享连接以提高速度。我正在尝试编写脚本,以便我可以启动/重新启动/停止与不同主机的多个连接。

如何确定这些连接中的任何一个是否正在使用中?如果我在 ssh 会话打开时杀死它们,它就会关闭

理想情况下,我的重启脚本看起来像(伪脚本)——停止脚本在底部没有 ssh 命令的情况下是等效的:

for HOST in $HOST_LIST
  do
    MASTER_PID=`find_master_pid $HOST`
    if $MASTER_PID
      then
        if `find_child_pid`
          echo Connection to $HOST in use: not terminating
        else
          kill -SIGHUP $MASTER_PID
        fi
    ssh -TMNf $HOST
Run Code Online (Sandbox Code Playgroud)

networking linux ssh tunneling daemon

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

在后台启动 Sinatra 应用程序,并将 stdout 和 stderr 重定向(附加)到文件

我有一个 Sinatra 应用程序,我使用ruby app.rb. 通过 ssh 在远程机器上部署它时,如何在后台运行它并将 stdout 和 stderr 重定向到日志文件?

在重新启动时,我想保留以前的日志,以便将较新的消息附加到现有的日志文件中,而不是截断它。

将我的 Web 应用程序作为守护程序运行的推荐方式是什么?

我试过了nohup ruby app.rb &,但似乎缺少 stderr 并且在某些情况下日志语句似乎乱序。

daemon background background-process stderr sinatra

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

守护程序调用的前台程序是否应该根据严重性级别在 stderr 和 stdout 之间拆分日志记录?

通常日志消息写入 stderr。我想知道拆分日志消息是否是一个好主意/实践,以便错误和警告转到标准错误,而调试/信息/通知消息转到标准输出?或者这是否无关紧要,因为许多专用日志记录进程无论如何只能从 stdin 读取,这需要将 stderr 和 stdout 中的源日志消息组合起来并重定向到记录器的 stdin。

[更新]

下面的两个答案都提到了系统日志,我想我需要详细说明设置。

我询问的守护进程自己在前台运行。守护进程由监督进程管理,例如runitsupervisord。在这两种情况下,守护进程的 stderr 和 stdout 将被监督进程捕获,并且监督进程的工作是决定如何以及在哪里存储日志(可能是系统日志,或者通过 UDP 网络中的其他地方) . 守护进程不必担心写入日志的内容和位置,因为它们只是写入 stdout/stderr。

在 的情况下runit,其日志记录工具svlogd将从其 stdin 中读取重定向的日志消息,这些消息是托管守护进程的 stderr/stdout 组合。至于supervisord,它可以记录 stderr 和 stdout 以分隔日志文件。

因此,在这种特定设置中,在 stderr 和 stdout 之间拆分日志还是仅写入其中一个是一种好习惯?

logging daemon stderr stdin stdout

7
推荐指数
2
解决办法
910
查看次数

独立运行 Jenkins 与在 Tomcat 中运行

在决定是独立运行 Jenkins 还是在 Tomcat 中运行时,应该考虑哪些因素?我们宁愿不必使用 Tomcat,因为在这台服务器机器上没有其他需要 Tomcat 的应用程序,所以我们将为 Jenkins 设置和维护另一个应用程序。

但是在 Tomcat 中运行 Jenkins 肯定有一些优势,否则为什么不是每个人都选择独立运行它(因为它更容易设置和维护),那么这些优势是什么?独立运行而不使用 Tomcat 会丢失什么?

Jenkins 安装的大小是否会影响决策?即在一定数量的作业/构建或加载后是否有必要从一个移动到另一个,或者小型和大型 Jenkins 安装对于这两种选择是否同样有效?

Jenkins 独立使用 Winstone servlet 引擎,所以在某些方面这个问题也是关于 Winstone vs Tomcat。

tomcat java daemon jenkins

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

为什么 NTP 守护进程一直监听 UDP6?

我有一个干净的 Debian 7 安装,我在 /etc/ntp.conf 中手动输入了以下几行:

interface ignore wildcard
interface listen <local_nic_ip>
Run Code Online (Sandbox Code Playgroud)

希望NTP不再监听UDP6,但重启后,它仍然:

5:udp        0      0 <local_nic_ip>:123       0.0.0.0:*                           9172/ntpd       
6:udp        0      0 127.0.0.1:123           0.0.0.0:*                           9172/ntpd       
8:udp6       0      0 ::1:123                 :::*                                9172/ntpd
Run Code Online (Sandbox Code Playgroud)

NTP 的命令行没有显示任何异常:

/usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 121:130
Run Code Online (Sandbox Code Playgroud)

如何阻止 NTP 侦听该 UDP6 端口?

linux ntp ipv6 daemon service

7
推荐指数
1
解决办法
3万
查看次数

如何删除权限并仍然清理 /var/run 中的 pid 文件?

我有一个名为foo. 我的 init 脚本/etc/init.d/foo启动foo守护进程并将其 pidfile 存储在 中/var/run/foo.pid,这似乎是标准位置。因为/etc/init.d/foo必须以 root 身份运行,所以在/var/run.

foo守护进程是真正的程序/usr/sbin/foo,其目的是由init脚本以root身份调用,但然后立即放弃其权限的非特权foo用户。但是,我还希望该/usr/sbin/foo程序在由于严重错误退出时删除其 pidfile。但由于它已经放弃了它的权限,它不再具有从/var/run目录中删除文件的能力。

我目前的方法是使用seteuid而不是setuid删除我的权限,然后在退出之前立即重新提升权限,以便我可以从/var/run. 但是,我遇到了许多与各种库和外部程序有关的问题,这些问题在使用与 uid 不同的 euid 调用时会出现问题。

有没有其他方法可以做到这一点?我想另一种选择是将我的 pidfile 放在一个目录中,该目录可由 rootfoo用户和用户写入。但是我们其他所有PID文件都在/var/run,包括其运行作为非特权用户,所以我喜欢把其他程序PID文件foo.pid的文件那里。

除了使用之外还有什么方法可以做到这一点seteuid吗?

linux daemon

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

从带有 start-stop-daemon 的 LSB init 脚本启动 PHP 守护进程

我正在编写一个 lsb init 脚本(不可否认,我从未从头开始做过)它启动了一个守护进程的 php 脚本。php 脚本是这样开始的:

#!/usr/bin/env php
<?php
/* do some stuff */
Run Code Online (Sandbox Code Playgroud)

然后在 init 脚本中像这样启动:

# first line is args to start-stop-daemon, second line is args to php-script
start-stop-daemon --start --exec /path/to/executable/php-script.php \
  -- --daemon --pid-file=$PIDFILE --other-php-script-args
Run Code Online (Sandbox Code Playgroud)

--daemon标志导致 php 脚本分离并作为守护程序本身运行,而不是依赖于start-stop-daemon分离它。

这就是它(试图)在 init 脚本中停止它的方式:

start-stop-daemon --stop --oknodo --exec /path/to/executable/php-script.php \
  --pidfile $PIDFILE
Run Code Online (Sandbox Code Playgroud)

问题是,当我尝试通过 init 脚本停止时,它给了我这个:

$ sudo /etc/init.d/my-lsb-init-script stop
 * Stopping My Project
No /path/to/executable/php-script.php found running; none killed.
   ...done.
Run Code Online (Sandbox Code Playgroud)

快速浏览一下ps告诉我,尽管 php …

php bash daemon lsb init.d

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

nohup vs 屏幕 vs ? 用于手动启动守护进程

当我需要在低重要性服务器上启动后台进程时,我倾向于使用 nohup:

nohup ./server.sh &
Run Code Online (Sandbox Code Playgroud)

大多数同事似乎更喜欢屏幕:

screen -D -R mydaemon
./mydaemon.sh
^A ^D
Run Code Online (Sandbox Code Playgroud)

这两种方法的效果有什么主要区别吗?以一种方式或另一种方式有什么好处?

daemon nohup background-process gnu-screen

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