19

Disabling the resource-hogging, data-copying Gnome tracker daemons is much harder than it ought to be. I'm running a recent installation of (stable) Debian 11.2 with Gnome.

One suggestion I found was to edit all /etc/xdg/autostart/tracker-*.desktop files such that

X-GNOME-Autostart-enabled=false (it was true)

Although this allegedly worked for somebody, once upon a time, alas, this change had no discernible effect.

Since I'm running version 2 of the tracker stuff I also tried:

systemctl --user mask tracker-store.service tracker-miner-fs.service tracker-miner-rss.service tracker-extract.service tracker-miner-apps.service tracker-writeback.service

That worked, evidently, although the system log still constantly reports that tracker services are "successful". Maybe those entries are artifacts of how systemd is being configured for tracker services. The problem with that "masking" method turned out to be that the reverse operation (mask -> unmask), to re-enable tracker daemons did not work for me. (Yes, I rebooted, as instructed. Nevertheless, the tracker daemons didn't return to operation.)

6
  • Why do you want to disable those daemons? As far as I gather from the package descriptions they don't track the user, and can't do much unless configured to. But if you really want to, nothing stops you from removing the packages, There is some kind of dependencies from some meta-packages (e.g. gnome) but those just exist to pull in a lot of stuff, the system doesn't stop working if you remove them. Mar 12, 2022 at 8:43
  • 3
    The daemons use system resources that I don't want used for that purpose, obviously. Moreover, they copy data and/or make records of the existence of data. And, contrary to what you say, the packages themselves cannot be removed without disabling Gnome. Just try installing or updating Gnome while prohibiting the tracker packages. It won't work. If, as you say, "[Gnome's tracker package dependencies] just exist to pull in a lot of stuff", why is it impossible to install Gnome without them? And here's my own question: why isn't there a switch for tracker? Mar 13, 2022 at 12:25
  • I only use Gnome under my Kodi (it's probably a waste of resources, but I seldom see that Gnome so I haven't bothered to change it. But I just rebooted that machine after having removed those packages, and Gnome started as normally. There weren't any Gnome packages among those available for upgrade, so I'll claim that I have successfully removed those packages. Mar 14, 2022 at 20:10
  • 2
    I learn a lot by watching the system log. It turns out that tracker is started for a user that does nothing but cron jobs, never logs in, and never starts X, much less Gnome. If the user is running a cron job, tracker will run, too. I find this incomprehensible, obnoxious and wasteful. So I've expanded my policy of providing these masking links. Now I'm doing it for every user who has a home directory that is not '/' or '/nonexistent'. That means almost all system users and package-provided users, as well as all human users. Maybe I can regain control despite using Gnome. Mar 16, 2022 at 15:07
  • 2
    Good reason to disable them: twitter.com/kevin_backhouse/status/1711426803997217020 Oct 27, 2023 at 19:42

6 Answers 6

7

I had the same problem; I disable it doing:

sudo systemctl --global mask tracker-miner-fs-3.service
sudo systemctl --global mask tracker-xdg-portal-3.service

Of course this should prevent the service to start again for all the users; however if you want to stop the current ones, you should kill them.

I am using debian sid.

2
  • Thx, this seems to be the right and simple answer. Worked for me on LMDE6. I deleted about 1GiB of cache using rm -rf ~/.cache/tracker3. I don't understand why this service is enabled by default and why there is no accessible way to disable it. This seems a little crazy to me.
    – mfg
    Mar 25 at 20:37
  • This appears to have worked for me , ubuntu kernel 6.5.0-26 Mar 29 at 15:07
6

It turns out that the whole /etc/xdg/autostart/tracker-*.desktop business was misleading in several ways:

  1. There is not a one-to-one correspondence between the tracker daemons and those files. There were 2 such files but there were 3 daemons.

  2. I discovered the existence/identities of the three daemons only by studying the system log.

  3. The trackers are all in userspace. If the user is not running, the tracker daemons don't run. When, on this advice, I used:

    systemctl --user mask tracker-store.service tracker-miner-fs.service tracker-miner-rss.service tracker-extract.service tracker-miner-apps.service tracker-writeback.service
    

    ... (which as I earlier reported did indeed work), I was creating symlinks in the current user's home directory. In Debian 11/Gnome, these are in ~/.config/systemd/user, for example tracker-extract.service -> /dev/null.

  4. But there's a catch: you have to be logged in as the user whose tracker daemons you wish to disable in order to run systemctl --user .... That's inconvenient for users who are intended to run but not to log in. One such user is Debian-gdm, and evidently by default the tracker daemons run while the gdm greeter is running. Worse, sudo -u thisuser systemctl --user ... refused to work even if I was logged in as root. So, in order to prohibit the tracker daemons from running at all, you must figure out a way to log in as Debian-gdm.

So my current solution to the problem of REALLY disabling the tracker daemons is simply to script the creation and removal of those links in the directories of each affected user. It's important to understand that the names of the symlinks are different depending on whether you're running tracker v2 or v3. It's also important to understand that not all the services named in the above systemctl --user ... are used in all distros. On Debian 11/Gnome, only 3 of the 6 are used, at least so far. It doesn't seem to hurt to mask (create symlinks corresponding to) the unused ones, though.

If the tracker daemons have been running, they have created data whose existence may or may not create security concerns. (Such data are certainly a concern of mine.) To remove these data, the recommended procedure is allegedly:

tracker reset --hard (for v2)
or
tracker3 reset -s -r (allegedly for v3)

But once again, you need to be logged in as the user whose tracker data are to be destroyed. Once again, I found it safer and much easier simply to remove, for each user,

~/.cache/tracker
and
~/.local/share/tracker

or wherever the tracker data happen to be stored.

You may also wish to consider what to do about any prior leakage of verbose tracker reports into the system log.

1
  • I am using Gnome on Arch Linux. For me, there are no tracker-*.service files. While the XDG Autostart desktop files may spawn a whole bunch of processes running under different users, they appear to be the root of all this tracker stuff. The Arch Linux wiki suggests disabling system-wide XDG entries by creating an identical overriding file in the user's local autostart directory. Thus, I created ~/.config/autostart/tracker-miner-fs-3.desktop containing Hidden=true, which really, completely disabled the filesystem crawler on my system.
    – kassiopeia
    Jun 4, 2022 at 7:24
4

Recently I had the same problem in my machine, after fresh install, it takes up CPU resources, making pc slow. My solution is changing its values to let it run but make it unable to do any work. Below is the Script with values to set:

#!/usr/bin/env bash

# make tracker3 daemon non workable & idompotent
# this script will reset its settings, and configure tracker3 daemon, to not let it do anyting.
# if other code has dependency on this tracker, then it will not break, but we also do achieve our goal.

# interpretation  for org.freedesktop.Tracker3.Miner.Files enable-monitor from this file 
# https://gitlab.gnome.org/GNOME/tracker-miners/-/blob/master/src/miners/fs/tracker-config.c

# Time in seconds before crawling filesystem (0->1000)
# looking at source code https://gitlab.gnome.org/GNOME/tracker-miners/-/blob/master/src/miners/fs/tracker-main.c#L406
# it seems like -ve value will starts it right away, so giving max value will make it to wait max before failing
gsettings set org.freedesktop.Tracker3.Miner.Files initial-sleep 1000

# Set to false to completely disable any monitoring
gsettings set org.freedesktop.Tracker3.Miner.Files enable-monitors false

# Sets the indexing speed (0->20, where 20=slowest speed)
gsettings set org.freedesktop.Tracker3.Miner.Files throttle 20

# Set to true to index while running on battery
gsettings set org.freedesktop.Tracker3.Miner.Files index-on-battery false

# Set to true to index while running on battery for the first time only
gsettings set org.freedesktop.Tracker3.Miner.Files index-on-battery-first-time false

# Set to true to enable traversing mounted directories for removable devices (this includes optical discs)
gsettings set org.freedesktop.Tracker3.Miner.Files index-removable-devices false

# Set to true to enable traversing CDs, DVDs, and generally optical media 
# (if removable devices are not indexed, optical discs won't be either)
gsettings set org.freedesktop.Tracker3.Miner.Files index-optical-discs false

# Pause indexer when disk space is <= this value
# (0->100, value is in % of $HOME file system, -1=disable pausing)
# hmm, seems like this line https://gitlab.gnome.org/GNOME/tracker-miners/-/blob/master/src/miners/fs/tracker-main.c#L124
# is misleading, as used by some blog, -ve value disable pausing of tracker, rather then tracker itself,
# and 100 will make it idompotent as any other value is always < 100%
gsettings set org.freedesktop.Tracker3.Miner.Files low-disk-space-limit 100

#  List of directories to crawl recursively for indexing (separator=;)
# Special values include: (see /etc/xdg/user-dirs.defaults & $HOME/.config/user-dirs.default)
#   &DESKTOP\n"
#   &DOCUMENTS\n"
#   &DOWNLOAD\n"
#   &MUSIC\n"
#   &PICTURES\n"
#   &PUBLIC_SH
#   &TEMPLATES\n"
#   &VIDEOS\n"
# If $HOME is the default below, it is because $HOME/.config/user-dirs.default was missing.

# hmm, i think emptying its value will make it work on all dirs, i probably seen that check somewhere
# anyways, redirecting to nonexistent directory will mislead and stop its loop furthur
gsettings set org.freedesktop.Tracker3.Miner.Files index-recursive-directories "['nonexistentdir1']"

# List of directories to index but not sub-directories for changes (separator=;)\n"
# Special values used for IndexRecursiveDirectories can also be used here"

# same with this, as was with index-recursive-directories, but these dirs are removed from index-recursive-directories
# so giving it diff value will be more idompotent to this
gsettings set org.freedesktop.Tracker3.Miner.Files index-single-directories "['nonexixtentdir2']"

# List of directories to NOT crawl for indexing (separator=;)"
# this uses regex, patterns so * will match to everything
gsettings set org.freedesktop.Tracker3.Miner.Files ignored-directories "['*']"

# List of directories to NOT crawl for indexing based on child files (separator=;)"
# this uses regex, patterns so *, *.*, .* will matches to everything
gsettings set org.freedesktop.Tracker3.Miner.Files ignored-directories-with-content "['*', '*.*', '.*']"

# List of files to NOT index (separator=;)"
# this uses regex, patterns so *, *.*, .* will matches to everything
gsettings set org.freedesktop.Tracker3.Miner.Files ignored-files "['*','*.*','.*']"

# Interval in days to check the filesystem is up to date in the database,
# maximum is 365, default is -1.
#   -2 = crawling is disabled entirely
#   -1 = crawling *may* occur on startup (if not cleanly shutdown)
#    0 = crawling is forced
gsettings set org.freedesktop.Tracker3.Miner.Files crawling-interval -2

# Threshold in days after which files from removables devices
# will be removed from database if not mounted. 
#  0 means never, 
#  maximum is 365.
# so, 1 will clear everything, if its stored, daily
gsettings set org.freedesktop.Tracker3.Miner.Files removable-days-threshold  1

# hmm, it didn't explain this key behaviour, so i think making it false will be better, 
# then its default true, As this will disable application indexing
gsettings set org.freedesktop.Tracker3.Miner.Files index-applications false


# explaination based on this file: 
# https://gitlab.gnome.org/GNOME/tracker-miners/-/blob/master/src/libtracker-miners-common/tracker-fts-config.c

# Flag to enable word stemming utility (default=FALSE)
gsettings set  org.freedesktop.Tracker3.FTS enable-stemmer false

# Flag to enable word unaccenting (default=TRUE)
gsettings set  org.freedesktop.Tracker3.FTS enable-unaccent false

# Flag to ignore numbers in FTS (default=TRUE)
gsettings set  org.freedesktop.Tracker3.FTS ignore-numbers true

# Flag to ignore stop words in FTS (default=TRUE)
gsettings set  org.freedesktop.Tracker3.FTS ignore-stop-words true


# explaination based on this file: 
# https://gitlab.gnome.org/GNOME/tracker-miners/-/blob/master/src/tracker-extract/tracker-config.c

# Maximum number of UTF-8 bytes to extract per file [0->10485760]
# min ==> 0 ==> 0b
# max ==> 1024 * 1024 * 10 ==>  10 Mb
# default ==> 1024 * 1024  ==> 1Mb
gsettings set org.freedesktop.Tracker3.Extract  max-bytes 0

# Filename patterns for plain text documents that should be indexed
# empty, as these are whitelisting pattern, or maybe never existent filename pattern
# will also work, like filename that contains new line in it, will make it to never match
# to anything.
gsettings set org.freedesktop.Tracker3.Extract  text-allowlist '[]'

# Wait for FS miner to be done before extracting
# %TRUE to wait for tracker-miner-fs is done before extracting. %FAlSE otherwise
# hmm, true will make it less aggressive, as it will wait for miner to finish which
# itself has 1000s initial delay.
gsettings set org.freedesktop.Tracker3.Extract  wait-for-miner-fs true


# disable its settings in gnome settings also
# populate disable list, disable all apps, and location
gsettings set org.gnome.desktop.search-providers disabled "['org.gnome.Terminal.desktop', 'org.gnome.Settings.desktop', 'org.gnome.Photos.desktop', 'org.gnome.clocks.desktop', 'org.gnome.Calendar.desktop', 'org.gnome.Calculator.desktop', 'org.gnome.Nautilus.desktop']"

# clear enable list
gsettings set org.gnome.desktop.search-providers enabled "[]"

# search path setting is already cleared in "index-recursive-directories"

# disable gnome search indexing itself
gsettings set org.gnome.desktop.search-providers disable-external true


# and finally,
# Application Options:
#  -s, --filesystem     Remove filesystem indexer database
#  -r, --rss            Remove RSS indexer database

tracker3 reset -s -r

# and kill it brutally
tracker3 daemon --kill

Alternatively, checkout this gist of mine: make gnome tracker disable or stop completely.

1
  • Is this reversible?
    – RootRaven
    Sep 20, 2023 at 18:18
3

Why do you want to disable those daemons?

This comment was made above, for me using RHEL 7.9, and now RHEL 8.9, in a work environment users will get a /home/<account>/.cache/tracker folder and we have had this folder get to over 100gb for multiple users who are running various software and simulations and then causing the system to lock up because either the /home partition is full or the entire disk becomes full. This is in addition to cpu being used when it we want 100% cpu to be running on software we are executing. Needless to say, gnome tracker is bad, we don't see any good reason to use it and it has done more harm than good.

Doing a yum remove tracker looks like a no go because of so many dependencies it tries to also remove, the gnome-classic-session being one of them.

in RHEL 8.9 here is the most elegant way I have found to disable it and remove and prevent the .cache/tracker folder from ever reappearing. Create an /etc/profile.d script as shown below, having a .sh or .csh suffix to the filename as appropriate.

# /etc/profile.d/stopgnometracker.sh

# perform for the root account once manually, the if statement here prevents a dbus error message when doing an su or sudo to root

if [ "$LOGNAME" != root ] && [ "`id -u`" -ne 0 ] ; then

 systemctl --user mask tracker-store.service tracker-miner-fs.service tracker-miner-rss.service tracker-extract.service tracker-miner-apps.service tracker-writeback.service > /dev/null  2>&1

  tracker daemon --kill > /dev/null 2>&1

  rm -rf ~/.cache/tracker

fi
1

This is how you completely get rid of it :

sudo apt remove tracker tracker-extract tracker-miner-fs

Did the trick on ubuntu. After that , you can reboot or kill the tracker process(es). His trash will be in .cache folder e.g.

/home/$USER/.cache/tacker*

And can install via

sudo apt install tracker-miner-fs
2
  • 5
    This will also uninstall ubuntu desktop and Nautilus (the visual files broser). I should say so or your comment will break some peoples ubuntu installation
    – Sxubach
    Jun 20, 2023 at 12:38
  • Worked great, after installing cinnamon-desktop-environment and switching to a cinnamon session.
    – moooeeeep
    Sep 22, 2023 at 10:00
1

I kind of redirected the tracker- services to bin/true. It is less invasive. Since they are user-level services, create override directories and override the services in your home, e.g.:

#! /bin/bash
for t in tracker-extract tracker-miner-fs tracker-store tracker-writeback; do
  SVD=${HOME}/.config/systemd/user/${t}.service.d
  if [ ! -d ${SVD} ]; then
    mkdir -p ${SVD}
  fi
cat > ${SVD}/override.conf << EOF
[Service]
Type=
Type=oneshot
ExecStart=
ExecStart=/bin/true
Restart=
Restart=no
EOF
done

I am using debian 11

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .