Transmission-daemon.service: Service has more than one ExecStart= setting / [...] bad unit file setting

The daemon setup worked fine for a month or two, but I since recently the service has failed to start:

transmission-daemon.service: Cannot add dependency job, ignoring: Unit transmission-daemon.service has a bad unit file setting.
transmission-daemon.service: Service has more than one ExecStart= setting, which is only allowed for Type=oneshot services. Refusing.

the related files:

  • /etc/systemd/system/multi-user.target.wants/transmission-daemon.service
  • /etc/systemd/system/transmission-daemon.service.d/override.conf

the content:

[Unit]
Description=Transmission BitTorrent Daemon
After=network.target

[Service]
User=user
Type=notify
ExecStart=/usr/bin/transmission-daemon -f --log-error
ExecReload=/bin/kill -s HUP $MAINPID
NoNewPrivileges=true
Restart=always 

[Install]
WantedBy=multi-user.target

The files differ on the Restart line, the override.conf instead reads:

Restart=on-failure

I’ve intentionally changed the setting in the past by running systemctl edit transmission-daemon.service. How to cleanly resolve this conflict and is this a result of a user error?

Was this installed manually or from an RPM?

The service unit file, from an RPM, should be installed into /usr/lib/systemd/system, not /etc/systemd/system. The file in multi-user.target.wants should be a symlink to the real file, not a separate file.

From the main Fedora repo. I may have created the file manually or moved the original one over.

Sorry, the file /etc/systemd/system/multi-user.target.wants/transmission-daemon.service is a symlink, but /etc/systemd/system/transmission-daemon.service.d/override.conf in turn a (ASCII text) file.

/etc/systemd/system/multi-user.target.wants/transmission-daemon.service: symbolic link to /usr/lib/systemd/system/transmission-daemon.service

/usr/lib/systemd/system/transmission-daemon.service exists, the same content as in the OP.

You should not need that override file at all; if you need to override some of the settings from the packaged service unit file, you need to do it carefully, you cannot just repeat the entire contents of the file :slight_smile:

I suggest removing both of the files that you have under /etc/systemd/system, then run ‘systemctl daemon-reload’, then ‘systemctl enable --now transmission-daemon.service’. That will get the daemon running using the packaged service unit file.

2 Likes

Yes, that’s exactly what I did. systemd appeared to have a higher barrier of entry than other entry-level Linux system maintenance tasks and since cron worked out-of-the-box I decided to try just pasting the contents of the file over when editing (# systemctl edit transmission-daemon.service).

1 Like