Commit graph

17 commits

Author SHA1 Message Date
AJ Jordan bab389114b
Use a service unit, not a scope unit, to restart
Reportedly `systemd-run --scope` still got killed by the service
manager; see #4615. The suspected cause is that `scope` units are run by
the `systemd-run` process itself and inherit the caller's execution
environment (see systemd-run(1)). To fix this, we use a systemd
`service` unit instead, which is run and managed by PID 1 - hopefully
this will isolate us sufficiently so that we don't get terminated along
with `jellyfin.service`.
2020-12-04 16:33:24 -08:00
AJ Jordan d251c701b9
Use systemd-run(1) in restart.sh
systemd-run(1) runs `systemctl restart` in an isolated systemd unit
that is not subject to process termination as jellyfin.service is shut
down. We adjust the sudoers configuration for this new usage, removing
the old config, since restart.sh is the only user of the sudoers
policy.

Additionally we change `systemctl start` to `systemctl restart` since
there was a race condition where jellyfin.service was not fully
stopped by the time this ran, so `systemctl start` became a noop.
`systemctl restart` on the other hand works whether jellyfin.service is
stopped or not.

The at(1) hack (and the usage of `start` instead of `restart`) is left
in for other init systems since I cannot test on those systems, and
because I don't know of any systemd-run(1) equivalent (although it may
be a non-issue since alternate init systems do not keep track of daemon
children nearly as aggressively as systemd does).
2020-12-04 16:18:26 -08:00
AJ Jordan 2911dfc37d
Don't restart with sudo(8) if it's not available
Some environments, like system containers, have no reason to have
sudo(8) installed. In these environments restart.sh will silently fail
because /usr/bin/sudo does not exist to execute, so test that sudo
exists and don't try to use it otherwise.

Note also that hardcoding sudo's path is wrong: it can be installed in
other places. On FreeBSD, for example, it is /usr/local/bin/sudo when
installed from ports.
2020-11-29 04:04:38 -05:00
AJ Jordan ce82932c9a
Remove useless which(1) calls in restart.sh
at(1) runs commandlines with /bin/sh anyway, which resolves paths. No
need to do it ourselves.
2020-11-29 04:04:22 -05:00
AJ Jordan a4e1732e35
Fix restart.sh to look at what's actually booted
The old code was wrong because e.g. systemd can be *installed* on the
system, but not actually used as PID1. In that case we would pick
`systemctl`, but it wouldn't actually work because PID1 was some other
init system.
2020-11-29 03:43:03 -05:00
Joshua M. Boniface 6de79e03a2 Go back to at with lower sleep and start 2020-11-22 18:32:16 -05:00
Joshua M. Boniface 97665c9478 Remove the at now hack 2020-11-22 17:19:39 -05:00
Joshua M. Boniface 1079ddb46c Run explicit service start if restart failed
Should solve the occasional bugs with the restart in the WebUI.
Sometimes the service stops and then doesn't start again; this will run
an explicit start action afterwards. If this doesn't fix it I'm certain
there would be more tweaking that can be done.
2020-11-22 17:12:29 -05:00
Joshua M. Boniface 7eac368486 Fix missing restart script 2020-04-09 11:55:44 -04:00
Erwin de Haan 399a079dd4 Build scripts and build system consolidation.
Squashed commit.
2019-01-10 19:45:30 +01:00
Joshua Boniface 7d0f5b6259 Organize supplementary files better 2018-12-09 21:58:01 -05:00
Joshua Boniface 972008d1dc Remove obsolete binary 2018-12-09 21:54:45 -05:00
Joshua Boniface e9122b76ff A few more missing replacements of Emby 2018-12-09 19:09:43 -05:00
Joshua Boniface a9a798f81a Rename numerous debian control elements
Replace the name emby/emby-server with jellyfin everywhere.
2018-12-09 19:05:33 -05:00
Joshua M. Boniface 3557b90f10 Revert "Debian packaging improvements" 2018-12-09 18:45:08 -05:00
Joshua Boniface 8fcec19936 Rename numerous debian control elements
Replace the name emby/emby-server with jellyfin everywhere.
2018-12-09 16:51:38 -05:00
Joshua Boniface d8c22ca1cb Add binary script which was missing due to gitignore 2018-10-22 01:59:28 +03:00