I've got node.js and pm2 installed on a Pi (Raspbian). PM2 was configured to start via pm2 startup
and the init scripts it creates. Sometimes when I reboot, shutdown hangs for a few minutes on:
A stop job is running for LSB: PM2 init script (... / 5min)
Every once in a while1 what I'm assuming is PM2 doesn't shut down properly and hangs for the full 5 minutes.
On this system, I know exactly what apps PM2 is managing and I really don't care if they shutdown properly.
My question is: How do I reduce the timeout from 5 minutes to, say, 15 seconds or so? Where is this configured?
I read on a forum that it was the DefaultTimeoutStopSec
key in /etc/systemd/system.conf, so I tried setting that to "15s" but it had no effect. I tried the same thing in /etc/systemd/user.conf, too, but no change. The timeout is still set to 5 minutes.
1 I actually do know specifically what triggers this, but the details aren't important and the effect is unavoidable.
Best Answer
You re-build systemd from source, patching the hardwired timeout in
systemv-sysv-generator
fromTimeoutSec=5min
to whatever you want. Or you ask the systemd people for a control knob somewhere in the Fedora/SUSE or LSB headers.Or, on the gripping hand, you give up on using this
rc
script that you have and write a systemd service unit for your service, whose timeouts you can set with an explicitTimeoutSec=
setting, installed with a drop-in settings file in/etc/systemd/system/pm2.service.d/timeout.conf
if necessary.Given this, this, this, this, this, and others, the first rule for migrating to systemd applies here as well.
Further reading