在Linux中我們常常在/etc/rc.local寫入執行命令或腳本,來實現系統開機啟動功能。但偶爾也會遇到沒有執行的情況,這時候就要來進行調試了。
以下就是調試步驟:
1、確定rc.local具有可執行權限,直接/etc/rc.local看看能不能執行。因為rc.local中已經寫明了“In order to enable or disable this script just change the executionbits.”, 要讓它生效只需要改變它的執行位。
2、看看當前系統的runlevel,再去對應rcX.d看看它的啟動順序,是不是有Src.local的啟動項在這裡面。
3、確認了前面兩項,我們就可以來調試rc.local的內容了,首先第一行,默認一般是#!/bin/sh -e,查下shell編程就知道,這個是用的sh解釋器,-e參數代表出錯後直接退出不執行後面內容。
#!/bin/sh -e
echo
yes
ls
/
echo
no
ls
/ahfjkasf
echo
hahaha
執行以上內容就會發現,hahaha是不會打印的。同時我們也要確認ls -l /bin/sh,來確認sh是對應的哪個解釋器,因為在Ubuntu中,sh是鏈接在dash上。
因此在確認我們使用的SHELL解釋器後,可以將-e 改成 -x或是在第二行加入set -x,這樣就能將整個rc.local的執行過程打印到syslog中了,然後去查找出錯的原因。
在執行某些腳本使用普通的重定向可能不生效,可以試試1 >>/tmp/xxx.log 2>&1這樣的格式。