标签: systemd

每当目录更改(其中的任何文件)时自动重新启动 Systemd 服务

文件更改时如何重新启动 Systemd 服务。我有一个 Java 服务,我想在任何 jar 文件更改时重新加载它。

这是我的设置:

服务端

[Unit]
Description=srv 0.1: Service's description
After=network.target

[Service]
Type=simple
WorkingDirectory=/opt/srv
ExecStart=/opt/srv/bin/srv
User=root
Group=root

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

服务路径

[Path]
PathModified=/opt/srv/lib/
Run Code Online (Sandbox Code Playgroud)

我还尝试使用PathChanged文件而不是目录。

当我安装我执行的服务时:sudo systemctl daemon-reloadsudo systemctl enable srv

谢谢!

unix systemd

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

如何找出 systemctl 服务“systemd-modules-load”失败的原因?

一段时间以来,我看到一些红色文本在启动过程中闪烁。今天我决定研究一下。systemctl 服务systemd-modules-load.service失败并显示以下文本:

tomas@bonus-debian:~$ sudo systemctl status systemd-modules-load
? systemd-modules-load.service - 加载内核模块
   已加载:已加载(/lib/systemd/system/systemd-modules-load.service;静态;供应商预设:已启用)
   活动:失败(结果:退出代码),因为 ma。2015-11-09 02:58:48 CET;5 分钟前
     文档:man:systemd-modules-load.service(8)
           人:模块-load.d(5)
  进程:644 ExecStart=/lib/systemd/systemd-modules-load(代码=退出,状态=1/FAILURE)
 主PID:644(代码=退出,状态=1/FAILURE)

十一月 09 02:58:48 奖励-debian systemd[1]:启动加载内核模块...
十一月 09 02:58:48bonus-debian systemd-modules-load[644]:找不到模块“-r usbhid”
十一月 09 02:58:48 奖励-debian systemd[1]:systemd-modules-load.service:主进程退出,代码=退出,状态=1/FAILURE
十一月 09 02:58:48 bonus-debian systemd[1]:无法启动加载内核模块。
十一月 09 02:58:48 bonus-debian systemd[1]:systemd-modules-load.service:单元进入失败状态。
十一月 09 02:58:48 bonus-debian systemd[1]:systemd-modules-load.service:失败,结果为“退出代码”。

我以为我会从谷歌搜索这个问题开始:

截屏

哎哟。

我的系统似乎并不介意驱动程序加载失败,因为我没有注意到体验下降,但我仍然想修复它。

由于谷歌让我无处可去,我已经被困住了。我不知道从哪里开始寻找。

如何找出 systemctl 服务“systemd-modules-load”失败的原因?

linux debian kernel-module systemd usb-hid

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

是什么导致“systemd:在步骤 USER spawning /usr/sbin/opendkim 失败:没有这样的过程”

如何消除以下错误:

systemd: Failed at step USER spawning /usr/sbin/opendkim: No such process
Run Code Online (Sandbox Code Playgroud)

当我尝试在 Centos 上启动 opendkim 服务时会发生这种情况。

linux centos systemd

31
推荐指数
4
解决办法
10万
查看次数

启动后如何运行命令?

我想echo 1 > /proc/sys/kernel/sysrq在每次启动时运行简单的 shell 命令,以启用 sysrq 键。在启动时应该这样做,我应该在哪里放置脚本来做到这一点?

linux boot script init systemd

29
推荐指数
3
解决办法
15万
查看次数

如何重新加载 nginx - systemctl 或 nginx -s?

调用有区别吗

systemctl reload nginx
Run Code Online (Sandbox Code Playgroud)

并打电话

nginx -s reload
Run Code Online (Sandbox Code Playgroud)

?

我知道,除了 systemd,还有其他初始化系统,如 SysV 和 Upstart。所以也许这个问题也适用于他们。

是通过 init 系统发出这个命令还是我可以只调用 nginx 本身?

提前致谢

linux nginx systemd

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

如何设置由非 root 用户作为用户守护程序启动的 systemd 服务?

我刚刚在我的 arch-linux 系统(2012.09.07)上完成了 systemd 的安装和设置过程。我卸载了initscripts(并删除了配置文件)。

我想要做的是创建一个可以由非 root 用户启动和停止的服务。该服务将启动一个运行 rtorrent 的分离屏幕会话。但是,我希望系统上已将此服务设置为启动(启用)的每个用户都专门为他们启动一个特定的实例。怎么做呢?

我记得读过 systemd 支持服务的用户实例,但是我一直无法找到有关如何设置它的任何信息,或者它是否与我要查找的内容有关。

我用于系统的服务文件:

[Unit]
Description=rTorrent

[Service]
Type=forking
ExecStart=/usr/bin/screen -d -m -S rtorrent /usr/bin/rtorrent
ExecStop=/usr/bin/killall -w -s 2 /usr/bin/rtorrent
Run Code Online (Sandbox Code Playgroud)

更新#1

阅读此处此处的手册页后,我了解 systemd 如何更好地工作。具体来说,使用User=WorkingDirectory=选项允许在用户会话中启动服务。然而问题仍然存在,用户自己不能startstopenable, 或disable服务。一个访问被拒绝错误由下式给出systemctl

更新#2

首先,为了简化和更好地使用 systemd 的用户会话(仍然有些不完整)功能,我使用了sofar 的 user-session-units并遵循了他的配置建议。

似乎在当前版本的 DBus (1.6.4-1) 中存在一个错误,其中它没有DBUS_SESSION_BUS_ADDRESS使用systemctl --user命令错误设置环境变量含义:

Failed to get D-Bus connection: …
Run Code Online (Sandbox Code Playgroud)

user arch-linux rtorrent systemd

22
推荐指数
1
解决办法
5万
查看次数

如何在 Raspbian 上找到 systemd 版本

如何找到作为我的 linux (raspbian) 安装的一部分的 systemd 版本?

在运行lsb_release -a 时,我得到如下的 linux (raspbian) 版本信息

发行商 ID:Raspbian
描述:Raspbian GNU/Linux 9.1 (stretch)
版本:9.1
代号:stretch

linux systemd raspbian

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

如何在使用 systemd 关闭时在其他所有内容之前运行脚本?

注意:可以在底部找到简要制定的问题。

我有一个脚本可以将我的文件备份到外部 USB 驱动器上。执行它可能需要一段时间,具体取决于我创建的新数据量。我想在系统每次关闭时自动运行它。

我正在使用带有最新更新 (systemd) 的 Fedora 23。

我试图通过多种方式实现这一目标,但我无法让它发挥作用。

使用 StopExec 长时间运行的进程

自动备份服务:

[Unit]
Description=Slow backup script
Requires=local-fs.target

[Service]
ExecStart=/bin/true
ExecStop=/etc/systemd/system/do_backup.sh
Type=oneshot
RemainAfterExit=yes

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

我用 激活它systemctl enable autobackup.service并用 启动它systemctl start autobackup.service

我的启动日志 ( journalctl -b-1) 的一部分:

Dez 22 17:45:27 localhost systemd[1]: Unmounted /mnt/BACKUP.
Dez 22 17:45:27 localhost do_backup.sh[4296]: At subvol /home/BACKUP.2015_12_22-17_45_25
Dez 22 17:45:27 localhost do_backup.sh[4296]: ERROR: parent subvol is not reachable from inside the root subvol.
Dez 22 17:45:27 localhost do_backup.sh[4296]: At …
Run Code Online (Sandbox Code Playgroud)

linux shutdown administrator systemd

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

通过 systemd 激活单元“dbus-org.freedesktop.resolve1.service”失败:未找到单元 dbus-org.freedesktop.resolve1.service

我正在使用 manjaro/arch linux,我在系统日志中看到以下错误消息。

journalctl -f 
...
dbus-daemon[798]: [system] Activating via systemd: service name='org.freedesktop.resolve1' unit='dbus-org.freedesktop.resolve1.service' requested by ':1.4' (uid=0 pid=799 comm="/usr/bin/>
dbus-daemon[798]: [system] Activation via systemd failed for unit 'dbus-org.freedesktop.resolve1.service': Unit dbus-org.freedesktop.resolve1.service not found.
...
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题

linux dns systemd manjaro resolv.conf

21
推荐指数
1
解决办法
4万
查看次数

从 Systemd 运行 Java 进程

我正在尝试从 systemd 执行 shell 脚本。该脚本从命令行运行良好。

脚本 (runServer.sh) 运行一个 Java 进程,如下所示:

#!/bin/bash
java -jar -Dresources=/home/pruss/dev/ServerDeploy5-4.1/Server/resources/MyServer.jar "0" "Test"
Run Code Online (Sandbox Code Playgroud)

在内部/usr/lib/systemd/system(或/lib/systemd/system/在其他操作系统上)我创建了一个服务文件 (myService.service):

[Unit]
Description=My Servers service
[Service]
ExecStart=/home/pruss/dev/ServerDeploy5-4.1/Server/runServer.sh
User=root
Type=oneshot
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

结果

Job for myService.service failed. See "systemctl status myService.service" and "journalctl -xn" for details.
Run Code Online (Sandbox Code Playgroud)

我尝试:

systemctl status myService.service


   Loaded: loaded (/usr/lib/systemd/system/myService.service; disabled)
   Active: failed (Result: exit-code) since Thu 2015-07-23 12:27:38 BST; 26s ago
   Main PID: 28413 (code=exited, status=203/EXEC)
Run Code Online (Sandbox Code Playgroud)

linux java systemd

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