Linux如何實現開機啟動程式詳解
核心提示:系統的服務在開機時一般都可以自動啟動,那在linux系統下如果想要程式在開機時自動啟動怎麼辦?我們知道在 windows系統“開始”-->“所有程式”-->“啟動”裡面放個快捷方式就行,那Linux系統下呢?...系統的服務在開機時一般都可以自動啟動,那在linux系統下如果想要程式在開機時自動啟動怎麼辦?我們知道在 windows系統“開始”-->“所有程式”-->“啟動”裡面放個快捷方式就行,那Linux系統下呢?
這也是一個比較簡單的問題,有不少的方法可以解決,這裡介紹三種方法。因為是簡單介紹,所以具體細節不是很詳細,可以通過man看看相關手冊。
一、/etc/rc.local
這是一個最簡單的方法,編輯“/etc/rc.local”,把啟動程式的shell命令輸入進去即可(要輸入命令的全路徑),類似於windows下的“啟動”。
使用命令 vi /etc/rc.local
然後在檔案最後一行新增要執行程式的全路徑。
例如,每次開機時要執行一個haha.sh,這個指令碼放在/opt下面,那就可以在“/etc/rc.local”中加一行“/opt/./haha.sh”,或者兩行“cd /opt”和“./haha.sh”。
二、crontab(類似於windows的任務計劃服務)
通過crontab可以設定程式的執行時間表,例如讓程式在每天的8點,或者每個星期一的10點執行一次。
crontab -l 列出時間表;
crontab -e編輯時間表;
crontab -d刪除時間表;
“-l”沒什麼可說的,就是一個檢視而已;
“-e”是編輯,和vi沒什麼差別(其實就是用vi編輯一個特定檔案);
“-d”基本不用,因為它把該使用者所有的時間表都刪除了,一般都是用“-e”編輯把不要了的時間表逐行刪除;
那到底該如何編輯呢?
crontab檔案的格式是:M H D m d CMD。
一個6個欄位,其中最後一個CMD就是所要執行的程式,如haha.sh。
M:分鐘(0-59)
H:小時(0-23)
D:日期(1-31)
m:月份(1-12)
d:一個星期中的某天(0-6,0代表週日)
這5個時間欄位用空格隔開,其值可以是一個數字,也可以用逗號隔開的多個數字(或其他) ,如果不需設定,則預設為“*”。
例如,每天的8點5分執行haha.sh,就是“5 8 * * * /opt/./haha.sh”。
好像和“開機程式自動啟動”扯遠了,現在迴歸正題。其實上面介紹的crontab的功能已經具備了開機自動啟動的能力,可以寫一個監測指令碼,每5分鐘執行一次(*/5 * * * * ./haha.sh),如果程式不在了就重新啟動一次。
三、註冊系統服務
作業系統自帶的服務,如ssh,ftp等等,開機都是自動啟動的,我們也可以通過這種方式讓自己開發的程式提高“身價”。
比如我想把某個已經安裝了的服務新增為系統服務,可以執行以下命令:
chkconfig --add 服務名稱 (首先,新增為系統服務,注意add前面有兩個橫槓)
chkconfig -leve 啟動級別 服務名 on
(說明,3級別代表在命令列模式啟動,5級別代表在圖形介面啟動,on表示開啟)
chkconfig -leve 啟動級別 服務名 off
(說明,off表示關閉自啟動)
例如:chkconfig -level 3 mysql on (說明:讓mysql服務在命令列模式,隨系統啟動)
也可以使用 chkconfig --add 服務名稱 來刪除系統服務
******************************************************************************************
如果要檢視哪些服務被新增為系統服務可以使用命令 :
ntsysv 或者chkconfig --list
如果要檢視哪些程式被新增為自啟動,可以使用命令 :
cat /etc/rc.local (檢視這個檔案中新增了哪些程式路徑)
*******************************************************************************************
下面舉例說說,如何把一個shell指令碼新增為系統服務,並跟隨系統啟動:
可以看到“/etc/rc.d/init.d”下有很多的檔案,每個檔案都是可以看到內容的,其實都是一些shell指令碼。
系統服務的啟動就是通過“/etc/rc.d/init.d”中的指令碼檔案實現的。我們也可以寫一個自己的指令碼放在這裡。
指令碼檔案的內容也很簡單,類似於這個樣子(例如起個名字叫做“hahad”):
. /etc/init.d/functions
start() {
echo "Starting my process "
cd /opt
./haha.sh
}
stop() {
killall haha.sh
echo "Stoped"
}
寫了指令碼檔案之後事情還沒有完,繼續完成以下幾個步驟:
chmod +x hahad #增加執行許可權
chkconfig --add hahad #把hahad新增到系統服務列表
chkconfig hahad on #設定hahad的開關(on/off)
chkconfig --list hahad #就可以看到已經註冊了hahad的服務
這時候才完成了全部工作。
相關文章
- 計算機那些事(2)——從開機到 Linux 啟動過程詳解計算機Linux
- 如何更改window10開機啟動程式_win10如何修改開機啟動程式Win10
- Linux開機流程詳解Linux
- Linux系統呼叫詳解(實現機制分析)Linux
- linux中透過systemctl建立服務並實現開機啟動Linux
- linux 實現開機自動登陸Linux
- centos(linux): 列出所有的開機自啟動程式CentOSLinux
- Linux 新增開機自啟動Linux
- Linux開機自啟動配置Linux
- linux設定開機啟動Linux
- Linux中如何啟動程式?啟動程式的方法是什麼?Linux
- Linux關機與重啟的命令詳解Linux
- Java網路程式設計和NIO詳解6:Linux epoll實現原理詳解Java程式設計Linux
- C#程式實現軟體開機自動啟動的兩種常用方法C#
- Linux 開機引導和啟動Linux
- 簡述Linux開機啟動流程Linux
- linux系統開機啟動流程Linux
- 【Linux】自定義開機啟動serviceLinux
- Windows開機啟動指定程式Windows
- Android開機自啟動程式Android
- Nginx設定成服務並開機自動啟動的配置詳解Nginx
- CentOS 7 - 配置服務實現開機自啟動CentOS
- linux7 開機自啟動oracleLinuxOracle
- Linux 新增指令碼開機自啟動Linux指令碼
- Linux 下軟體開機自啟動Linux
- Apache DolphinScheduler如何開啟開機自啟動功能?Apache
- 【OEM】Oracle oem取消開機自動啟動(linux)OracleLinux
- Linux詳解 --- 程式管理Linux
- Linux中程式崩潰及重啟的原因詳解!Linux
- linux的啟動配置檔案inittab檔案詳解Linux
- redhat enterprise linux中vsftp開機自啟動RedhatLinuxFTP
- Android 實現開機自啟APPAndroidAPP
- 如何實現手機瀏覽器自動喚醒微信開啟指定頁面瀏覽器
- Linux部署的WGCLOUD的探針agent如何設定開機自啟動LinuxGCCloud
- linux如何開啟pythonLinuxPython
- Linux CentOS開機啟動項設定命令:chkconfigLinuxCentOS
- TongWeb在Linux下設定開機自啟動WebLinux
- Linux MySQL 服務設定開機自啟動LinuxMySql
- Linux Redis 服務設定開機自啟動LinuxRedis