Ошибка записи сценария Systemctl: операция не разрешенаLinux

Ответить
Anonymous
 Ошибка записи сценария Systemctl: операция не разрешена

Сообщение Anonymous »

Фон
Я хочу включить внешний проектор, подключенный с помощью контакта gpio.
Когда Я запускаю следующие команды, поскольку sudo/root проектор успешно включается без проблем

Код: Выделить всё

echo 48 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio48/direction
echo 1 > /sys/class/gpio/gpio48/value
Проблема
Потому что я не хочу каждый раз подключаться по SSH к своей доске и вручную вставлять эти команды, которые я вставил их в скрипте и поместите в службу systemctl.

Код: Выделить всё

#!/bin/bash
echo 48 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio48/direction
echo 1 > /sys/class/gpio/gpio48/value
exit 0
И затем мою службу systemctl я вызываю этот скрипт:

Код: Выделить всё

[Unit]
Description=Turn on projector by i2c pin

[Service]
Type=simple
ExecStart=/bin/bash /usr/local/sbin/projector.init.sh

[Install]
WantedBy=multi-user.target
Но когда я проверяю состояние службы после загрузки, она выдает недопустимую операцию в строке echo 48 > /sys/class/gpio/export:

Код: Выделить всё

debian@beaglebone:~$ sudo systemctl status projector.init.service
[sudo] password for debian:
● projector.init.service - Turn on projector by i2c pin
Loaded: loaded (/etc/systemd/system/projector.init.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Sun 2024-12-01 19:15:06 UTC; 7min ago
Process: 606 ExecStart=/bin/bash /usr/local/sbin/projector.init.sh (code=exited, status=0/SUCCESS)
Main PID: 606 (code=exited, status=0/SUCCESS)

Dec 01 19:15:05 beaglebone systemd[1]: Started Turn on projector by i2c pin.
Dec 01 19:15:05 beaglebone bash[606]: /usr/local/sbin/projector.init.sh: line 2: echo: write error: Operation not permitted
Dec 01 19:15:05 beaglebone bash[606]: /usr/local/sbin/projector.init.sh: line 3: /sys/class/gpio/gpio48/direction: No such file or directory
Dec 01 19:15:05 beaglebone bash[606]: /usr/local/sbin/projector.init.sh: line 4: /sys/class/gpio/gpio48/value: No such file or directory
Судя по другим сообщениям о stackoverflow, systemctl должен автоматически запускать сценарий от имени пользователя root, что делает еще более странным то, что сценарий выполняется только вручную. При запуске службы вручную с помощью sudo systemctl start projector.init.service проектор также включается.
Кто-нибудь знает, что я делаю неправильно и как я могу выполнить скрипт с полными разрешениями?
Изменить: дополнительная информация
  • Я сделал скрипт исполняемым используя chmod +x
  • Я попробовал добавить +/bin/bash в службу systemctl, как где-то читал, что он будет выполнять скрипт от имени пользователя root
  • Пытался изменить тип службы на oneshot вместо просто


Подробнее здесь: https://stackoverflow.com/questions/792 ... -permitted
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»