问题标签 [systemctl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
unix - Systemctl 中 [RequiredBy] 指令的用途
如果我们在服务单元文件的 [Unit] 部分中有 [Requires] 指令,那么为什么我们还需要在服务单元文件的 [Install] 部分中使用 [RequiredBy] 指令。我了解 [ Install] 部分在服务启用时执行(服务必须在服务器重新启动后重新启动)所以即使我没有指定 [RequiredBy] 指令,那么在服务器重新启动之后无论如何 systemctl 都会检查 [Requires] 指令并将启动所需的服务/目标单元...请澄清这一点,我是 Systemctl 实用程序的新手。
linux - 如果 Service 未在 Systemctl 中运行,则不会执行 ExecStopPost
问题是我的服务没有运行,我试图执行停止服务命令。因此,如果我尝试使用 systemctl stop $servicename.service 停止服务,则服务未运行,因此 ExecStop 命令将不会被执行,因此我的 ExecStopPost 也不会被执行。但我希望即使执行 ExecStopPost 命令我的服务没有运行,我尝试执行停止服务命令。
unix - 了解 Systemctl 实用程序中的状态
我有一个服务,并且我创建了一个服务单元文件来支持在 RHEL7.X 中执行该服务
当我运行服务然后运行状态命令时,我得到以下控制台输出:-
谁能解释一下CGroup下面的“‣”的含义。实际上'‣'是一个'正方形'但是当我在这里复制它时它会变成'‣'
bash - 为什么我不能以超级用户身份执行 systemctl 命令?
我写了一个脚本来在 ubuntu 机器上下载和安装 kubernetes。
脚本的最后一部分是启动 kubelet 服务。
我强制用户以 root 用户身份运行脚本。但是,当脚本到达 systemctl 命令时,它无法执行它。此外,我尝试以 root 用户身份手动执行该命令。我无法这样做。但是,我能够以普通用户的身份执行它。有谁知道为什么?有解决方法吗?
redhat - systemd `systemctl stop` 主动杀死子进程
我有一个类似守护进程的进程,它启动两个子进程(其中一个子进程启动约 10 个其他子进程)。当我systemctl stop
处理我的进程时,子子进程似乎被“积极地”杀死了systemctl
——这并没有给我的进程一个清理的机会。
我如何才能systemctl stop
退出激进的杀戮,从而让我的进程安排有序的清理?
我试过timeoutSec=30
无济于事。
ansible - ansible:如何在centos 7上重新启动auditd服务得到关于依赖的错误
在我的剧本中,我有一个更新 audit.rules 的任务,然后通知应该重新启动 auditd 服务的处理程序。
当 playbook 运行时,会更新审计规则并请求重新启动 auditd,但这会失败,如下所示。
当我查看auditd 的单元定义时,我可以看到rejectManualStop=yes。这就是我无法重新启动服务的原因吗?一个人如何来接受新的审计规则?
sbt - SBT 打包程序生成的启动脚本不起作用
我有一个使用纯 Java 插件创建 Debian 包的 SBT 项目。该插件在 plugins.sbt 中定义如下:
在 SBT 控制台中,我执行以下命令:
这会生成一个 .deb 文件,我尝试使用它在 Ubuntu 机器上安装该文件dpkg -i <filename>
安装包。库和配置等放在 /usr/share/ 中,这是我所期望的。该文件夹还包括一个带有直接启动程序的脚本的 bin 文件夹。到目前为止,一切都很好。
但是,我想使用 启动程序service start <projectname>
,但它不起作用。也一样/etc/init.d/<projectname> start
。后一个命令的输出是:
但是当我用ps
. 这是 /etc/init.d/<projectname> 的内容
通过一些简单的调试,我发现如果命令行参数是“start”,则脚本永远不会超过第二个源语句:source /lib/lsb/init-functions
Systemctl 给我以下输出:
<projectname>.service loaded active exited LSB: <projectname>
我也使用过运行脚本,bash -x
但这会产生相当多的输出,我真的不知道如何阅读。
有人知道这里发生了什么吗?使用打包器并将其安装为包的全部目的是避免像这样的头痛......
service - systemctl enable 有效,但 systemctl --user enable 无效
我有一个运行 Ubuntu 16.04.1x64 的 DO droplet,我正在尝试将IPFS作为 systemd 服务运行。我已经按照此处的说明创建了一个用户“connor”并安装了 IPFS 。我将服务作为“ipfs.service”存储在 ~/.config/systemd/user/ipfs.service 中,如下所示:
奇怪的是,如果我运行systemctl --user start ipfs它启动得很好。但是,运行systemctl --user daemon-reload然后 systemctl --user enable ipfs我得到错误:
执行操作失败:没有这样的文件或目录
但是,如果我运行 systemctl enable /home/connor/.config/systemd/user/ipfs.service -f它运行得很好。我可以重新启动并运行 IPFS 命令就好了。我想以用户身份运行它,也想了解我做错了什么。
squid - 用 systemctl 启动 squid
我有一个连接到宽带链接的系统(debian)。它从链接中收集 DHCP 地址,这就是它访问 DNS 的方式。
该系统还包括处理一些请求的 squid (3)。
一切正常,直到我重新启动它。然后 squid 无法正确启动。重新启动 squid 可以解决问题。
原因似乎是 squid 启动得太早 - 在 DNS 设置之前,这会导致它拒绝任何请求(尽管,当它收到请求时,DNS 现在已设置)。
我尝试使用 systemctl 延迟 squid 以等待 network-online.target,但即使这样也为时过早。
有没有人对如何使用 systemctl/etc 来解决这个问题有任何想法/提示(我宁愿不插入一个在启动它之前延迟 30 的脚本,但也许这是唯一的方法?)
我想我要么需要一个 dns-is-available.target 要么需要一个 delay-30-seconds-after-network-online.target ......或者一些聪明的想法。
莫纳森
raspberry-pi - 无法使用 systemctl 在 raspbian jessie 上启动 mosquitto
首先这样做:
单元文件如下:
的结果:
是:
我做了很多谷歌搜索,并尝试了一些类似的单元文件,但似乎没有任何效果。
手动运行该命令 ( /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
) 给出:
奇怪的是,运行/usr/sbin/mosquitto
,即不指定 .conf 文件,工作正常。/etc/mosquitto/mosquitto.conf 是默认的 .conf 文件,所以即使我没有指定它也应该使用它......