1、首先編寫一個簡單的shell指令碼
vimtest.sh(不習慣使用vim可以使用nano)
進入vim後按i鍵,然後輸入(#!/bin/sh符號#!用來告訴系統它後面的參數是用來執行該檔案的程式。)
#!/bin/bash echo"Helloworld!"filename=`date"+%Y%m%d"` echo$filename
然後先Esc再shift+z兩次(儲存)
在命令列輸入:
chmod +x test.sh (賦予執行許可權)
運行:
./test.sh
查看命令的路徑:whichls(假設查看ls命令的路徑)
#後面的內容表示注釋,要養成寫注釋的良好習慣
更多shell編程知識 shell編程簡介
2、設定指令碼開機自啟動
方案一:
編輯 /etc/init.d/rc.local 檔案,在最後加上你的指令碼即可。
比如:我已經編寫了一個指令碼apk.sh,存放在/home/apk/下面
在Ubuntu終端輸入:
sudo nano /etc/init.d/rc.local 在結尾出加入:
sh /home/apk/shell.sh //即可開機自動載入指令碼
方案二:
1) 將你的啟動指令碼複製到 /etc/init.d目錄下
sudo cp test.sh /etc/init.d/
2)執行如下命令將指令碼放到啟動指令碼中去:
cd /etc/init.d
sudo chmod 755 /etc/init.d/test.sh
sudo update-rc.d test.sh defaults95
註:其中數字95是指令碼啟動的順序號,按照自己的需要相應修改即可。在你有多個啟動指令碼,而它們之間又有先後啟動的依賴關係時你就知道這個數位具體作用了。該命令的輸出資訊參考如下:
update-rc.d: warning: /etc/init.d/test missing LSB information
update-rc.d: see
卸載啟動指令碼的方法:
cd /etc/init.d
sudo update-rc.d -f test.shremove
注意事項:
開始我使用forever命令寫了一個指令碼,如下:
#!/usr/local/bin/forever
forever start /home/apk/apkAnalysis/app.js
可是不論我使用什麼方法它都啟動不起來,後來發現它少了一個sudo許可權:
#!/usr/local/bin/forever
sudo forever start /home/apk/apkAnalysis/app.js
所以在配置開機啟動的時候一定要注意sudo的使用。
查看系統啟動的日誌:cat /var/log/boot.log
開始是一直都起不來,看了下日誌,發現檔案不存在;登入之後查看檔案是存在的,可能是執行啟動指令碼的時候使用者目錄還沒有mount上來
然後把工程放到srv目錄下面就可以開機自啟動了。
改一下許可權
sudo chmod 775 /srv/