Linux 如何設定開機、登入與登出自動執行的指令或程式?

這裡介紹如何在 Linux 上設定系統開機、使用者登入與登出時自動執行的指令。

在 Linux 系統上如果想要在開機時自動執行某些指令,或是在使用者登入或登出時,自動執行某些程式,只要將要執行的指令寫在對應的系統設定檔中,就可以輕鬆達到這個效果,以下是幾種常見的設定方式。

Linux 開機自動執行指令

若要讓指定的程式可以在 Linux 開機時自動執行,傳統上的作法就是把指定加在 /etc/rc.local 這個指令稿中,只要放在這裡的指令,在每次 Linux 開機時就會自動被執行。

假設我們有一個自己寫的指令稿,放在 /opt/my_script.sh,若要讓 Linux 系統開機可自動執行的話,首先要確認這個指令稿有執行權限:

chmod +x /opt/my_script.sh

接著在 /etc/rc.local 中加入這一行指令稿:

# 在結尾的 exit 0 之前加入指令稿
/opt/my_script.sh

exit 0

某些 Linux 發行版(例如 Ubuntu)的 /etc/rc.local 最後一行會是 exit 0,若果有這一行的話,在加上自己的指令稿時就要放在這一行之前,如果沒有這一行(例如 CentOS),就把自己的指令稿放在最後即可。

加在 /etc/rc.local 的指令在開機時會以 root 的權限來執行,如果想要改用其他的使用者權限執行的話,可以使用 sudo 來切換成指定的使用者權限:

# 使用 gtwang 這個使用者權限執行
sudo -u gtwang /opt/my_script.sh

使用者登入自動執行指令

若要讓 Linux 系統上的每一位使用者在登入的時候,自動執行某些程式(例如開啟瀏覽器等),可以將要執行的指令寫在 /etc/profile 中,這樣的話設定就會套用至所有的使用者,例如:

/home/gtwang/my_script.sh

這裡同樣記得要確認該指令稿有執行權限:

chmod +x /home/gtwang/my_script.sh

如果只是要讓個別使用者登入執行的程式,就寫在使用者個人的 ~/.bash_profile~/.bash_login 或是 ~/.profile 當中,就看自己的家目錄下所使用的是那一個,就把指令加進去即可,bash 在使用者登入時,會依序尋找這三個檔案,它只會執行第一個找到的那一個,假設 ~/.bash_profile 這個檔案存在,它就會執行這一個,而後面兩個就不管了,以此類推。

這裡所設定的使用者登入自動執行指令,都會以登入的那一位使用者的權限來執行,所以通常比較不會有切換權限的問題。

另外補充一點,/etc/bash.bashrc~/.bashrc 也是很常被使用的 bash 設定檔,這兩個檔案的用途跟上面的 profile 設定檔很類似,不過有些差異:

  • profile 設定檔:登入型 shell(login shell)所執行的指令稿,例如使用者登入。
  • bashrc 設定檔:非登入型 shell 所執行的指令稿,例如開啟終端機視窗。

而通常在 profile 的指令稿中,也會呼叫 bashrc 的指令稿,也就是說如果把指令寫在 bashrc 的指令稿中的話,只要打開互動式的 shell 或是登入時,都會被執行,而如果寫在 profile 中的的話,就真的只有登入時才會執行。

使用者登出自動執行指令

若要設定使用者登出時所要自動執行的程式,可將指令寫在自己的 ~/.bash_logout 指令稿中(如果不存在,就自己建立一個),例如:

/home/gtwang/my_script2.sh

同樣要確認執行權限:

chmod +x /home/gtwang/my_script2.sh

參考資料:Tecmint

Linux

1 留言

  1. 无意间点开发现了一个好站,重在内容

Comments are Closed