設定rc.local設定開機自啟無效
阿新 • • 發佈:2021-10-14
專案中設定了/etc/init.d/rc.local 開機啟動後一直沒有效果,後來找到問題是由於系統中存在了兩個rc.local檔案,將其改為寫入到檔案/etc/rc.local即可
1.判斷一下rc.local有無執行許可權,如果沒有chmod +x一下
2.判斷rc.local所處目錄,如果是/etc/init.d目錄下面的需驗證一下/etc/rc.local檔案有沒有如果有的話,判斷一下是不是軟連線,如果不是則只會執行/etc/rc.local檔案了
3.設定開機自啟動的執行語句,如果是/etc/init.d/rc.local 一般解除安裝star()函式前面,如果寫在最後面有可能還沒執行到對應的語句就退出了;如果是/etc/rc.local 直接寫在exit(0)前面即可
/etc/init.d/rc.local
#! /bin/sh ### BEGIN INIT INFO # Provides: rc.local # Required-Start: $all # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: # Short-Description: Run /etc/rc.local if it exist ### END INIT INFO PATH=/sbin:/usr/sbin:/bin:/usr/bin . /lib/init/vars.sh . /lib/lsb/init-functions do_start() { if [ -x /etc/rc.local ]; then [ "$VERBOSE" != no ] && log_begin_msg "Running local boot scripts (/etc/rc.local)" /etc/rc.local ES=$? [ "$VERBOSE" != no ] && log_end_msg $ES return $ES fi } case "$1" in start) do_start ;; restart|reload|force-reload) echo "Error: argument '$1' not supported" >&2 exit 3 ;; stop) ;; *) echo "Usage: $0 start|stop" >&2 exit 3 ;; esac
從註釋可以看出該指令碼執行在2 3 4 5的啟動級別,只能處理start的引數,然後執行start,如果有/etc/rc.local檔案的話則執行/etc/rc.local,
/etc/rc.local
#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. exit 0
這兩個腳本里面都會對應的一些註釋和說明,一定要仔細看一下,很有用!