标签: systemd

如何删除systemd服务

如果我安装了一个新服务,然后决定不再需要该应用程序并删除它,该服务仍会systemctl作为error列在输出中。

这是从哪里来的,我该如何彻底删除它们?

linux systemd

343
推荐指数
6
解决办法
49万
查看次数

systemd - 为我的服务提供多个参数

是否可以为我的 systemd 服务提供多个参数?

我想执行一个带有多个参数的程序,这些参数必须由最终用户决定。

例如: ./program arg1 arg2

要启动一个单参数应用程序,我需要类似的东西systemctl start arg1@program,在服务定义中我有ExecStart = /usr/bin/program ?i.

谢谢!

linux systemd

63
推荐指数
3
解决办法
10万
查看次数

从非基于 systemd 的 rootfs 启动 chroot 内的 systemd 服务

使用 init 脚本(或使用 openrc)我总是可以从不同的安装根运行服务。
但是当我跑步时,chroot /somepath/to_root /usr/bin/systemctl start someservice我得到了:

Running in chroot, ignoring request.
Run Code Online (Sandbox Code Playgroud)

有没有办法强制systemd运行服务?

更新:
我忘了说我的主机系统运行 init 脚本或 openrc,但从来没有使用 systemd,而且我使用 chroot 来对 Unix 系统进行故障排除,这些系统甚至无法启动最小的 shell。

unix chroot systemd sysvinit openrc

52
推荐指数
3
解决办法
9万
查看次数

编写一个依赖 Xorg 的服务

我正在尝试为 编写用户级服务redshift,它需要等到 Xorg 启动并运行。我当前的服务文件如下所示:

[Unit]
Description=Redshift
After=graphical.target

[Service]
Environment=DISPLAY=:0
ExecStart=/bin/redshift -l 28:-13 -t 5300:3300 -b 0.80:0.91 -m randr
Restart=always

[Install]
WantedBy=default.target
Run Code Online (Sandbox Code Playgroud)

但是,它似乎尝试在 Xorg 启动之前启动,之后我必须手动启动该服务。我想我使用了错误的After=目标。任何提示?

systemd

47
推荐指数
4
解决办法
3万
查看次数

systemd 分叉 vs 简单?

我正在编写我的第一个systemd单元文件。

对于Type,有几个选择:forkingsimple等。我已经阅读了有关此主题的Redhat 文档(表 9.9),但仍然不确定何时应该使用哪个选项。

有什么指导方针吗?

systemd redhat-enterprise-linux

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

你如何将 systemd 服务作为启动时的最后一个服务?

许多年前,我们可以将启动脚本写入/etc/rc.local. 加载所有系统服务后,您的脚本将运行。

现在,我们使用 systemd,我们没有rc.local了。Systemd 并行启动服务。您可以编写自己的服务来充当 rc.local`,但您不能确保它会在所有系统服务加载后运行。

有没有办法做到这一点?或者我们必须在systemd服务文件中使用BeforeAfter

systemd

41
推荐指数
2
解决办法
8万
查看次数

Ubuntu 17.04 systemd 解析的 DNS 查找随机失败

我升级到 Ubuntu 17.04,它现在似乎有一个新的 DNS 解析器机制,首先在 Ubuntu 16.10 中引入。

我现在有 50% 的时间遇到​​ DNS 查找失败。 对 nslookup 的所有其他调用都失败了,其中一半的调用可以正常解决,而另一半给出了这个:

watch -n 1 nslookup google.com

Server:     127.0.0.53
Address:    127.0.0.53#53

** server can't find google.com: SERVFAIL
Run Code Online (Sandbox Code Playgroud)

据我了解,该 DNS 服务器 IP 地址现在用于表示 systemd-resolved,它执行某种元查找以避免较慢的 DNS 查询(或其他...)。我在过去一周升级到 17.04 的两台机器上看到完全相同的行为。

知道这里的问题是什么,以及解决它的正确方法吗?

升级前一切正常(从 16.04 或 16.10 开始,我不记得是哪个,抱歉)。我认为 17.04 是一个 LTS 版本,但现在我看到我跳了起来,直到 4 月它才会被认为是稳定的。所以……我来了。

另外值得注意的是……浏览器似乎没有出现问题,但 nslookup、ping、git 等会出现问题。

更新

在我的特殊情况下,我的 /etc/hosts 文件是一个符号链接(因为我是一个狂热的 stow 用户)。Systemd 出于某种原因讨厌这种情况,并将其视为“权限失败”。一旦我用实际文件替换了符号链接,systemd 就停止了故障。

dns ubuntu systemd

39
推荐指数
2
解决办法
4万
查看次数

如果没有 systemd,WSL/WSL2/WSLg 如何工作?

据我了解,systemd 是 Linux 的“主”守护进程,在启动并运行其 init 函数后立即管理所有其他进程。由于我遇到了这个(现已解决)问题,即无法在 WSL 上使用任何 systemd 命令,我意识到它根本没有 systemd 进程。

现在,出于好奇,我想知道 WSL 依赖于哪个进程管理而不是 systemd。由于我在“一般谷歌搜索”上没有找到令人满意的答案,我想,让我们在这里尝试一下。

linux process daemon systemd windows-subsystem-for-linux

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

启用的 systemd 单元不会在启动时启动

systemd-unit我的系统上有一个已启用。问题是,重新启动后它不会重新启动。它依赖于其他两个按预期启动的服务。

该服务是已知的、启用的和死的:

[centos@ansible-kube-4 ~]$ sudo systemctl status flanneld
flanneld.service - Flanneld overlay address etcd agent
   Loaded: loaded (/usr/lib/systemd/system/flanneld.service; enabled)
   Active: inactive (dead)
Run Code Online (Sandbox Code Playgroud)

单元文件:

[centos@ansible-kube-4 ~]$ cat /usr/lib/systemd/system/flanneld.service
[Unit]
Description=Flanneld overlay address etcd agent
After=network.target
After=etcd.service

[Service]
Type=notify
Restart=always
RestartSec=3

EnvironmentFile=/etc/sysconfig/flanneld
EnvironmentFile=-/etc/sysconfig/docker-network
ExecStart=/usr/bin/flanneld -etcd-endpoints=${FLANNEL_ETCD} -etcd-prefix=${FLANNEL_ETCD_KEY} $FLANNEL_OPTIONS
ExecStartPost=/usr/libexec/flannel/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/docker

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

更新 1

dmesg 的输出:

$ dmesg | grep systemd
[    1.312165] systemd[1]: systemd 208 running in system mode. (+PAM +LIBWRAP +AUDIT +SELINUX +IMA +SYSVINIT +LIBCRYPTSETUP +GCRYPT +ACL …
Run Code Online (Sandbox Code Playgroud)

systemd

36
推荐指数
2
解决办法
5万
查看次数

@ 符号和 systemctl 和 vsftpd

我有一个两部分的问题。

  1. systemctl 脚本中@ 符号的意义是什么?

  2. 如何在 Fedora 16 中启动 vsftpd(在某些教程中,它的名称中似乎包含一个 @)?我已经完成了教程所说的一切,但它仍然给我一个错误。 http://blog.tuxforge.com/fedora-16-vsftpd/

我所做的

systemctl enable vsftpd@.service
Run Code Online (Sandbox Code Playgroud)

我所看到的

Failed to issue method call: No such file or directory
Run Code Online (Sandbox Code Playgroud)

(我也用绝对路径试过,我检查后没有这样的文件。真正的文件不包含@符号,位于/lib/systemd/system/目录下。我也试过使用和不使用@ 符号启动和启用,启用有效,但启动没有。我意识到这篇文章现在已经过时,但我似乎仍然无法启动服务。当我尝试连接时,它不允许我)

编辑:我让服务以某种方式启动,但我仍然想知道 @ 符号在某些服务名称中的含义。此外,我仍然收到登录错误编号 #500 无法更改目录 [...],这是什么意思?

要开始它,我只是输入

sudo systemctl enable vsftpd.service

sudo systemctl start vsftpd.service (the problem was I was using an absolute path for this I think)
Run Code Online (Sandbox Code Playgroud)

vsftpd systemd

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