
我正在使用 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 有時不穩定。