有誰知道(資源清單)從我啟動電腦直到再次關閉期間自動運行哪些腳本以及何時運行。
我知道有幾個地方可以添加腳本以自動運行,但我一直無法找出或多或少完整的清單。
例如,我知道這些:
~/.profile
登入時執行- 我可以用來
crontab -e
添加將在特定時間和/或日期觸發的腳本
但我不知道將腳本放在哪裡以便它們被執行
- 啟動後,X 初始化前
- 在 X(或其他圖形 shell)初始化之後,但在任何人登入之前
- 登入 X 會話後
- 快速用戶切換之前/之後
- 在註銷 X 會話之前
- 在 X shell 上關閉之前
- X 關閉後、系統停止前
- 透過 tty-1..6 登入後/登出前
- 透過 SSH 登入後/登出前
有這樣的清單嗎?如果沒有的話,我們可以在這裡組裝一個嗎?
答案1
對於 Ubuntu Linux,我們的解決方案如下:
對於啟動後、X 初始化之前:Ubuntu 從 GDM(使用 ubuntu-desktop 的使用者)或 KDM(使用 kubuntu-desktop 的使用者)啟動 X-Windows
要在 GDM/KDM 之前執行腳本,您必須編寫自己的 upstart 腳本。為此,您可以閱讀新貴食譜。
用戶切換後:您必須將腳本新增到
~/.bashrc
文件中。透過tty登入後:您必須將腳本新增到
~/.bash_profile
文件中。使用 ssh 登入後但不使用 tty 本機登入時:在這種情況下,您還必須在同一文件中新增腳本
~/.bash_profile
,但在這種情況下,測試環境變數是否存在SSH_CONNECTION
,並且僅在發現它存在時才執行命令。通過 tty 註銷之前:您必須將腳本新增到
~/.bash_logout
文件中。透過 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
.
.
.