自動運行的腳本(位置)清單以及何時運行?

自動運行的腳本(位置)清單以及何時運行?

有誰知道(資源清單)從我啟動電腦直到再次關閉期間自動運行哪些腳本以及何時運行。

我知道有幾個地方可以添加腳本以自動運行,但我一直無法找出或多或少完整的清單。

例如,我知道這些:

  • ~/.profile登入時執行
  • 我可以用來crontab -e添加將在特定時間和/或日期觸發的腳本

但我不知道將腳本放在哪裡以便它們被執行

  • 啟動後,X 初始化前
  • 在 X(或其他圖形 shell)初始化之後,但在任何人登入之前
  • 登入 X 會話後
  • 快速用戶切換之前/之後
  • 在註銷 X 會話之前
  • 在 X shell 上關閉之前
  • X 關閉後、系統停止前
  • 透過 tty-1..6 登入後/登出前
  • 透過 SSH 登入後/登出前

有這樣的清單嗎?如果沒有的話,我們可以在這裡組裝一個嗎?

答案1

對於 Ubuntu Linux,我們的解決方案如下:

  1. 對於啟動後、X 初始化之前:Ubuntu 從 GDM(使用 ubuntu-desktop 的使用者)或 KDM(使用 kubuntu-desktop 的使用者)啟動 X-Windows

    要在 GDM/KDM 之前執行腳本,您必須編寫自己的 upstart 腳本。為此,您可以閱讀新貴食譜

  2. 用戶切換後:您必須將腳本新增到~/.bashrc文件中。

  3. 透過tty登入後:您必須將腳本新增到~/.bash_profile文件中。

  4. 使用 ssh 登入後但不使用 tty 本機登入時:在這種情況下,您還必須在同一文件中新增腳本~/.bash_profile,但在這種情況下,測試環境變數是否存在SSH_CONNECTION,並且僅在發現它存在時才執行命令。

  5. 通過 tty 註銷之前:您必須將腳本新增到~/.bash_logout文件中。

  6. 透過 ssh 註銷之前:您必須在~/.bash_logout文件中新增腳本,但在這種情況下,也要測試SSH_CONNECTION環境變數是否存在,並且僅在發現它存在時才執行命令。在文件中,您必須新增行

    if [[ -n $SSH_CONNECTION ]]

答案2

如果您對 Linux 內建任務感興趣,您也可以參考 Linux 運行級別,它是實作 Unix System V 風格初始化的操作模式。

  • 0 停止 關閉系統。
  • 1 單一使用者模式 用於管理任務的模式。
  • 2 多用戶模式 不配置網路接口,也不匯出網路服務。
  • 3 具有網路的多用戶模式 正常啟動系統。
  • 4 未使用/使用者可定義 用於特殊目的。
  • 5 使用適當的顯示管理器正常啟動系統。 (使用 GUI)作為運行等級 3 + 顯示管理器。
  • 6 重新啟動 重新啟動系統。

例如,您可以在下方看到 Linux 進程及其運行層級設定的部分清單:

chkconfig --list
acpid           0:off   1:off   2:on    3:on    4:on    5:on    6:off
anacron         0:off   1:off   2:on    3:on    4:on    5:on    6:off
atd             0:off   1:off   2:off   3:off   4:off   5:off   6:off
auditd          0:off   1:off   2:off   3:off   4:off   5:off   6:off
autofs          0:off   1:off   2:on    3:on    4:on    5:on    6:off
avahi-daemon    0:off   1:off   2:off   3:off   4:off   5:off   6:off
avahi-dnsconfd  0:off   1:off   2:off   3:off   4:off   5:off   6:off
.
.
.

相關內容