Системный модуль systemd не работает при запуске

Я хотел изменить некоторые параметры powertop при запуске Ubuntu 17.04, поэтому я создал сценарий оболочки в /usr/sbin/ и сделал его исполняемым:

#!/bin/sh echo 'min_power' > '/sys/class/scsi_host/host1/link_power_management_policy'; echo 'min_power' > '/sys/class/scsi_host/host2/link_power_management_policy'; echo 'min_power' > '/sys/class/scsi_host/host0/link_power_management_policy'; echo 'min_power' > '/sys/class/scsi_host/host5/link_power_management_policy'; echo 'min_power' > '/sys/class/scsi_host/host3/link_power_management_policy'; echo 'min_power' > '/sys/class/scsi_host/host4/link_power_management_policy'; echo '1' > '/sys/module/snd_hda_intel/parameters/power_save'; echo 'auto' > '/sys/bus/i2c/devices/i2c-0/device/power/control'; echo 'auto' > '/sys/bus/i2c/devices/i2c-1/device/power/control'; echo 'auto' > '/sys/bus/i2c/devices/i2c-2/device/power/control'; echo 'auto' > '/sys/bus/pci/devices/0000:00:1d.0/power/control'; echo 'auto' > '/sys/bus/pci/devices/0000:00:1f.3/power/control'; echo 'auto' > '/sys/bus/pci/devices/0000:00:00.0/power/control'; echo 'auto' > '/sys/bus/pci/devices/0000:00:1f.6/power/control'; echo 'auto' > '/sys/bus/pci/devices/0000:00:02.0/power/control'; echo 'auto' > '/sys/bus/pci/devices/0000:00:14.0/power/control'; echo 'auto' > '/sys/bus/pci/devices/0000:00:1f.4/power/control'; echo 'auto' > '/sys/bus/pci/devices/0000:00:17.0/power/control'; echo 'auto' > '/sys/bus/pci/devices/0000:00:1f.2/power/control'; echo 'auto' > '/sys/bus/pci/devices/0000:00:1c.0/power/control'; echo 'auto' > '/sys/bus/pci/devices/0000:00:1f.0/power/control'; echo 'auto' > '/sys/bus/pci/devices/0000:00:16.0/power/control'; ethtool -s enp0s31f6 wol d exit 0

Затем я сделал служебный блок в /etc/systemd/system :

[Unit] Description=PowerTOP [Service] ExecStart=/usr/sbin/powertop-stup.sh [Install] WantedBy=multi-user.target

и включил его с помощью sudo systemctl enable powertop_start.service, но после перезагрузки он не работает.

Если я запускаю сервис вручную после загрузки с sudo systemctl start powertop_start.service, он работает безупречно. Также, когда я запускаю скрипт оболочки, он работает, но автоматически при загрузке ничего не делает.

5
задан 5 November 2017 в 10:11

2 ответа

Я не знаю, почему ваша служба не работает, но я считаю, что стандартный способ внесения изменений в /sys при загрузке - использовать sysfsutils, поэтому я предлагаю это как альтернативный подход. [ ! d0]

Пакет не может быть установлен по умолчанию, поэтому сначала выполните:

sudo apt install sysfsutils

теперь отредактируйте файл /etc/sysfs.conf, например:

sudoedit /etc/sysfs.conf

и добавьте эти строки в конец

class/scsi_host/host1/link_power_management_policy = min_power class/scsi_host/host2/link_power_management_policy = min_power class/scsi_host/host0/link_power_management_policy = min_power class/scsi_host/host5/link_power_management_policy = min_power class/scsi_host/host3/link_power_management_policy = min_power class/scsi_host/host4/link_power_management_policy = min_power module/snd_hda_intel/parameters/power_save = 1 bus/i2c/devices/i2c-0/device/power/control = auto bus/i2c/devices/i2c-1/device/power/control = auto bus/i2c/devices/i2c-2/device/power/control = auto bus/pci/devices/0000:00:1d.0/power/control = auto bus/pci/devices/0000:00:1f.3/power/control = auto bus/pci/devices/0000:00:00.0/power/control = auto bus/pci/devices/0000:00:1f.6/power/control = auto bus/pci/devices/0000:00:02.0/power/control = auto bus/pci/devices/0000:00:14.0/power/control = auto bus/pci/devices/0000:00:1f.4/power/control = auto bus/pci/devices/0000:00:17.0/power/control = auto bus/pci/devices/0000:00:1f.2/power/control = auto bus/pci/devices/0000:00:1c.0/power/control = auto bus/pci/devices/0000:00:1f.0/power/control = auto bus/pci/devices/0000:00:16.0/power/control = auto

Сохраните файл и выйдите и перезагрузитесь.

Это оставляет вашу команду ethtool, в которой у меня нет решение, но вы можете увидеть, будет ли systemd запускать только эту команду для вас, как описано в этом ответе muru.

2
ответ дан 18 July 2018 в 13:28

Я не знаю, почему ваша служба не работает, но я считаю, что стандартный способ внесения изменений в /sys при загрузке - использовать sysfsutils, поэтому я предлагаю это как альтернативный подход. [ ! d0]

Пакет не может быть установлен по умолчанию, поэтому сначала выполните:

sudo apt install sysfsutils

теперь отредактируйте файл /etc/sysfs.conf, например:

sudoedit /etc/sysfs.conf

и добавьте эти строки в конец

class/scsi_host/host1/link_power_management_policy = min_power class/scsi_host/host2/link_power_management_policy = min_power class/scsi_host/host0/link_power_management_policy = min_power class/scsi_host/host5/link_power_management_policy = min_power class/scsi_host/host3/link_power_management_policy = min_power class/scsi_host/host4/link_power_management_policy = min_power module/snd_hda_intel/parameters/power_save = 1 bus/i2c/devices/i2c-0/device/power/control = auto bus/i2c/devices/i2c-1/device/power/control = auto bus/i2c/devices/i2c-2/device/power/control = auto bus/pci/devices/0000:00:1d.0/power/control = auto bus/pci/devices/0000:00:1f.3/power/control = auto bus/pci/devices/0000:00:00.0/power/control = auto bus/pci/devices/0000:00:1f.6/power/control = auto bus/pci/devices/0000:00:02.0/power/control = auto bus/pci/devices/0000:00:14.0/power/control = auto bus/pci/devices/0000:00:1f.4/power/control = auto bus/pci/devices/0000:00:17.0/power/control = auto bus/pci/devices/0000:00:1f.2/power/control = auto bus/pci/devices/0000:00:1c.0/power/control = auto bus/pci/devices/0000:00:1f.0/power/control = auto bus/pci/devices/0000:00:16.0/power/control = auto

Сохраните файл и выйдите и перезагрузитесь.

Это оставляет вашу команду ethtool, в которой у меня нет решение, но вы можете увидеть, будет ли systemd запускать только эту команду для вас, как описано в этом ответе muru.

2
ответ дан 24 July 2018 в 20:11

Другие вопросы по тегам:

Похожие вопросы: