linux開機啟動的三種方式


參考:www.cnblogs.com/gzggyy/archive/2012/08/07/2626574.html

一、/etc/rc.local

其中的rc.local是在完成所有的系統初始化之后執行,因此我們可以把啟動腳本寫到里面。
這是一個最簡單的方法,編輯“/etc/rc.local”,把啟動程序的shell命令輸入進去即可(要輸入命令的全路徑),類似於windows系統“開始”-->“所有程序”-->“啟動”方式 。


rc.local默認root賬號啟動。使用其他賬號啟動的方法是:

su - admin -c '/bin/sh /usr/local/rsync/rsync.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”;
 
每5分鍾執行一次(*/5 * * * * ./haha.sh),如果程序不在了就重新啟動一次。

重啟服務生效:service crond restart
 
三、注冊系統服務
操作系統自帶的服務,如ssh,ftp等等,開機都是自動啟動的,我們也可以通過這種方式讓自己開發的程序提高“身價”。

比如我想把某個已經安裝了的服務添加為系統服務,可以執行以下命令:

把啟動腳本放到目錄/etc/rc.d/init.d下

chkconfig --add 服務名稱          (首先,添加為系統服務,注意add前面有兩個橫杠)

chkconfig -leve 啟動級別 服務名 on         

(說明,3級別代表在命令行模式啟動,5級別代表在圖形界面啟動,on表示開啟)

chkconfig -leve 啟動級別 服務名 off              

(說明,off表示關閉自啟動)

例如:chkconfig -level 3 mysql on                     (說明:讓mysql服務在命令行模式,隨系統啟動)

也可以使用   chkconfig --del 服務名稱    來刪除系統服務

******************************************************************************************

如果要查看哪些服務被添加為系統服務可以使用命令 :

chkconfig --list/chkconfig

 如果要查看哪些程序被添加為自啟動,可以使用命令  :

cat   /etc/rc.local    (查看這個文件中添加了哪些程序路徑)

*******************************************************************************************

 

2018.04.18更新:

對於chkconfig補充一下:

系統服務的啟動腳本(shell腳本)都在這里面:/etc/rc.d/init.d

怎么判斷一個服務是不是系統服務?在這個目錄下的就是系統服務,系統服務名字就是“腳本名字”。系統服務,就可以使用命令行services 服務名字 stop/start/restart

 

看一個redis的自啟動服務腳本配置redisd:從腳本可以看出,腳本里就是配置一下執行文件的命令行路徑,以及PID位置、應用端口等信息,和start、restart、stop操作

注意這條注釋必須有,不然chkconfig沒有辦法對這個服務進行操作:# chkconfig: 2345 90 10

#!/bin/sh
# chkconfig: 2345 90 10
# 90代表Start的順序,10代表Kill(Stop)的順序 # Simple Redis init.d script conceived to work on Linux systems # as it does use of the /proc filesystem. REDISPORT=6379 EXEC=/usr/bin/redis-server CLIEXEC=/usr/bin/redis-cli PIDFILE=/var/run/redis_${REDISPORT}.pid CONF="/etc/${REDISPORT}.conf" case "$1" in start) if [ -f $PIDFILE ] then echo "$PIDFILE exists, process is already running or crashed" else echo "Starting Redis server..." $EXEC $CONF fi ;; stop) if [ ! -f $PIDFILE ] then echo "$PIDFILE does not exist, process is not running" else PID=$(cat $PIDFILE) echo "Stopping ..." $CLIEXEC -p $REDISPORT shutdown while [ -x /proc/${PID} ] do echo "Waiting for Redis to shutdown ..." sleep 1 done echo "Redis stopped" fi ;; *) echo "Please use start or stop as first argument" ;; esac

 

http://www.cnblogs.com/killkill/archive/2010/11/08/1871542.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM