为什么“systemctl”没有列出/管理“zeitgeist-daemon”,以及实际上谁做了什么?

为什么“systemctl”没有列出/管理“zeitgeist-daemon”,以及实际上谁做了什么?

上一主题:“zeitgeist-daemon:是什么让它不断重新启动以及如何让它停止?”

更新主题(如果我错了可以恢复):也许,这个问题实际上应该是“为什么 systemctl 没有列出/管理 zeitgeist-daemon,以及实际上是什么/谁做了什么?”,如:任何服务怎么可能不被管理?除非我还不知道如何正确使用它,如果是这样的话我稍后会在这里编辑。

Ubuntu 16.04

自从我安装了它之后,很长一段时间里,我的电脑都很慢,一切都慢得要命。系统负载经常在指示器上很高(这可能是由此引起的另一个问题)。我无法理解到底发生了什么,我以为是我的硬盘、内存有缺陷,或者所有其他正在运行的进程出了问题……

令我惊讶的是,我遵循了以下步骤:

https://nixaid.com/disable-zeitgeist-in-ubuntu-16-17/

主要是sudo apt-get purge zeitgeist-datahub
(我们不能完全卸载 zeitgeist,因为它会卸载 Unity3D/compiz,这很糟糕!)

重启后我的机器速度快了很多!
应用程序打开和运行速度都更快了!

但...

唯一不起作用的是这个命令:
systemctl --user list-unit-files |grep -i zeitgeist
它什么都没有返回。

所以我需要知道,这个可执行文件在哪里配置为继续重启?
zeitgeist-daemon

sudo grep/etc 也没有找到任何内容。

我每 3 秒循环一次zeitgeist-daemon --quit,以使我的旧机器保持快速如新!

但我更喜欢正确地禁用zeitgeist-daemon自动重启。

附言:我尝试了其他答案,但都是针对较旧的 ubuntu 版本或黑客行为(例如重命名该可执行文件,请不要误解我的意思,这很酷,因为它可以快速解决问题,但作为最后的手段,可能会导致与其他应用程序的不可预测的交互,具体取决于正确的设置/配置)。我想要一些更“系统安全”的东西,以防止破坏其他我以后可能难以跟踪和理解的东西。

PS.2:我并不是说 zeitgeist 不好,但是在我的硬件上它确实存在很多问题,我差点就放弃了,买了一台新机器。但是我认为它的功能很棒,可以帮助查看最近使用的文件等,现在我没有这些功能,但是由于我的机器响应速度更快,我现在更加满意了。如果 zeitgeist 可以减少对整个系统的负担,我肯定会重新启用它!


好的,发现了一些东西

locate -i -r ".*zeit.*[.]service$"

/usr/share/dbus-1/services/org.gnome.zeitgeist.fts.service

/usr/share/dbus-1/services/org.gnome.zeitgeist.service Exec = / bin / sh -c“ / usr / lib / x86_64-linux-gnu / zeitgeist / zeitgeist-maybe-vacuum; / usr / bin / zeitgeist-daemon”

现在,如何执行一些其他的安全命令(如systemctl),这些命令实际上知道它并禁用它,以确保不会出现任何其他问题?(当然尽可能确保)


我尝试了这里的所有列出命令(没有显示任何内容grep zeit -i):
https://www.tecmint.com/manage-services-using-systemd-and-systemctl-in-linux/


来自手册页:

EXIT CODES
       0      Zeitgeist terminated normally.
       1      An unspecified error occurred.
       10     There is already a running Zeitgeist instance.
       21     Could not access the database file.
       22     The database file is locked.

使用@Jos 提示(谢谢!)似乎很安全,因为chmod -rw ~/.local/share/zeitgeist/activity.sqlite应该提供预期的代码 21,如果是预期的,那么它是安全的:)

我仍然必须尝试手动编辑我找到的服务文件以查看会发生什么,但如果不使用应用程序来执行此操作,则可能会在以后导致问题......所以手动编辑它不是我喜欢的,只是一个测试。

答案1

正如您的搜索结果所示,这是一项 DBus 服务。据我所知,没有命令可以禁用 DBus 服务 - 当某些东西通过 DBus 请求该服务时,它们就会启动。DBus 问题跟踪器上的这条评论表示禁用它们的一种方法是使用 中的匹配文件覆盖它~/.local/share/dbus-1/services。例如:

$ cat ~/.local/share/dbus-1/services/org.gnome.zeitgeist.Engine.service
[D-BUS Service]
Name=org.gnome.zeitgeist.Engine
Exec=true
SystemdService=zeitgeist.service

这样,文件 zeitgeist-daemon 就不再自动为我启动了。

答案2

这是对已接受答案的补充https://askubuntu.com/a/1051702/46437

这个(仍然很简单)脚本可以轻松禁用任何 dbus 服务

#!/bin/bash

set -Eeu
trap 'echo "error $? at line $LINENO"' ERR

strExecutable="$1"

function FUNCechoE(){
  echo "Err: $@" >&2
  return 0
}

function FUNCechoW(){
  echo "Wrn: $@" >&2
  return 0
}

strMatches="`egrep "$strExecutable" /usr/share/dbus-1/services/* -c |grep -v :0`" &&: #returns 1 always even if succeeds??
declare -p strMatches
if((`echo "$strMatches" |wc -l`!=1));then
  FUNCechoE "more than one match found"
  exit 1
fi

strFile="`echo "$strMatches" |sed -r 's@(.*)(:[[:digit:]]*)@\1@'`"
declare -p strFile
if [[ ! -f "$strFile" ]];then
  FUNCechoE "can't find file"
  exit 1
fi

function FUNCcoldf() {
  colordiff -y "$strFile" "$strTargetFL"&&:
  return 0
}

strTargetFL="$HOME/.local/share/dbus-1/services/`basename "$strFile"`"
declare -p strTargetFL
if [[ -f "$strTargetFL" ]];then
  FUNCcoldf
  FUNCechoW "disabler override already set"
  exit 0 #not a problem to be solved
fi

cat "$strFile" |sed 's@Exec=.*@Exec=true@' >"$strTargetFL"
FUNCcoldf

输入参数是您可以通过ps等找到的服务可执行文件

目前还不适用于所有服务,所以如果有人找到让它更好地工作的方法,只要说出来就可以了:)

附言:元答案嵌套会很有趣

相关内容