Linux下如何讓自己的程式在開機時自動啟動

2021-08-15 23:31:00 字數 1719 閱讀 7422

系統的服務在開機時一般都可以自動啟動,那我們程式自己寫的程式呢?

windows

系統在「開始」——〉「所有程式」——〉「啟動」裡面放個快捷方式就行,那

linux

下呢?這也是乙個比較簡單的問題,有不少的方法可以解決,這裡介紹三種方法。因為是簡單介紹,所以具體細節不是很詳細,可以通過man看看相關手冊。

一、/etc/rc.local

這是乙個最簡單的方法,編輯「/etc/rc.local」,把啟動程式的shell命令輸入進去即可,類似於windows下的「啟動」。

例如,每次開機時要執行乙個haha.sh,這個指令碼放在/opt下面,那就可以在「/etc/rc.local」中加一行「/opt/./haha.sh」,或者兩行「cd /opt」和「./haha.sh」。

二、crontab

通過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等等,開機都是自動啟動的,我們也可以通過這種方式讓自己開發的程式提高「身價」。

可以看到「/etc/rc.d/init.d」下有很多的檔案,每個檔案都是可以看到內容的,其實都是一些shell指令碼。

系統服務的啟動就是通過「/etc/rc.d/init.d」中的指令碼檔案實現的。我們也可以寫乙個自己的指令碼放在這裡。

指令碼檔案的內容也很簡單,類似於這個樣子(例如起個名字叫做「hahad」):

. /etc/init.d/functions

start()

stop()

寫了指令碼檔案之後事情還沒有完,繼續完成以下幾個步驟:

chmod +x hahad                    #增加執行許可權

chkconfig --add hahad             #把hahad新增到系統服務列表

chkconfig hahad on                 #設定hahad的開關(on/off)

chkconfig --list hahad               #就可以看到已經註冊了hahad的服務

這時候才完成了全部工作。

Linux下如何讓自己的程式在開機時自動啟動

系統的服務在開機時一般都可以自動啟動,那我們程式自己寫的程式呢?windows系統在 開始 所有程式 啟動 裡面放個快捷方式就行,那linux下呢?這也是乙個比較簡單的問題,有不少的方法可以解決,這裡介紹三種方法。因為是簡單介紹,所以具體細節不是很詳細,可以通過man看看相關手冊。一 etc rc....

在Linux下如何使用自己的庫函式

一使用庫必要性 提高 重用性。二庫的種類 1 靜態庫 一般以 a命名。程式編譯時被載入,此後,只要程式不被重新編譯,靜態庫就沒有作用了 可以刪掉 由於靜態庫的 在編譯過程中已經被載入可執行程式,因此體積較大,如果有多個應用程式都用了同乙個靜態庫,在存放可執行程式的硬碟中就會有這個靜態庫的多份拷貝。如...

linux下如何讓程式無法重複啟動

通常情況下乙個程式可以被多次執行,也就存在多個相同的程序。有時候我們有些全域性資源只允許單程序訪問,為了不讓程序多起,要實現程序在一台機器上只能有乙個例項的方法。經查詢,可以使用flock的方式,建乙個lock file,讓程式執行前先檢查是否有執行中的例項,即對檔案加鎖。single progra...