标签: systemctl

如何从 systemctl 服务日志中查看最新的 x 行

我正在寻找一种方法,可以简单地从 Debian 中的 systemctl 服务打印最后 X 行。我想将此代码安装到脚本中,该脚本使用打印的和最新的日志条目。我找到了这篇文章,但我无法根据我的目的修改它。

目前我正在使用这段代码,它只是给了我一小段日志文件:

journalctl --unit=my.service --since "1 hour ago" -p err
Run Code Online (Sandbox Code Playgroud)

为了举例说明结果应该是什么样子,只需为任何服务输入上面的命令并滚动到日志末尾。然后从底部开始复制最后 300 行。

我的想法是使用 egrep ex。egrep -m 700 .但从现在起我就没有运气了。

systemd journalctl systemctl

65
推荐指数
4
解决办法
13万
查看次数

一个用于启动和启用的 systemctl 命令

使用一个命令来启动和启用systemctl托管软件将有助于在几个脚本中节省几行,使它们更美观(不是真正的问题,而是一件好事)。

是否有一个systemctl命令startenable一个由 控制的程序systemctl

startup shell-script systemd systemctl

33
推荐指数
1
解决办法
3227
查看次数

systemd:无法取消屏蔽根挂载(-.mount)

(分布:Debian 10)

我有一个重复出现的错误消息,主要是在使用 systemctl 时弹出(也在安装包时,偶尔会在其他一些我不知道的地方),

Unit -.mount is masked.
Run Code Online (Sandbox Code Playgroud)

有时(取决于调用错误消息的命令)它更详细,例如

Error: GDBus.Error:org.freedesktop.systemd1.UnitMasked: Unit -.mount is masked.
Run Code Online (Sandbox Code Playgroud)

此错误不会阻止安装软件包或任何已启用的 systemd 服务(因此在启动时加载),但使用systemctlservice重新启动、启动或停止服务会失败。这意味着我必须重新启动整个服务器才能重新启动服务,这可能有点烦人。

尝试取消屏蔽根安装systemctl unmask -- -.mount似乎可以工作(没有返回任何内容),但之后systemctl status -- -.mount仍然输出以下内容:

? -.mount - Root Mount
   Loaded: masked (Reason: Unit -.mount is masked.)
   Active: active (mounted) since Mon 2019-08-05 15:03:38 AEST; 4h 8min ago
    Where: /
     What: /dev/sde1
    Tasks: 0 (limit: 4915)
   Memory: 0B
   CGroup: /system.slice/-.mount
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?我不想从这个服务器的全新安装开始,所以我要么找到修复程序,要么在需要重新加载服务时处理必须重新启动。

debian systemd services systemctl

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

pm 挂起 vs systemctl 挂起?

对于使用 systemd 的 Linux 发行版,这两个命令之间有实际区别吗?

  • systemctl suspend
  • pm-suspend

我应该使用或更喜欢哪个?

suspend systemd pm-utils systemctl

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

`systemctl` 的 --now 开关

手册页所述,

systemctl --now enable servicename
Run Code Online (Sandbox Code Playgroud)

应该启用启动服务。

但在许多不同的发行版下,它对我来说从来没有用过。

而输出:

systemctl is-enabled 启用,

systemctl is-active 该服务仍处于非活动状态。

这个开关有什么用?

我尝试过其他组合,例如:

systemctl enable --now servicename
Run Code Online (Sandbox Code Playgroud)

和:

systemctl enable servicename --now
Run Code Online (Sandbox Code Playgroud)

但还是一样;我systemctl start servicename每次都必须手动,即使上一个命令(即enable部件)成功执行。

应用程序对systemd服务的实现是否应该支持它在单元文件中的某处实现该功能;许多知名服务没有遵循,这让我认为它完全无用;我假设考虑过它。

startup systemd services systemctl

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

systemctl 列出所有可能的(包括禁用的)服务

我有一个源自 /etc/init.d/XX 脚本的“服务”,并为其生成了一个 systemd包装器。它不会在任何运行级别自动启动,并且当我运行时systemctl --allsystemctl list-unit-files --all不会显示在任何列表中。

我的预感是,因为它没有依赖项,尚未启动,所以它没有“加载”到 systemd 中(因此未启用,未加载),因此 systemd 不会列出它。

有没有办法获取所有可能的服务的完整列表,即使是那些尚未启动且未自动启动的服务?或者做systemctl search同等的事情?

此相关问题仅询问将在启动时尝试的服务列表。

“--all”下的man 页面显示systemctl

要列出系统上安装的所有单元,请使用 list-unit-files 命令

但这些禁用的单位不会出现在 的输出中list-unit-files

systemd systemctl

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

非活动与禁用以及活动与启用服务之间的差异

我对启用或活动和禁用或不活动的概念感到困惑。

有人可以解释一下吗?

systemd systemctl exit-status

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

如何在重新启动禁用CUPS服务,systemd?

我经常连接到有很多打印机的网络。当打印机发现正在进行时,GNOME 中会弹出许多分散注意力的消息。我很少使用打印机,所以我更愿意在大部分时间禁用 CUPS。CUPS停止工作,并消除烦人的通知:

systemctl stop cups
Run Code Online (Sandbox Code Playgroud)

我想禁用开机。出人意料的是,后禁用

systemctl disable cups
Run Code Online (Sandbox Code Playgroud)

重启后 CUPS 仍然运行。状态命令

systemctl status cups
Run Code Online (Sandbox Code Playgroud)

产生

? cups.service - CUPS Scheduler
   Loaded: loaded (/lib/systemd/system/cups.service; disabled; vendor preset: enabled)
  Drop-In: /etc/systemd/system/cups.service.d
   Active: active (running) since Tue 2018-11-06 02:35:50 PST; 11s ago
Run Code Online (Sandbox Code Playgroud)

我预计禁用服务将阻止其在重新启动后运行。激活是否因为预设而发生?我试图用 预设“禁用”状态--preset-mode,但没有用。

我的操作系统是Debian的弹力。

systemctl --version
systemd 232
+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN
Run Code Online (Sandbox Code Playgroud)

cups systemd systemctl

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

systemctl 检查单元(服务或目标)是否存在

我想知道是否systemd存在某个单位。

这应该适用于:

  • 任何类型的单元(服务、目标、安装等)
  • 运行、禁用或屏蔽单元

我知道我可以这样做:

systemctl list-unit-files | grep "^my.target"
Run Code Online (Sandbox Code Playgroud)

但感觉必须有更好的方法。

或者,我希望能够通过仅指定my而无需指定“.service”(如其他systemctl命令)来运行此检查,例如

systemctl exists my
Run Code Online (Sandbox Code Playgroud)

systemd systemctl

9
推荐指数
2
解决办法
4920
查看次数

Systemctl status 始终显示完整日志,即使使用 --lines

我正在尝试获取一个单元的状态,但只有前 3 行是这样的:

systemctl --user status resilio-sync --lines=3
Run Code Online (Sandbox Code Playgroud)

我已经用 -n 3 等尝试了各种变体,但没有任何效果。奇怪的部分:它总是显示完整的日志(13 行),而不是 10 行,根据systemctl的文档应该是默认值。

尝试systemctl status证实了这一点:它只是将所有 45 行输出到终端,而实际上应该是 10 行。

我在这里错过了什么吗?据我所知,我没有改变任何东西。

作为一种解决方法,我目前正在使用:

systemctl --user status resilio-sync | sed -ne '1,3p'
Run Code Online (Sandbox Code Playgroud)

但我宁愿解决根本问题并使用本机命令。系统是 Raspberry Pi 上的 Kali Linux(re4son-kernel,粘手指)(很容易归咎于这种奇怪的设置,但由于这是核心 Linux 功能,我认为这无关紧要)

第一个命令的输出

raspberry-pi kali-linux systemctl

8
推荐指数
1
解决办法
3697
查看次数