1. 程式人生 > >Linux實現開機自動運行普通用戶腳本

Linux實現開機自動運行普通用戶腳本

Linux 自啟動 腳本 rc 啟動級別

既然要實現開機自動運行腳本,那麽就與Linux開機自啟服務的原理有關;Linux開機的時候,會有一步讀取/etc/inittab配置文件,選定系統運行級別,然後進行系統初始化,執行/etc/rc.d/下的rc腳本;而其中/etc/rc.d/rc.local自啟動腳本是Linux留給用戶自定義個性啟動項的一個腳本。
你只要打開這個腳本文件,看上面的解釋,很明顯的告訴你這個腳本文件的作用。用戶可以在這裏寫入腳本,開機的時候會自動執行該腳本,啟動想要啟動的服務程序。

[root@bogon ~]# cat /etc/rc.d/rc.local 
#!/bin/sh

#This script will be executed *after* all the other init scripts.
#You can put your own initialization stuff in here if you don‘t
#want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
[root@bogon ~]#

方案一:
使用/etc/rc.d/rc.local自啟動腳本文件實現開機自動運行普通用戶腳本
有兩種實現方法:
1、把需要開機啟動的腳本程序直接寫入/etc/rc.d/rc.local文件中,這樣子開機時就會自動執行這些腳本程序,運行對應的服務程序。需要在root環境下編輯
2、先把腳本程序寫好,定義好路徑,然後使用su命令來執行,這裏只需把su命令寫進/etc/rc.d/rc.local腳本文件中即可。
比如:我需要開機執行/home/ricky/bin/ricky.sh腳本,那麽在/etc/rc.d/rc.local中加入以下語句:
[root@bogon~]#echo "su - ricky -c ‘/bin/sh /home/ricky/bin/ricky.sh‘" >>/etc/rc.d/local


命令的執行路徑一定要用絕對路徑,防止因環境變量原因而出錯。

方案二:
我們都了解/etc/init.d/目錄下的所有文件都是腳本文件,這個目錄下的腳本文件,在設置好開機自啟動項後,在開機時會自動執行。
使用root賬號,自啟動腳本編輯腳(隨意寫的一個啟動腳本)

[root@bogon ~]#vim /etc/init.d/networkstart
#!/bin/bash
#network start scripts

#chkconfig: 235 80 30  --235指定的啟動級別,在哪寫啟動級別下啟動;--80 啟動的優先級;--30 關閉的優先級
service network start –-啟動network服務(你也可以把普通用戶腳本放這裏,開機啟動的時候就會執行;也可以定義好腳本路徑,把執行腳本的命令放進這裏)

文件默認是沒有執行權限的,所以要調整好腳本文件權限

[root@bogon ~]# chmod +x /etc/init.d/networkstart

還需要加入啟動項設置開機啟動,使腳本文件生效

[root@bogon ~]# chkconfig --add networkstart 加入啟動項
[root@bogon ~]# chkconfig networkstart on   設置開機自啟動

如果開了防火墻,還得把防火墻關掉

[root@bogon ~]# service stop iptables   關閉防火墻
root@bogon ~]# setenforce 0 關閉SELinux

Linux實現開機自動運行普通用戶腳本