LINUX.ORG.RU

Не работают autostart команды в systemd сервисе

 , , ,


0

1

Создал вручную сервис со следующим содержимым:

/etc/systemd/system/rc-local.service
[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

[Install]
WantedBy=multi-user.target

Создал соответствующий файл:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

swapoff -a
hdparm -S 0 -B 255 /dev/sda
iptables -t mangle -A POSTROUTING -j TTL --ttl-set 65

exit 0

Куда вставил 3 команды, на выключение свопа (включаю вручную при необходимости), отключение APM (чтобы головки жесткого диска не парковались) и замену TTL (для использования телефона в качестве модема). Сервис запустил, включил, статус проверил, все работает, для теста еще добавил команду mkdir /tst. Перезагрузился, в логе увидел сообщение об успешном выключении APM, папка создалась, все вроде бы хорошо. Но когда система уже загрузилась, smartcontrol показал что APM до сих пор включен, TTL тоже не изменился, таким образом корректно отработали только 2 команды: на выключение свопа и создание папки. Почему отключение APM и смена TTL могут не работать?

★★
Ответ на: комментарий от intel
[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local

[Service]
Type=oneshot
ExecStart=/etc/rc.local

[Install]
WantedBy=multi-user.target


Попробуй с таким сервисом. Мне кажется он более правильный.

veyayawet
()
Ответ на: комментарий от veyayawet

Не лишний, это же не скрипт, а legacy-запуск rc.local, насколько я понял. Энивей проблема не в запуске файла, а в том что не все скрипты отрабатывают. При том что в лог загрузки пишется, что все выполнено вполне успешно.

intel ★★
() автор топика
Ответ на: комментарий от veyayawet

Попробую, но проблема мне кажется не в этом.

intel ★★
() автор топика
Ответ на: комментарий от veyayawet

Хотя может быть как-то связяно с приоритетом выполнения.

intel ★★
() автор топика
Ответ на: комментарий от intel

rc.local у тебя обычный скрипт на баше и по-факту никакого отношения не имеет к легаси, кроме названия.

Если бы скрипт был case $1 in start) ... ;; stop) ... ;; esac
То тогда нужно было бы писать ./rc.local start

veyayawet
()
Ответ на: комментарий от intel
less boot.log

:)

А так ты гадаешь на кофейной гуще и ждешь вангу. Не, я понимаю, сезон отпусков кончился и ясновидящие уже по домам и может даже ответят...

sleep воткни чтоб отработало поле после полной загрузки, это если что-то передергивает обратно. Заодно результат выполнения будет в конце журнала (лога, как я показал сохранять) — искать проще.

mandala ★★★★★
()
Последнее исправление: mandala (всего исправлений: 1)

А вообще это рукожопие, так делать.

swapoff -a

sed -i -e '/swap/s/defaults/defaults,noauto/' /etc/fstab

iptables

systemctl is-enabled firewalld && man firewalld.richlanguage || man iptables-save

А для hdparm'а уже отдельный юнит сделать.

Deleted
()
Ответ на: комментарий от Deleted

А для hdparm'а уже отдельный юнит сделать.

Поддерживаю. И его уже отлаживать, логи смотреть, перезапускать.

legolegs ★★★★★
()

В первом посте все очень плохо и бессмысленно! Каждая представленная директива противоречит всему остальному и даже здравому смыслу.

surefire ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.