我使用 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
编辑:好吧,看起来我可以使用 lightdm.conf 的session-setup-script
选项以 root 身份运行脚本。我的脚本如下,但正如预期的那样,当以 root 身份运行时,它id -u
不再等于 1000,并且 if 语句永远不会执行。是否有我可以用来获取用户名或 ID 的参数或变量?
答案1
计算机启动后,Linux 会运行系统的 crontab 文件中的内容。Cron 是一个程序,用于安排命令、程序或脚本在一天中的特定时间运行。每个用户都有一个 crontab,但在这种情况下,系统的 crontab 适合这样的工作。
您可以配置 cron 在系统启动时执行命令或程序。所以,我认为这就是您的意思。
为了对其进行相应的编辑,您需要通过运行命令来打开系统的 crontab 文件,sudo vim /etc/crontab
可以随意用您最喜欢的 cli 文本编辑器替换“vim”。
在所有其他行下方添加行(将适当的内容替换为您所需的内容,例如命令等)@reboot evrouter
注意:最好的想法可能是创建一个脚本并将命令放入其中,然后使用 crontab 运行该脚本。这真的是您的选择。
根据您的发行版,您可能需要或不需要将要运行命令的人员放在后面。@reboot
大多数情况下,crontab 文件的顶部都会有一些注释来指导您。当然,查看此文件中的其他条目可能对您最有用。
答案2
通过使用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 有时不稳定。