13

I'm trying to check if this solution would help me with auto restarting after shutdown.

But command sudo systemctl enable haltusbpower.service is followed by error:

Synchronizing state of haltusbpower.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable haltusbpower update-rc.d: error: haltusbpower Default-Start contains no runlevels, aborting.

My /usr/lib/systemd/system/haltusbpower.service file:

[Unit]
Description=haltusbpower
Before=shutdown.target
DefaultDependencies=no

[Service]
ExecStart=/usr/local/bin/haltusbpower.sh
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=shutdown.target

My /usr/local/bin/haltusbpower.sh script:

#!/bin/bash
for i in /sys/bus/usb/devices/*/power/control;
        do echo on > $i
done

It has execute option:

karol@karol:~$ ls -l /usr/local/bin/haltusbpower.sh
-rwxr-xr-x 1 root root 88 kwi 27 13:03 /usr/local/bin/haltusbpow

Why enabling haltusbpower doesn't work? And what followed error means? I don't understand where to look for errors.

1
  • 2
    I found my answer in this forum thread Long story short I had my old System V (service) file in my /etc/init.d directory so the system was trying to resolve the legacy code as well Dec 8, 2018 at 5:37

3 Answers 3

25

At the top of your /usr/local/bin/haltusbpower.sh script add something like this:

#!/bin/bash
### BEGIN INIT INFO
# Provides:          haltusbpower
# Required-Start:    $all
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:
# Short-Description: Halts USB power...
### END INIT INFO
3
  • 8
    Can you add some explanation to this?
    – Bugs Buggy
    Aug 20, 2018 at 17:20
  • 1
    "haltusbpower" should be replace with your service name. Feb 14, 2019 at 10:29
  • 1
    @BugsBuggy here is the official manual for LSBInitScripts: wiki.debian.org/LSBInitScripts
    – eapo
    Mar 16, 2022 at 2:39
1

I had the same error message but it included a message about missing LSB tags and overrides.

I looked in htop and had multiple processes tailing the log from when I tested the service using /usr/local/bin/./MyService.sh start and /usr/local/bin/./MyService.sh stop. Once I killed these processes it was successful.

The start and stop test command was taken from http://www.jcgonzalez.com/ubuntu-16-java-service-wrapper-example

0

I just wanted to repost the comment attached to original question as an answer since it was resolved my issue.

I had started with a shell script /etc/init.d/kafka and was using that with a start and stop flag. I then wrote a SystemD unit file and placed it in /etc/systemd/system/kafka.service. Many systemctl commands such as systemctl cat kafka and systemctl status kafka show that the unit-file was detected as the latter kafka.service file, yet somehow old one in /etc/init.d conflicted with this. As soon as I removed it, I was able to enable the service.

I cannot find any documentation on this behavior.

You must log in to answer this question.

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