Не сохраняются изменения в файле
Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 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 раз
- Контактная информация:
Не сохраняются изменения в файле
Приветствую всех форумчан. Столкнулся с проблемой при попытке перезаписать файл /sys/bus/serio/devices/serio1/protocol. Я могу внести изменения только от root'а, но после перезагрузки ноутбука файл возвращается в исходное состояние. Буду весьма признателен если кто-то подскажет как решить эту проблему.
Решение
Перейти к ответу ➙
Белый Кролик, Автозагрузка силами DE происходит от имени пользователя, разумеется он обламывается по правам.
накидай service-юнит вместо скрипта, для автоматичсекого выполнения от рута на стадии до запуска пользовательских сессий
заведи файлик
затем перечитать изменения
включить и добавить в автозагрузку
накидай 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
Перейти к ответу ➙
-
- Сообщения: 4506
- Зарегистрирован: 21 июн 2017, 18:09
- Решено: 99
- Благодарил (а): 51 раз
- Поблагодарили: 1993 раза
- Контактная информация:
Не сохраняются изменения в файле
Если подразумевается "чтоб изменения сохранялись после перезагрузки" - ответ: никак. Это не физические файлы на диске.
https://it.wikireading.ru/1978
Если нужно, можно только обеспечить перезапись файла во время загрузки системы, с помощью автоматического запуска соответствующего скрипта, скажем.
https://it.wikireading.ru/1978
Если нужно, можно только обеспечить перезапись файла во время загрузки системы, с помощью автоматического запуска соответствующего скрипта, скажем.
-
Автор темы - Сообщения: 642
- Зарегистрирован: 24 май 2018, 14:35
- Решено: 10
- Благодарил (а): 354 раза
- Поблагодарили: 180 раз
- Контактная информация:
Не сохраняются изменения в файле
Спасибо за ссылку, узнал для себя что-то новое.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 раз
- Контактная информация:
Не сохраняются изменения в файле
Зашел под root'ом и добавил этот скрипт в автозагрузку. В сеансе root все заработало. Как бы теперь заставить скрипт выполняться в сессии пользователя?
-
Автор темы - Сообщения: 642
- Зарегистрирован: 24 май 2018, 14:35
- Решено: 10
- Благодарил (а): 354 раза
- Поблагодарили: 180 раз
- Контактная информация:
Не сохраняются изменения в файле
-
Автор темы - Сообщения: 642
- Зарегистрирован: 24 май 2018, 14:35
- Решено: 10
- Благодарил (а): 354 раза
- Поблагодарили: 180 раз
- Контактная информация:
-
Автор темы - Сообщения: 642
- Зарегистрирован: 24 май 2018, 14:35
- Решено: 10
- Благодарил (а): 354 раза
- Поблагодарили: 180 раз
- Контактная информация:
Не сохраняются изменения в файле
В сеансе root все работает. В сеансе пользователя скрипт приходится выполнять в терминале вручную и вводить пароль администратора.
Наверное, чтоб не вводить пароль и автоматизировать запуск, нужно из под администратора прописать этот скрипт в автозагрузку пользователя?
Наверное, чтоб не вводить пароль и автоматизировать запуск, нужно из под администратора прописать этот скрипт в автозагрузку пользователя?
-
- Сообщения: 10015
- Зарегистрирован: 27 авг 2016, 22:57
- Решено: 215
- Откуда: НН
- Благодарил (а): 815 раз
- Поблагодарили: 3010 раз
- Контактная информация:
Не сохраняются изменения в файле
Белый Кролик, Автозагрузка силами DE происходит от имени пользователя, разумеется он обламывается по правам.
накидай service-юнит вместо скрипта, для автоматичсекого выполнения от рута на стадии до запуска пользовательских сессий
заведи файлик
затем перечитать изменения
включить и добавить в автозагрузку
накидай 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
-
- Сообщения: 10015
- Зарегистрирован: 27 авг 2016, 22:57
- Решено: 215
- Откуда: НН
- Благодарил (а): 815 раз
- Поблагодарили: 3010 раз
- Контактная информация:
Не сохраняются изменения в файле
Нашел еще одно прекрасное решение, https://wiki.archlinux.org/index.php/Sy ... rary_files
У системды оказывается есть свой хендлер для обраюотки динамических файлов. где можно поменять права доступа, содержимое.
заводишь файлик в одну строчку
А дальше системный менеджер при запуске сделает все сам.
лисапеды с echo вызываемые откуда только выозможно - уходят в небытие, какая прелесть
Правда сам еще не проверял
У системды оказывается есть свой хендлер для обраюотки динамических файлов. где можно поменять права доступа, содержимое.
заводишь файлик в одну строчку
/usr/lib/tmpfiles.d/serio1-protocol.conf
Код: Выделить всё
# Path Mode UID GID Age Argument
w /sys/bus/serio/devices/serio1/protocol - - - - SynPS/2
лисапеды с echo вызываемые откуда только выозможно - уходят в небытие, какая прелесть
Правда сам еще не проверял
-
Автор темы - Сообщения: 642
- Зарегистрирован: 24 май 2018, 14:35
- Решено: 10
- Благодарил (а): 354 раза
- Поблагодарили: 180 раз
- Контактная информация:
Не сохраняются изменения в файле
Большое спасибо, теперь заработало!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
Только пришлось изменить строку:
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 раз
- Контактная информация:
Не сохраняются изменения в файле
Стоит попробовать и такой способ.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 вызываемые откуда только выозможно - уходят в небытие, какая прелесть
Правда сам еще не проверял
-
Автор темы - Сообщения: 642
- Зарегистрирован: 24 май 2018, 14:35
- Решено: 10
- Благодарил (а): 354 раза
- Поблагодарили: 180 раз
- Контактная информация:
Не сохраняются изменения в файле
У меня на ноутбуке опенсузе, пришлось импровизировать по ходу дела т.к. в сузе еще и файлик пришлось ложить в /usr/lib/systemd/system, а не в /lib/systemd/system. Очень помог советом, еще раз спасибо!
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей