Не сохраняются изменения в файле

Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Для начала воспользуйтесь поиском форума. 2. Укажите версию ОС вместе с разрядностью. Пример: LM 19.3 x64, LM Sarah x32 3. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 4. Какое железо. (достаточно вывод inxi -Fxz в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 5. Суть. Желательно с выводом консоли, логами. 6. Скрин. Просьба указывать 2, 3 и 4 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
Закрыто
Аватара пользователя

Автор темы
Белый Кролик
Сообщения: 642
Зарегистрирован: 24 май 2018, 14:35
Решено: 10
Благодарил (а): 354 раза
Поблагодарили: 180 раз
Контактная информация:

Не сохраняются изменения в файле

#1

01 июн 2019, 00:43

Приветствую всех форумчан. Столкнулся с проблемой при попытке перезаписать файл /sys/bus/serio/devices/serio1/protocol. Я могу внести изменения только от root'а, но после перезагрузки ноутбука файл возвращается в исходное состояние. Буду весьма признателен если кто-то подскажет как решить эту проблему.

Решение Chocobo » 01 июн 2019, 10:03
Белый Кролик, Автозагрузка силами DE происходит от имени пользователя, разумеется он обламывается по правам.

накидай service-юнит вместо скрипта, для автоматичсекого выполнения от рута на стадии до запуска пользовательских сессий

заведи файлик /lib/systemd/system/serio1-change.service

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

[Unit]
Description=change serio1 protocol onboot

[Service]
ExecStart=/usr/bin/bash -c '/usr/bin/echo -n "SynPS/2" > /sys/bus/serio/devices/serio1/protocol'

[Install]
WantedBy=multi-user.target
затем перечитать изменения
sudo systemctl daemon-reload
включить и добавить в автозагрузку
sudo systemctl start serio1-change.service
sudo systemctl enable serio1-change.service

Перейти к ответу ➙

Аватара пользователя

slant
Сообщения: 4506
Зарегистрирован: 21 июн 2017, 18:09
Решено: 99
Благодарил (а): 51 раз
Поблагодарили: 1993 раза
Контактная информация:

Не сохраняются изменения в файле

#2

01 июн 2019, 01:07

Если подразумевается "чтоб изменения сохранялись после перезагрузки" - ответ: никак. Это не физические файлы на диске.

https://it.wikireading.ru/1978

Если нужно, можно только обеспечить перезапись файла во время загрузки системы, с помощью автоматического запуска соответствующего скрипта, скажем.

Аватара пользователя

Автор темы
Белый Кролик
Сообщения: 642
Зарегистрирован: 24 май 2018, 14:35
Решено: 10
Благодарил (а): 354 раза
Поблагодарили: 180 раз
Контактная информация:

Не сохраняются изменения в файле

#3

01 июн 2019, 01:36

slant писал(а):
01 июн 2019, 01:07
Если подразумевается "чтоб изменения сохранялись после перезагрузки" - ответ: никак. Это не физические файлы на диске.

https://it.wikireading.ru/1978

Если нужно, можно только обеспечить перезапись файла во время загрузки системы, с помощью автоматического запуска соответствующего скрипта, скажем.
Спасибо за ссылку, узнал для себя что-то новое.
Я создал .sh файл с таким содержимым:

!#bin/bash
echo -n "SynPS/2" > /sys/bus/serio/devices/serio1/protocol

Сделал его исполняемым и добавил в автозагрузку, но не сработало. Если пытаюсь запустить в ручную, то в терминале вижу сообщение:

строка 1: !#bin/bash: Нет такого файла или каталога
строка 2: /sys/bus/serio/devices/serio1/protocol: Отказано в доступе

Можете подсказать что я неправильно сделал? Я понял только что файл должен запускаться от root'а, но не знаю как это сделать.

Аватара пользователя

Автор темы
Белый Кролик
Сообщения: 642
Зарегистрирован: 24 май 2018, 14:35
Решено: 10
Благодарил (а): 354 раза
Поблагодарили: 180 раз
Контактная информация:

Не сохраняются изменения в файле

#4

01 июн 2019, 02:14

Зашел под root'ом и добавил этот скрипт в автозагрузку. В сеансе root все заработало. Как бы теперь заставить скрипт выполняться в сессии пользователя?

Аватара пользователя

vir0id
Сообщения: 2757
Зарегистрирован: 19 дек 2017, 18:48
Решено: 15
Откуда: Рига
Благодарил (а): 163 раза
Поблагодарили: 305 раз
Контактная информация:

Не сохраняются изменения в файле

#5

01 июн 2019, 07:00

Белый Кролик писал(а):
01 июн 2019, 01:36
!#bin/bash
В этой строчке забыл слеш поставить

no avatar

Griga211
Сообщения: 405
Зарегистрирован: 01 окт 2016, 15:20
Решено: 2
Благодарил (а): 9 раз
Поблагодарили: 62 раза
Контактная информация:

Не сохраняются изменения в файле

#6

01 июн 2019, 07:47

И ещё ! И # местами поменять.

Аватара пользователя

Автор темы
Белый Кролик
Сообщения: 642
Зарегистрирован: 24 май 2018, 14:35
Решено: 10
Благодарил (а): 354 раза
Поблагодарили: 180 раз
Контактная информация:

Не сохраняются изменения в файле

#7

01 июн 2019, 09:14

vir0id писал(а):
01 июн 2019, 07:00
Белый Кролик писал(а):
01 июн 2019, 01:36
!#bin/bash
В этой строчке забыл слеш поставить
И правда забыл, спасибо.

Аватара пользователя

Автор темы
Белый Кролик
Сообщения: 642
Зарегистрирован: 24 май 2018, 14:35
Решено: 10
Благодарил (а): 354 раза
Поблагодарили: 180 раз
Контактная информация:

Не сохраняются изменения в файле

#8

01 июн 2019, 09:17

Griga211 писал(а):
01 июн 2019, 07:47
И ещё ! И # местами поменять.
Спасибо. Моя внимательность к двум часам ночи куда-то улетучилась.

Аватара пользователя

Автор темы
Белый Кролик
Сообщения: 642
Зарегистрирован: 24 май 2018, 14:35
Решено: 10
Благодарил (а): 354 раза
Поблагодарили: 180 раз
Контактная информация:

Не сохраняются изменения в файле

#9

01 июн 2019, 09:22

В сеансе root все работает. В сеансе пользователя скрипт приходится выполнять в терминале вручную и вводить пароль администратора.
Наверное, чтоб не вводить пароль и автоматизировать запуск, нужно из под администратора прописать этот скрипт в автозагрузку пользователя?

Аватара пользователя

Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3010 раз
Контактная информация:

Не сохраняются изменения в файле

#10

01 июн 2019, 10:03

Белый Кролик, Автозагрузка силами DE происходит от имени пользователя, разумеется он обламывается по правам.

накидай service-юнит вместо скрипта, для автоматичсекого выполнения от рута на стадии до запуска пользовательских сессий

заведи файлик /lib/systemd/system/serio1-change.service

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

[Unit]
Description=change serio1 protocol onboot

[Service]
ExecStart=/usr/bin/bash -c '/usr/bin/echo -n "SynPS/2" > /sys/bus/serio/devices/serio1/protocol'

[Install]
WantedBy=multi-user.target
затем перечитать изменения
sudo systemctl daemon-reload
включить и добавить в автозагрузку
sudo systemctl start serio1-change.service
sudo systemctl enable serio1-change.service
Изображение
   
Изображение

Аватара пользователя

Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3010 раз
Контактная информация:

Не сохраняются изменения в файле

#11

01 июн 2019, 10:15

Нашел еще одно прекрасное решение, https://wiki.archlinux.org/index.php/Sy ... rary_files
У системды оказывается есть свой хендлер для обраюотки динамических файлов. где можно поменять права доступа, содержимое.


заводишь файлик в одну строчку
/usr/lib/tmpfiles.d/serio1-protocol.conf

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

#    Path                  Mode UID  GID  Age Argument
w    /sys/bus/serio/devices/serio1/protocol     -    -    -    -   SynPS/2
А дальше системный менеджер при запуске сделает все сам.
лисапеды с echo вызываемые откуда только выозможно - уходят в небытие, какая прелесть :thumbs:
Правда сам еще не проверял :)
Изображение
   
Изображение

Аватара пользователя

Автор темы
Белый Кролик
Сообщения: 642
Зарегистрирован: 24 май 2018, 14:35
Решено: 10
Благодарил (а): 354 раза
Поблагодарили: 180 раз
Контактная информация:

Не сохраняются изменения в файле

#12

01 июн 2019, 11:10

Chocobo писал(а):
01 июн 2019, 10:03
Белый Кролик, Автозагрузка силами DE происходит от имени пользователя, разумеется он обламывается по правам.

накидай service-юнит вместо скрипта, для автоматичсекого выполнения от рута на стадии до запуска пользовательских сессий

заведи файлик /lib/systemd/system/serio1-change.service

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

[Unit]
Description=change serio1 protocol onboot

[Service]
ExecStart=/usr/bin/bash -c '/usr/bin/echo -n "SynPS/2" > /sys/bus/serio/devices/serio1/protocol'

[Install]
WantedBy=multi-user.target
затем перечитать изменения
sudo systemctl daemon-reload
включить и добавить в автозагрузку
sudo systemctl start serio1-change.service
sudo systemctl enable serio1-change.service
Большое спасибо, теперь заработало! :yahoo:
Только пришлось изменить строку:
ExecStart=/usr/bin/bash -c '/usr/bin/echo -n "SynPS/2" > /sys/bus/serio/devices/serio1/protocol'
на:
ExecStart=/bin/bash -c 'echo -n "SynPS/2" > /sys/bus/serio/devices/serio1/protocol'

Аватара пользователя

Автор темы
Белый Кролик
Сообщения: 642
Зарегистрирован: 24 май 2018, 14:35
Решено: 10
Благодарил (а): 354 раза
Поблагодарили: 180 раз
Контактная информация:

Не сохраняются изменения в файле

#13

01 июн 2019, 11:15

Chocobo писал(а):
01 июн 2019, 10:15
Нашел еще одно прекрасное решение, https://wiki.archlinux.org/index.php/Sy ... rary_files
У системды оказывается есть свой хендлер для обраюотки динамических файлов. где можно поменять права доступа, содержимое.


заводишь файлик в одну строчку
/usr/lib/tmpfiles.d/serio1-protocol.conf

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

#    Path                  Mode UID  GID  Age Argument
w    /sys/bus/serio/devices/serio1/protocol     -    -    -    -   SynPS/2
А дальше системный менеджер при запуске сделает все сам.
лисапеды с echo вызываемые откуда только выозможно - уходят в небытие, какая прелесть :thumbs:
Правда сам еще не проверял :)
Стоит попробовать и такой способ.

Аватара пользователя

Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3010 раз
Контактная информация:

Не сохраняются изменения в файле

#14

01 июн 2019, 12:01

Белый Кролик писал(а):
01 июн 2019, 11:10
Только пришлось изменить строку:
Под рукой только федора, с нее и взял путь к echo :)
Изображение
   
Изображение

Аватара пользователя

Автор темы
Белый Кролик
Сообщения: 642
Зарегистрирован: 24 май 2018, 14:35
Решено: 10
Благодарил (а): 354 раза
Поблагодарили: 180 раз
Контактная информация:

Не сохраняются изменения в файле

#15

01 июн 2019, 14:16

Chocobo писал(а):
01 июн 2019, 12:01
Белый Кролик писал(а):
01 июн 2019, 11:10
Только пришлось изменить строку:
Под рукой только федора, с нее и взял путь к echo :)
У меня на ноутбуке опенсузе, пришлось импровизировать по ходу дела т.к. в сузе еще и файлик пришлось ложить в /usr/lib/systemd/system, а не в /lib/systemd/system. Очень помог советом, еще раз спасибо! :thumbs:

Закрыто

Вернуться в «Иные системные ошибки»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость