AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题

问题[systemd](server)

Martin Hope
Helmut Grohne
Asked: 2025-03-14 03:31:57 +0800 CST

有没有办法在文件更新时激活服务单元?

  • 5

systemd允许将一个.path单元和一个.service单元组合在一起,这样写入文件即可激活服务。现在考虑每次修改文件后都应启动服务。可以将多个修改合并为一个启动,但服务单元应在每次修改后启动。这不是 systemd 通常的运行方式。如果服务在修改时正在运行,则被视为活动且未激活,但在这种情况下应在完成后立即激活。这些语义可以通过其他方式实现吗?

systemd
  • 1 个回答
  • 169 Views
Martin Hope
Richlv
Asked: 2025-01-30 20:53:16 +0800 CST

在用户切片中启动的服务“systemd --user”和“(sd-pam)”保持运行

  • 7

观察到一些与 systemd 相关的进程从未停止。经调查,它们与基于 Java 的服务相连,可能是由通过 手动启动的服务引起的su。

$ sudo loginctl user-status username
username (1014)
           Since: Tue 2025-01-28 04:03:56 CST; 2 days ago
           State: closing
        Sessions: 100
          Linger: no
            Unit: user-1014.slice
                  ├─session-100.scope
                  │ ├─1037532 bash /some/script
                  │ ├─1037541 /usr/lib/jvm/jdk/bin/java -parameters
                  │ ├─1039230 /usr/java/default/bin/java -parameters
                  │ ├─1039510 /usr/java/default/bin/java -parameters
                  │ └─1056980 /usr/java/default/bin/java -parameters
                  └─[email protected]
                    └─init.scope
                      ├─1007530 /usr/lib/systemd/systemd --user
                      └─1007534 (sd-pam)

虽然 systemd 进程不停止与systemd --user 和 sd-pam 进程永不停止类似,但这里共享切片似乎更令人感兴趣。

a) 附加到用户切片的服务是否意味着它们可能会与该用户而不是服务帐户共享资源限制?

b) 在用户切片中运行的服务还有其他影响吗?

c) 除了使用适当的启动脚本/systemd 服务之外,还有什么合理的解决方法可以防止这种情况发生?

编辑:只是为了澄清一下,我是在其他用户的行为之后才注意到这一点的。就我个人而言,到目前为止,我已经因为不成为其他用户而与人们发生过至少 10 年的冲突 :)

systemd
  • 1 个回答
  • 76 Views
Martin Hope
thdox
Asked: 2025-01-01 21:54:53 +0800 CST

如何对 systemd 日志进行 logcheck 测试

  • 5

我用它来logcheck监控我的树莓派在互联网上的使用情况。从 debian 12 bookworm 开始,大多数日志文件不再位于 /var/log 中,而是聚集在 systemd 的日志中。我想在日志上测试我的规则,但我找不到命令。

我以前使用过如下命令:

egrep -f /etc/logcheck/ignore.d.server/local-rules /var/log/*

或者

logcheck-test -l /var/log/* -r /etc/logcheck/ignore.d.server/local-rules

有人知道如何在 systemd 日志上执行此操作吗?

systemd
  • 1 个回答
  • 85 Views
Martin Hope
Morix Dev
Asked: 2024-11-15 00:22:21 +0800 CST

Linux 重启/关机时的卸载顺序

  • 8

我的嵌入式 Linux 上出现了一个(我认为)非常特殊的情况,我无法正确解决......

由于在启动时挂载文件系统之前要执行特定(自定义)检查,我使用初始 ramdisk 来检查和挂载所有请求的文件系统,然后在 init 完成时将它们传输到根文件系统(因此不/etc/fstab使用挂载设备,而是通过驻留在初始 ramdisk 内的脚本挂载它们)。

更具体地说,首先挂载/boot分区(mmcblk1p1)(以只读模式);在该分区内,我有一个文件(rootfs.squashfs),对应于目标根文件系统的 squashfs 映像......因此,经过一些其他操作(与本文的目的无关)后,初始 ramdisk 脚本最终挂载了 squashfs 映像/rootfs,并在 init 脚本的末尾切换到系统根目录/rootfs(通过switch-root命令);

问题出现在系统重启(或关机或断电)时:当系统尝试卸载所有已挂载的文件系统时,卸载/boot失败(因为设备正忙,这很明显,因为根文件系统是从位于 /boot 中的 squashfs 文件挂载的)。

有没有办法避免/boot在重启/关机/断电时卸载,从而避免卸载失败?由于它是以只读方式安装的,所以应该没有任何风险,不是吗?还是我遗漏了什么?

附言:我不知道它是否有帮助和/或相关:我的操作系统初始化是通过 进行管理的systemd。

systemd
  • 2 个回答
  • 109 Views
Martin Hope
gcb
Asked: 2024-11-04 23:32:47 +0800 CST

systemd “启动或重新启动”服务的最佳实践?

  • 7

这是基于systemd 是否可以在重启之前执行命令?的答案。

当前“启动或重新启动”服务的方法是:

systemctl is-active nginx && systemctl reload nginx || systemctl start nginx

我想知道是否有更好的方法来使用目标等。我感觉我仍在尝试将 systemd 工具用作其他 init 工具。

我使用这种方法的情况是手动调整配置后,这可能会起作用,但在压力测试期间会崩溃,因此我需要在对配置文件进行新的调整后启动或重新启动。显然,这里的“解决方案”可能是生产中不可接受的,因为这是在 vm/dev 框上完成的。

systemd
  • 1 个回答
  • 57 Views
Martin Hope
David C
Asked: 2024-10-19 21:12:42 +0800 CST

systemd --user 和 sd-pam 进程永不停止

  • 5

这是在安装 Google Chrome(用于无头浏览器功能)后开始的。我得出结论,这与 Chrome 有关。在安装后的最初几个小时里,我正在构建一个在远程浏览器中调用 Chrome 的短时间运行的脚本。

这个问题有两个方面。systemd 是否可以持续运行?如果可以,如何抑制警报?

几天来,我一直在收到 2 个经销商帐户的以下报告(每小时共 4 份)。请注意,处理时间以“天”为单位。

Time:         Sat Oct 19 08:44:54 2024 -0400
Account:      accountname
Resource:     Process Time
Exceeded:     376436 > 1800 (seconds)
Executable:   /usr/lib/systemd/systemd
Command Line: (sd-pam)
PID:          35343 (Parent PID:35342)
Killed:       No

和

Time:         Sat Oct 19 08:44:54 2024 -0400
Account:      accountname
Resource:     Process Time
Exceeded:     376436 > 1800 (seconds)
Executable:   /usr/lib/systemd/systemd
Command Line: /lib/systemd/systemd --user
PID:          35342 (Parent PID:35342)
Killed:       No

在 csf.piginore 中添加以下 4 行并重新启动 LFD 后,警报仍然会出现。

pcmd: /usr/lib/systemd/systemd
pexe: /usr/lib/systemd/systemd
cmd: (sd-pam)
cmd: /lib/systemd/systemd --user

**编辑** 为 grawity 的答案添加图像。

loginctl 状态

systemctl 状态用户@

systemd
  • 2 个回答
  • 53 Views
Martin Hope
gcb
Asked: 2024-08-01 11:06:29 +0800 CST

systemd 可以在重启之前执行命令吗?

  • 5

这不是关于ExecStartPre

调整服务时的一个用例是在重新启动服务之前测试配置文件。

例如。

$ vim /etc/nginx.conf
$ nginx -t && restart_nginx

与 systemd 相同的是,在发出重新启动命令之前仍然必须记住检查。

有没有什么方法可以防止这种极有可能发生的人为错误?比如?也就是说,在重启的停止步骤之前ExecRestartStopPre执行某些操作?

systemd
  • 1 个回答
  • 30 Views
Martin Hope
user2141650
Asked: 2024-02-29 02:37:03 +0800 CST

在 systemd 服务中运行 systemd-run --user

  • 6

我有一个处理用户输入的 Web 应用程序,作为其中的一部分,运行一些命令来systemd-run --user --scope ...限制内存和 CPU 使用率。

该应用程序在正常运行时运行良好,但是当作为 systemd 服务运行时,我得到:

Failed to connect to bus: No medium found

我需要在单位中做什么才能使该服务启用此功能?

systemd
  • 1 个回答
  • 20 Views
Martin Hope
cdauth
Asked: 2024-02-01 01:01:28 +0800 CST

systemctl --enable 启用套接字而不是服务

  • 5

正如常见的那样,lxd提供了两个 systemd 单元:lxd.socket和lxd.service。lxd.socket启动时,lxd.service只要任何应用程序(例如lxc)尝试访问 lxd 守护程序,它就会启动。

我想lxd在启动时启动,而无需运行任何命令。但是,当我尝试启用 时lxd.service,它会启用lxd.socket:

# systemctl enable lxd.service
Created symlink /etc/systemd/system/sockets.target.wants/lxd.socket → /usr/lib/systemd/system/lxd.socket.

这里发生了什么?我怎样才能启用lxd.service?


系统运行的是 Fedora 39。这些是单元文件:

/usr/lib/systemd/system/lxd.service:

[Unit]
Description=LXD - main daemon
After=network-online.target openvswitch-switch.service lxcfs.service lxd.socket
Requires=network-online.target lxcfs.service lxd.socket
Documentation=man:lxd(1)

[Service]
Environment=LXD_DOCUMENTATION=/usr/share/doc/lxd-doc/html
Environment=LXD_OVMF_PATH=/usr/share/edk2/ovmf
Environment=LXD_UI=/usr/share/lxd-ui/ui
ExecStart=/usr/bin/lxd --group lxd
ExecStartPost=/usr/bin/lxd waitready --timeout=600
KillMode=process
TimeoutStartSec=600s
TimeoutStopSec=30s
Restart=on-failure
LimitNOFILE=1048576
LimitNPROC=infinity
TasksMax=infinity

[Install]
Also=lxd-containers.service lxd.socket

/usr/lib/systemd/system/lxd.socket:

[Unit]
Description=LXD - unix socket
Documentation=man:lxd(1)

[Socket]
ListenStream=/var/lib/lxd/unix.socket
SocketGroup=lxd
SocketMode=0660
Service=lxd.service

[Install]
WantedBy=sockets.target
systemd
  • 1 个回答
  • 34 Views
Martin Hope
user2690527
Asked: 2023-12-02 02:45:10 +0800 CST

如何确保 root fs 可写后启动 system-userdbd.service 而不创建循环依赖?

  • 5

我有一个快速虚拟机,但 systemd 服务systemd-zserdbd.service失败并显示

Dec 01 17:45:32 server-new systemd[1]: Starting systemd-remount-fs.service...

...

Dec 01 17:45:32 server-new (-userdbd)[183]: systemd-userdbd.service: Failed at step NAMESPACE spawning /usr/lib/systemd/systemd-userdbd: Read-only file system
Dec 01 17:45:32 server-new (-userdbd)[185]: systemd-userdbd.service: Failed at step NAMESPACE spawning /usr/lib/systemd/systemd-userdbd: Read-only file system
Dec 01 17:45:32 server-new systemd[1]: Started systemd-journald.service.
Dec 01 17:45:32 server-new (-userdbd)[186]: systemd-userdbd.service: Failed at step NAMESPACE spawning /usr/lib/systemd/systemd-userdbd: Read-only file system
Dec 01 17:45:32 server-new (-userdbd)[187]: systemd-userdbd.service: Failed at step NAMESPACE spawning /usr/lib/systemd/systemd-userdbd: Read-only file system
Dec 01 17:45:32 server-new (-userdbd)[188]: systemd-userdbd.service: Failed at step NAMESPACE spawning /usr/lib/systemd/systemd-userdbd: Read-only file system

...

Dec 01 17:45:32 server-new systemd-fsck[180]: /usr/bin/fsck.xfs: XFS file system.
Dec 01 17:45:32 server-new systemd[1]: Finished systemd-remount-fs.service.

...

Dec 01 17:45:32 server-new systemd[1]: Reached target local-fs-pre.target.

...

Dec 01 17:45:33 server-new systemd[1]: Reached target local-fs.target.

该错误非常明显:systemd-userdbd.service需要可写的根文件系统,但在文件系统重新挂载为可写之前启动。

systemctl edit systemd-userdbd.service --drop-in=wait-for-rw-root因此,我想通过with添加必要的依赖项

[Unit]
Wants=local-fs.target
After=systemd-userdbd.socket systemd-remount-fs.service local-fs.target

但这似乎在启动时创建了循环依赖。重新挂载文件系统需要很长时间,直到 systemd 超时。

  1. 如何确保systemd-userdbd.service在根文件系统变得可写后启动而不创建循环依赖?
  2. (一个更普遍的问题)我如何分析造成循环依赖的原因?
systemd
  • 2 个回答
  • 52 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve