我在 Debian Linux 系统上运行 logcheck 以收到日志文件中异常行的警报,最近我在以下内容中看到了以下内容/var/log/messages:
gnome-keyring-daemon: couldn't allocate secure memory to keep passwords and or keys from being written to the disk
Run Code Online (Sandbox Code Playgroud)
我不知道到底是什么导致了这条消息,只是后来在日志中注意到了。这是什么意思,我该如何解决?
我有一个 C 程序,我想将它作为守护程序运行。如何安装它以便它在 CentOS 上作为守护程序运行?有人说要用@reboot,有人说要放进去/etc/rc.d/rc.local。哪个是正确的方法?
我(或我的一位同事)需要编写一个或多个 shell 脚本来控制守护进程的执行。我们需要能够启动守护进程,告诉它正常关闭,并强制关闭。基本上,这是人们传统上使用脚本进行的那种事情/etc/init.d。
我们将部署到 Ubuntu。我们可能希望部署到 RedHat/CentOS,也可能部署到 AIX。我希望能够部署到任何 unix,因为我喜欢可移植性地做事。
那么,是否可以编写可移植的服务脚本?
我想我可以编写一个便携式 Bourne shell 脚本,它的工作方式类似于普通的 init.d 脚本,并接受“开始”和“停止”作为命令。这可以在任何地方工作,并且至少可以在 Debian 和 RedHat 风格的系统上提供自然的界面。它适合其他地方吗?init.d 是通用的吗?有什么需要注意的陷阱吗?
有没有什么工具可以生成不同形式的服务脚本?我可以编写用于启动和停止的脚本片段,并让该工具为各种不同平台生成脚本。
对于特定于平台的服务脚本约定,是否有任何替代方案?我遇到过daemontools和runit;这些是 init.d 脚本的替代品吗?他们有什么好处吗?还有什么这样的?
这有道理吗?
我很好奇,是否有一个 JVM 作为操作系统守护进程运行,并在新进程应该在其中启动时分叉(即像 Android 上的 init 或 zygote 进程)?如果没有,为什么不呢?我不是在谈论 JVM 中的守护线程。
我问的原因是因为 JVM 启动时间很慢,并且对脚本编写造成了沉重的负担。
我创建了一个指向开始/停止/等的符号链接。包装 bash 脚本/etc/rc.d,将其添加到DAEMONS=()rc.conf 中,但它指向的进程未在启动时启动,也未显示在$ rc.d list. 谷歌搜索,我看到提到update-rc.d,但似乎该命令在 Arch Linux 中不可用。添加rc.local可以与默认值相同的方式使用的系统范围守护程序(即,不使用)的正确方法是什么?
在 /etc/init.d/
第一个守护进程
# Provides: first
# Required-Start: $remote_fs $syslog
Run Code Online (Sandbox Code Playgroud)
第二个守护进程
# Provides: second
# Required-Start: $remote_fs $syslog first
Run Code Online (Sandbox Code Playgroud)
这是在 Debian 中指定第二个守护进程对第一个启动之前的依赖的正确方法吗?
我使用的是 64 位 Linux Mint Debian v2。
我最近注意到我的 ssh 守护进程在启动时没有自动启动。它曾经。我不确定它是否与我的 UFW 配置或 sshd_config 配置有关,但是,除非我输入:
sudo service ssh start
Run Code Online (Sandbox Code Playgroud)
我在网上搜索过,我可以找到一些解决方案,例如:
sudo update-rc.d ssh defaults
Run Code Online (Sandbox Code Playgroud)
并在 中创建一个 sshd 文件/etc/init.d,但是,它们不起作用。
我试过清除 ssh 和 openssh-server 并重新安装。但是,这没有任何效果。重新安装后它会自动启动,但是,一旦我重新启动并检查 ssh 守护程序,它就不会出现。
关于如何让它在启动时启动的任何建议?
我开始了一个 VPN 连接sudo openvpn --daemon --config connection.ovpn。有没有办法终止此连接而不使用ps搜索进程然后kill自己搜索?
我已经根据这个答案的代码创建了一个 shell 脚本守护进程。我写了一个 systemd 服务文件,内容如下:
[Unit]
Description=My Daemon
After=network.target
[Service]
Type=forking
PIDFile=/run/daemon.pid
ExecStart=/root/bin/daemon.sh
ExecReload=/bin/kill -1 -- $MAINPID
ExecStop=/bin/kill -- $MAINPID
TimeoutStopSec=5
KillMode=process
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
就在 while 循环开始之前,我正在创建一个 PID 文件(它将由守护进程创建,而不是由子进程或父进程创建,因为它们还没有达到这一点):echo $$ > /run/daemon.pid;. 它工作正常,但每次我打电话时systemctl status daemon.service,我都会收到以下警告:
daemon.service: PID file /run/daemon.pid not readable (yet?) after start: No such file or directory
Run Code Online (Sandbox Code Playgroud)
如果我echo $$ > /run/daemon.pid;在脚本的开头插入 PID creaton 语句(子级和父级也将使用它),我会收到以下警告:
daemon.service: PID 30631 read from file /run/daemon.pid does not exist or is a zombie.
Run Code Online (Sandbox Code Playgroud)
创建 PID …
我正在开发用 PHP 编写的套接字服务器。这部分工作已经完成,但现在我需要将它作为守护进程运行。
为此,我尝试使用start-stop-daemon但它不起作用。我的服务器正在运行 Debian。
为简化起见,我的问题是为什么以下命令不运行我的守护程序或如何调试它?
start-stop-daemon --start --quiet --background --make-pidfile --pidfile /var/run/server-ticket.pid --exec /usr/local/zend/bin/php /var/www/server/consultpilot/ServerTicket.php >> /var/log/server-ticket.log 2>> /var/log/server-ticket.log </dev/null
Run Code Online (Sandbox Code Playgroud)
以下是完整脚本,基于Till Klampaeckel 的教程:
start-stop-daemon --start --quiet --background --make-pidfile --pidfile /var/run/server-ticket.pid --exec /usr/local/zend/bin/php /var/www/server/consultpilot/ServerTicket.php >> /var/log/server-ticket.log 2>> /var/log/server-ticket.log </dev/null
Run Code Online (Sandbox Code Playgroud)
有关信息,当我开始这个过程时,没有回报。但是当我完成它时,它告诉我没有相应的进程:
root:/var/run$ service server-ticket start
Starting Daemon for the Server Ticket from DiffMed: result : 0
server-ticket.
root:/var/run$ service server-ticket stop
Stopping Daemon for the Server Ticket from DiffMed: start-stop-daemon: warning: failed to kill 5772: No such …Run Code Online (Sandbox Code Playgroud)