登入後自動以 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 有時不穩定。

相關內容