天天看點

lnmp_auto:自動化安裝lnmp環境腳本如何判斷目前使用者是否是root使用者如何判斷機器是64位還是32位如何判斷一個組存在,并且這個組内有某個使用者如何将一個目錄内的所有檔案批量軟連接配接到另外一個目錄内在sed中要替換的正則包含/符号和變量$XXX怎麼辦如何注釋一段代碼shell如何進行互動如何關閉selinux如何擷取運作shell的shell檔案夾路徑

朋友找我在一台機器上幫忙安裝下discuz。想着搭建過好幾次的lnmp了,但是還沒有使用過“一鍵安裝”的自動化腳本,去網上有搜尋出來,但是運作的時候發現用root運作别人的腳本還是真危險的事情,于是明白這不是個輪子,而是個井,每個程式員有必要自己挖一口的了。是以想着自己寫個自動化安裝lnmp的腳本lnmp_auto。

1

2

3

4

5

<code>if</code> <code>[</code><code>$uid</code> <code>-ne 0 ]</code>

<code>then</code>

<code>     </code><code>echo</code> <code>"error: you must be root to run the script!"</code>

<code>     </code><code>exit</code> <code>1</code>

<code>fi</code>

有很多種方法,但是如果要輸出最簡單明了的估計是這種方法了:

<code>machine_long_bit=$(getconf long_bit)</code>

6

7

8

9

10

11

12

13

<code>if</code> <code>grep -q mysql /etc/group</code>

<code>     </code><code>echo</code> <code>"mysql group exists"</code>

<code>else</code>

<code>     </code><code>groupadd mysql</code>

<code>if</code> <code>groups mysql | grep -q -e</code><code>' mysql(\s|$)'</code>

<code>     </code><code>echo</code> <code>"mysql user exists"</code>

<code>    </code><code>useradd -r -g mysql mysql</code>

<code>filelist=`ls</code><code>$binary_mysql_path</code><code>/bin`</code>

<code>for</code> <code>filename in</code><code>$filelist</code>

<code>do</code>

<code>     </code><code>ln -sn --force</code><code>$binary_mysql_path</code><code>/bin/</code><code>$filename</code> <code>/bin/</code><code>$filename</code>

<code>done</code>

我們一般使用sed "s/xxxx/oooo/" file來做替換

但是如果xxxx中包含/并且還有可能包含變量的話,就需要将/符号替換成:了

<code>sed -i</code><code>"s:/usr/local/mysql/data:${binary_mysql_path}/data:"</code> <code>mysql.server.init</code>

在shell中注釋一行代碼是#,那麼注釋一段代碼就需要使用:&lt;&lt;block

<code>:&lt;&lt;block</code>

<code>binary_mysql_path=</code><code>"$root_path"</code><code>/binary/mysql</code>

<code>if</code> <code>[ ! -d</code><code>"$binary_mysql_path"</code> <code>]</code>

<code>     </code><code>mkdir</code> <code>-p</code><code>$binary_mysql_path</code>

<code>block</code>

使用read指令将輸出記錄到一個變量中

<code>checkinstall=</code><code>"n"</code>

<code>read -p</code><code>"are you sure want to install php into service?(y/n):"</code> <code>checkinstall</code>

<code>if</code> <code>[</code><code>$checkinstall</code><code>=</code><code>"y"</code> <code>]</code>

<code>…</code>

<code>sed -i</code><code>"s/enforcing/disabled/"</code> <code>/etc/selinux/config</code>

這裡的i參數就是在目前檔案直接做替換,如果覺得不保險可以先做備份

這裡不是擷取目前的路徑(目前路徑直接使用pwd就可以擷取),比如我在/home/yejianfeng,運作sh lnmp_auto/lnmp_auto.sh,如何擷取到lnmp_auto.sh的檔案夾路徑/home/yejianfeng/lnmp_auto/

<code>$(cd</code><code>"$(dirname "</code><code>$0</code><code>")"</code><code>; pwd)</code>