Linux開機自啟動的幾種方式:
1.chkconfig
以supervisord服務腳本為例:
第1步:把上面的腳本放在/etc/init.d/文件
ln -s ./supervisord /etc/init.d/supervisord
第2步:將啟動腳本權限改為可執行。
chmod
a+x /etc/init.d/supervisord
第3步:添加啟動項。
chkconfig --add supervisord
chkconfig supervisord on
第4步:檢查是否設置成功。
chkconfig --list | grep supervisord supervisord 0:關閉 1:關閉 2:啟用 3:啟用 4:啟用 5:啟用 6:關閉
2、手動配置在文件中加入啟動命令
/etc/rc.local
3、文件指向路徑是/etc/init.d下的腳本文件
/etc/rc[0-6].d
0-6是linux操作系統的運行級別,運行runlevel查看當前運行級
運行級別0:系統停機狀態,系統默認運行級別不能設為0,否則不能正常啟動
運行級別1:單用戶工作狀態,root權限用戶,用於系統維護,禁止遠程登陸
運行級別2:多用戶狀態(沒有NFS)
運行級別3:完全的多用戶狀態(有NFS),登陸后進入控制台命令行模式
運行級別4:系統未使用,保留
運行級別5:X11控制台,登陸后進入圖形GUI模式
運行級別6:系統正常關閉並重啟,默認運行級別不能設為6,否則不能正常啟動
/etc/rc[0-6].d目錄下文件的命名規則:S|K + nn + script
S|K,S開頭命名的是開機要執行的腳本,K開頭命名的是關機要執行的腳本
nn取值0-100,表示優先級,數字越大,優先級越低
script是軟鏈接指向的腳本的文件名
/etc/init.d目錄下的控制腳本接受參數
-- start //啟動
-- stop //停止
-- restart //重啟
-- status //狀態
-- force-reload //重新載入配置
update-rc.d命令為/etc/init.d目錄下的腳本建立或刪除到/etc/rc[0-6].d的軟鏈接
增加一個服務
添加這個服務並讓它開機自動執行
update-rc.d apache2 defaults
並且可以指定該服務的啟動順序:
update-rc.d apache2 defaults 90
還可以更詳細的控制start與kill順序:
update-rc.d apache2 defaults 20 80
其中前面的20是start時的運行順序級別,80為kill時的級別。也可以寫成:
update-rc.d apache2 start 20 2 3 4 5 . stop 80 0 1 6 .
其中0~6為運行級別。
刪除一個服務
update-rc.d -f apache2 remove
4、 設置程序的.desktop文件
通過將應用程序的.desktop文件放在自啟動目錄下,那么當用戶登陸桌面環境時,就會自動啟動這些應用程序。
linux中自啟動目錄是$XDG_CONFIG_DIRS/autostart和$XDG_CONFIG_HOME/autostart這兩個,可以打印看一下,有的可能只有其中一個。
把設置好的.desktop放在這兩個目錄下,那么指定的程序就會在桌面環境啟動時啟動,當兩個自啟動目錄同時存在相同的文件時,只會運行其中一個($XDG_CONFIG_HOME)。
program.desktop文件寫法:
[Desktop Entry]
Name=program
Exec=/usr/bin/program
Type=Application
Comment=my program
只需要有這關鍵的幾行就可以了,Exec的路徑一定要正確。.desktop文件還有其他定制項,可參考其他文章。
5、crontab定時執行任務
周期執行的任務一般由cron這個守護進程來處理[ps -ef|grep cron]
cron的配置文件稱為“crontab”,是“cron table”的簡寫
service crond start //啟動服務
service crond stop //關閉服務
service crond restart //重啟服務
service crond reload //重新載入配置
service crond status //查看服務狀態
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
每兩個小時
0 */2 * * * echo "Have a break now." >> /tmp/test.txt
crontab -l //在標准輸出上顯示當前的c
crontab -r // 刪除當前的crontab文件。
crontab -e //使用VISUAL或者EDITOR環境變量所指的編輯器編輯當前的crontab文件,當結束編輯離開時,編輯后的文件將自動安裝。
除了數字還有幾個個特殊的符號就是"*"、"/"和"-"、",",*代表所有的取值范圍內的數字,"/"代表每的意思,"/5"表示每5個單位,"-"代表從某個數字到某個數字,","分開幾個離散的數字。