開機自啓動文件/etc/rc.local的一件小事

好幾天沒有寫博客了,現在也很晚了一直要求自己要早睡可是總也做不到。不扯了說一件今天碰到的一個小問題,可能對高手來說都不是問題但是對於我這種剛接觸linux而且也沒什麼老師就靠自己學的還真的就沒什麼小問題。還真的整整弄了1個多小時。事情的背景是這樣的我最近在研究服務器的實時數據備份inotify+rsync經過這段時間可以說基本搞定了,看到好多地方都在說用sersync好像更好一些就下了一個配置了一下感覺還真的非常方便在命令行都設置啓動/home/oldboy/tools/GNU-Linux-x86/sersync2 -r -d -o /home/oldboy/tools/GNU-Linux-x86/confxml.xml之後測試都沒問題之後我就直接把這個命令拷貝到了/etc/rc.local(先交代一下我的/etc/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
/etc/init.d/rpcbind start
mount -t nfs 192.168.56.139:/data /nfs_192.168.56.139
#/home/oldboy/tools/GNU-Linux-x86/sersync2 -r -o /home/oldboy/tools/GNU-Linux-x86/confxml.xml
/bin/sersync2 -r -d -o /home/confxml.xml

)裏邊之後reboot在系統重新啓動後在測試就不能同步了,不知道什麼原因我的排錯步驟是這樣的:
第一步:我以爲拷貝錯了就把/etc/rc.local這裏的拷貝在命令行上在測試就正常了證明沒有拼寫錯誤
第二步:我以爲在/ect/rc.local中不能用太長的路徑就這麼操作的
ln -s /home/oldboy/tools/GNU-Linux-x86/sersync2 /bin/sersync2
ln -s /home/oldboy/tools/GNU-Linux-x86/confxml.xml /home/confxml.xml
在把/etc/rc.local中的內容改爲sersync2 -r -d -o /home/confxml.xml
但還是失敗了證明不是這個問題
第三部:我爲了測試就在我的這條命令前後個加了一條就變成這樣
/bin/touch /home/000
sersync2 -r -d -o /home/confxml.xml
/bin/touch /home/111
之後在重新啓動發現在home目錄下面沒有000和111這兩個文件證明都沒有運行於是我就在看了上一條就是mount -t nfs 192.168.56.139:/data /nfs_192.168.56.139發現只要把這條註釋掉那麼就可以運行了證明這個/etc/rc.local不是沒有運行我的配置文件,而是停止在了mount這裏也就是說如果網絡文件系統沒有掛載上就一直等在那裏因爲我的網絡文件系統的機器沒開也就是說mount命令就能讓系統的命令一直掛在那裏後來我查了一下好像是說nfs系統默認掛載的是有個hard方式這個方式就是一直在那裏嘗試掛載所有後邊的就不運行。
總結:
1、/etc/rc.local裏邊要運行的時候不是說你寫了就肯定能運行它也其實就是一個運行的程序也很容易掛起來(就是停止在那裏)
2、向mount這種(hard方式)東西最好是放在最後邊這樣就不影響其他的
我不知道說明白沒有,反正我自己是有點感觸。

還有一個問題如果把sersync的配置文件confxml.xml改的有語法錯誤了系統好像也是啓動不了的,反正我改錯了之後實驗了一下就沒能啓動但是可以單用戶模式進去之後把這個文件修復又恢復正常了。因爲我改的時候多加了個逗號在重啓就看那個啓動界面就老停止在watch data:這個地方進度條也不往前走了所以我用單用戶模式進去改了一下就可以了。(懷疑和這個有關係但是還不確定,反正大家改的時候儘量小心點吧)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章