Ubuntu 系統詳解 和 mysql 等軟件開機自啟動


開機自啟動:  系統開機自啟動 和 軟件開機自啟動。(軟件開機自啟動是指隨系統開機自啟動的軟件), 兩者之間的關系:可類比 windows 系統開機自啟動 和 隨系統開機自啟動的軟件。

詳細參考“win7 系統 和 軟件開機自啟動之間的區別

首先了解一下Ubuntu關於啟動項的大致分類,每一類都分為系統級和用戶級

第一類upstart,或者叫job,由init管理,配置文件目錄/etc/init,~/.init

第二類叫service,由rc.d管理,配置文件目錄/etc/init.d,以及/etc/rc.local文件   ---管理進程

第三類叫cron,由contab管理,使用crontab進行配置  ---定期管理

第四類叫startup,由xdg管理,配置文件目錄/etc/xdg/autostart,以及~/.config/autostart

運行命令:runlevel,可以查看自己系統的當前運行等級。

upstart任務適用於runlevel<5的腳本和程序,service任務適用於runlevel<=5的任務,cron任務則不一定,而startup一般工作在runlevel=5,也就是桌面級。

對於普通用戶而言,你的桌面級應用應該使用startup,服務級應用(比如某些功能性的軟件腳本)應該使用service,常規性配置可以使用cron,而與啟動順序有關的最好使用upstart。

開機自動運行程序

Linux加載后, 它將初始化硬件和設備驅動, 然后運行第一個進程init。init根據配置文件繼續引導過程,啟動其它進程。

/etc/rc.local腳本是一個ubuntu系統中自帶的開機腳本,該腳本通常是系統最后啟動的

登錄時自動啟動

用戶登錄時,bash先自動執行系統管理員建立的全局登錄script:/etc/profile.d。

退出登錄時自動運行

退出登錄時,bash自動執行退出登錄腳本: /.bash_logout。
所以只需要修改~/bash_logout,該文件即可,在文件最后加上想要執行的命令

定期自動運行程序

Linux有一個稱為crond的守護程序,主要功能是周期性地檢查 /var/spool/cron目錄下的一組命令文件的內容,並在設定的時間執行這些文件中的命令。用戶可以通過crontab 命令來建立、修改、刪除這些命令文件。

定時自動執行程序

定時執行命令at 與crond 類似(但它只執行一次):命令在給定的時間執行,但不自動重復。at命令的一般格式為:at [ -f file ] time ,在指定的時間執行file文件中所給出的所有命令。

Ubuntu開機后文件執行順序,跟大多數的Linux系統一樣,Ubuntu的開機順序如下:

  1. 加載BIOS,讀取MBR(Main Boot Record)主引導記錄,啟動Boot Manager(啟動引導管理器)
  2. 加載系統內核,啟動init進程,init進程是Linux的根進程,所有的系統進程都是它的子進程。在/etc 下有init和init.d兩個文件夾,init文件夾內都是配置文件,init.d文件夾下都是可執行文件。
  3. 啟動init進程,第一個運行的程序就是/sbin/init 該程序會讀取/etc/inittab文件,但是在Ubuntu下,沒有這個文件,取而代之的是 /etc/init/rc-sysinit.conf,主要作用就是設定Linux運行等級
  4. 首先執行/etc/rcS.d/ 目錄下的啟動腳本,然后是/etc/rc*.d/ 目錄。這里的/etc/rc*.d文件夾的腳本文件的鏈接目標為:/etc/init.d文件夾下的相應腳本(* 為運行的級別,0-6級別。如果您的運行級別為5,則執行 rc5.d )  ,命令:runlevel,查看運行級別。
  5. 根據 /etc/rcS.d/文件夾中對應的腳本,啟動 Xwindow 服務器 xorg,Xwindow 為 Linux 下的圖形用戶界面系統。
  6. 啟動登錄界面,等待用戶登錄。

Ubuntu 設置系統環境變量和開機自啟動

詳細查看博客原文:“開機自啟動

Ubuntu 開機自啟動有4種方式實現,如下:

1、 自動啟動應用程序——rc.local腳本

① 在/etc/init.d/目錄下創建腳本

vi  /etc/init.d/nginx

② 更改腳本權限

chmod 775 /etc/init.d/nginx

③ 編寫腳本內容   

#! /bin/sh
set -e
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="nginx daemon"
NAME=nginx
DAEMON=/usr/local/nginx/sbin/$NAME
SCRIPTNAME=/etc/init.d/$NAME
PIDFILE=/var/run/$NAME.pid

# If the daemon file is not found, terminate the script.
test -x $DAEMON || exit 0
d_start() {
        $DAEMON || echo -n " already running"
}
d_stop() {
        kill -QUIT `cat $PIDFILE` || echo -n " not running"
}
d_reload() {
        kill -HUP `cat $PIDFILE`  || echo -n " could not reload"
}
 
case "$1" in
    start)
echo -n "Starting $DESC: $NAME"
d_start
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME"
d_stop
echo "."
;;
reload)
echo -n "Reloading $DESC configuration..."
d_reload
echo "reloaded."
;;
restart)
echo -n "Restarting $DESC: $NAME"
d_stop
# Sleep for two seconds before starting again, this should give the
# Nginx daemon some time to perform a graceful stop.
sleep 2
d_start
echo "."
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|reload}" >&2
exit 3
;;
esac
exit 0

④ 設置開機啟動

1、sysv-rc-conf是一個強大的服務管理程序

1)運行:# sysv-rc-conf

  #sudo apt-get update

  #sudo apt-get install sysv-rc-conf    ---安裝 sysv-rc-conf

rc.local腳本是一個Ubuntu開機后會自動執行的腳本,在該腳本內添加命令行,開機時會自動執行。

2) 將 nginx 腳本直接加入到系統自動啟動列表中

例如把 /etc/init.d/nginx 加入到系統自動 啟動列表中:  

 運行命令:#sudo sysv-rc-conf nginx on   ---運行完這個命令,rc5.d 目錄中會自動生成一個 S20nginx 的文件。

2、 自動啟動服務——update-rc.d

直接改/etc/rc0.d ~ /etc/rc6.d和/etc/rcS.d下的東西,S開頭的表示啟動,K開頭的表示不啟動,例如:想關閉vsftpd的開機自動啟動,只需sudo mv /etc/rc2.d/S20vsftpd   /etc/rc2.d/K20vsftpd  就可以了。 

經查看,我們當前的啟動級別是5,那么我們進入rc5.d目錄,同時創建啟動腳本,那么開機時就會自動啟動該程序。不過普遍的我們都是在 /etc/init.d/ 目錄下創建該腳本,然后通過軟鏈接到rcN.d目錄下。

3、 啟動應用程序首選項
4、 使用Systemd

5. 將啟動腳本 .sh 文件,放入 rc*.local 文件中

如 

查看系統安裝並運行jdk 的路徑 :運行Linux: java -verbose
JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64  --運行jdk的路徑

JAVA_BIN=$JAVA_HOME/bin

JRE_HOME=$JAVA_HOME/jre

JRE_BIN=$JRE_HOME/bin

PATH=$JAVA_BIN:$JRE_BIN:$PATH

export JAVA_HOME JRE_HOME PATH  

sh /usr/local/tomcat1-8080/bin/startup.sh
sh /usr/local/tomcat2-8081/bin/startup.sh

最后,重啟服務器進行測試,執行命令:reboot -n。reboot -n 命令是服務器
保存數據后關機並重啟

此方法最簡單

 


免責聲明!

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



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