1

Я использую evrouter для имитации нажатий клавиш от дополнительных кнопок моих мышек. Это прекрасно работает, но мне нужно запустить команду с sudo, чтобы она работала, поэтому я не могу просто использовать свой DE для обработки автозапуска.

Я рассмотрел init.d, но из того, что я слышал, это работает только для разных этапов загрузки, и мне нужно, чтобы он запускался как root после входа в систему.

$ cat .evrouterrc 
"Logitech G500" "/dev/input/event4" any key/277 "XKey/0"
"Logitech G500" "/dev/input/event4" any key/280 "XKey/9"
"Logitech G500" "/dev/input/event4" any key/281 "XKey/8"
$ sudo evrouter /dev/input/event4

Редактировать: Хорошо, похоже, я могу использовать опцию session-setup-script для lightdm.conf, чтобы запустить скрипт от имени пользователя root. У меня есть скрипт ниже, но, как и ожидалось, при запуске от имени root id -u больше не равен 1000, а оператор if никогда не выполняется. Есть ли аргумент или переменная, которую я могу использовать, чтобы получить имя пользователя или идентификатор?

2 ответа2

0

После загрузки компьютера Linux запускает все, что находится в файле crontab вашей системы. Cron - это программа, которая планирует команды, программы или сценарии для запуска в очень определенное время дня. У каждого пользователя есть crontab, но в этой ситуации crontab системы подходит для такой работы.

Вы можете настроить cron для выполнения команд или программ при загрузке системы. Итак, я думаю, это то, что вы имеете в виду.

Чтобы отредактировать его соответствующим образом, вам нужно открыть файл crontab вашей системы, выполнив команду sudo vim /etc/crontab стесняйтесь заменить `` vim 'на ваш любимый текстовый редактор cli.

Добавьте строку (заменяя соответствующие вещи именно тем, что вам нужно, например, команды и т.д.) Под всеми остальными @reboot evrouter Примечание. Лучшей идеей может быть создание сценария, размещение в нем команд и запуск сценария с помощью crontab. Это действительно твой выбор.

В зависимости от вашего дистрибутива, вы можете или не можете указывать, кому вы хотите, чтобы команда выполнялась, как после @reboot большинстве случаев в файле crontab в верхней части файла есть комментарии, которые проинструктируют вас. Конечно, просмотр других записей в этом файле будет, вероятно, наиболее полезным для вас.

0

Используя значение файла lightdm.conf session-setup-script я смог выполнить команду от имени пользователя root, как и ожидалось.

session-setup-script=/opt/hacks/lightdm-startup

Между тем в другой папке:

#!/bin/bash
if [ "$USER" = "j" ]
then
evrouter /dev/input/event4
fi

Я все еще не уверен, почему == не работал в операторе if и = сделал ... Bash иногда ошибочен.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .