登录后自动以root身份运行命令

登录后自动以root身份运行命令

我使用 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.confsession-setup-script值,我能够按预期以 root 身份运行该命令。

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

同时,在另一个文件夹中:

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

我仍然不确定为什么==在 if 语句中不起作用并且=确实...... Bash 有时不稳定。

相关内容