Articles of 守护进程

守护进程和服务之间有区别吗?

守护进程和服务之间有区别吗? 或者它们基本上都是驻留在内存中的应用程序,并且绑定到一个特定的端口并监听/响应请求?

在/etc/init.d脚本中调用守护进程是阻塞的,而不是在后台运行

我有一个Perl脚本,我想要守护进程。 基本上这个perl脚本会每隔30秒读取一个目录,读取它find的文件,然后处理数据。 为了简单起见,可以考虑下面的Perl脚本(称为synpipe_server,这个脚本在/usr/sbin/有一个符号链接): #!/usr/bin/perl use strict; use warnings; my $continue = 1; $SIG{'TERM'} = sub { $continue = 0; print "Caught TERM signal\n"; }; $SIG{'INT'} = sub { $continue = 0; print "Caught INT signal\n"; }; my $i = 0; while ($continue) { #do stuff print "Hello, I am running " . ++$i . "\n"; […]

标准或最好的方式来保持活动进程由init.d启动

我正在寻找一个标准的方法或最佳实践来保持一个由init.d shell脚本启动的守护进程。 或者甚至更好,有没有办法让它直接从/etc/init.d ? 具体来说,我有一个名为dtnd的守护进程,并且有无限循环,用于查找意外的结束进程,如果有的话,守护进程会再次唤醒它们。 另外,我使用start-stop-daemon工具来让给定的系统用户运行进程。 我想从启动运行这个dtnd守护进程。 为了实现这个行为,我创build了一个init.d脚本,它使用start,stop和status命令来“包装”dtnd文件。 我有两个问题,我想解决: 有没有办法实现从init.d shell脚本保持活着的一些进程 。 是一种标准/最好的方式吗? build议使进程保持无限循环状态? 我想最好使用一些像respawn这样的命令来实现。 这是正确的? 我知道respawn命令的存在。 我想这就是我所需要的,但是我不了解/etc/init.d/和/etc/init之间的工作stream程。 任何人都可以帮我吗? 注意,我没有inittab,也没有upstart(我只允许使用/etc/init , /etc/init /etc/init.d , cron和系统工具作为start-stop-daemon 。我的意思是,只有默认的工具) 非常感谢你的时间!

以不同的用户运行

在RedHat系统上,我试图用一个不具有任何shell的不同用户启动一个程序。 在/ etc / passwd中,shell是/ sbin / nologin。 我努力了: su myuser -c /home/myuser/script.sh结果:此帐户当前不可用。 使用chown和setuid:chown myuser:mygroup /home/myuser/script.sh chmod + s /home/myuser/script.sh /home/myuser/script.sh结果:script.sh仍然作为我的login用户执行(根)。

初始化脚本不会创build一个PID文件

我需要为IRClogging器创build一个init脚本。 我复制/etc/init.d/skeleton。 我填写了configuration部分,以适应我的需要,我也不得不join–background到start守护进程命令,因为我的IRClogging器没有分离。 logging器启动正常,当我使用我的初始化脚本,但它不会像创build.pid文件应该。 因此,除非我自己find进程ID,否则就不能停止进程。 这是脚本: #! /bin/sh ### BEGIN INIT INFO # Provides: skeleton # Required-Start: $remote_fsh # Required-Stop: $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Example initscript # Description: This file should be used to construct scripts to be # placed in /etc/init.d. ### END INIT […]

NTP守护进程是否设置主机时区?

如果我正在使用NTP守护进程或ntpdate命令,是否需要担心更改时区? 我应该使用cron作业重新configuration时区以保证服务器时间的准确性吗? 我正在使用Ubuntu的服务器。

用一个systemd服务文件启动N个进程

我发现这个systemd服务文件启动autossh以保持一个SSH隧道: https : //gist.github.com/thomasfr/9707568 [Unit] Description=Keeps a tunnel to 'remote.example.com' open After=network.target [Service] User=autossh # -p [PORT] # -l [user] # -M 0 –> no monitoring # -N Just open the connection and do nothing (not interactive) # LOCALPORT:IP_ON_EXAMPLE_COM:PORT_ON_EXAMPLE_COM ExecStart=/usr/bin/autossh -M 0 -N -q -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -p 22 -l autossh remote.example.com […]

Debian:太多打开的文件

我在Debian有很长时间的运行过程。 在抛出一些错误“太多打开的文件”。 ulimit -a 节目 打开文件(-n)1024 我希望增加2次打开文件的数量。 执行后 ulimit -n 2048 该限制是活动的,直到我的会话结束,这是不适用于任务。 我怎样才能永久增加打开文件的数量?

有没有一种“标准”的方式来在Debian中制作守护进程?

我需要从Debian中的应用程序创build一个守护进程。 在Debian中是否有这样的标准工具,比如Ubuntu中的“upstart”? 我只需要启动 – 停止命令,作为守护进程启动一个程序,有一些选项和一个pid文件,并用pid文件杀死它。 我看着init.d,但似乎这是为了启动时启动。 我想手动启动我的守护进程。

console-kit-daemon – 可以停止吗?

在Ubuntu 9.04服务器安装中,我有60个Console Kit守护进程的实例。 杀死那些人或停止这些进程是安全的吗? 他们似乎要占用大约20%的内存(见htop)。