capistrano中的指令碼使用

2021-08-22 14:04:05 字數 1149 閱讀 3110

在capistrano的deploy指令碼中,你可以根據實際情況大量使用指令碼,通常是shell指令碼比如

"yourshellcommand"

用起來非常方便,但有點必須注意,如果你的指令碼前後具有很強的依賴性,你因該這麼寫

"command1&&command2"

而不是"command1

""command2"

這是個很細微差別,一般注意不到,結果就是焦頭爛額

比如今天我就幹了件蠢事,我想在某個目錄下,產生乙個配置檔案

於是就"cd#

"run"

scriptforcreatingaconfigurefile"

嘗試了很多次,就是不能產生檔案, 我很奇怪,capistrano我也用了一段時間了,執行指令碼應該是沒什麼問題的,而且老早寫的

"cd#&&mongrel_railscluster::configure-eproduction-p#-n#-c#"

為什麼就是能產生檔案呢,把我的產生檔案的指令碼放到伺服器上測也沒問題,難道遠端執行指令碼有特殊的要求 ,我的指令碼不符合這種特殊的要求?我就把這個指令碼寫成最簡單以至不會出錯的方式,結果還是不行,不得已檢視源**,也沒看出所以然,我一直覺得我的指令碼可能有問題,於是我放棄了用run,我採用了

command="

command1&&command2

"invoke_command

(command

,:via

=>

:run)

居然可行,難道非得這樣用?經過幾次嘗試採用了

"command1&&command2"

的寫法居然可以,後來再看看以前的生成mongrel配置檔案的這種寫法,

看來不是偶然的,我實在沒在意這種寫法,我總覺得這是偷懶的寫法,就好像裝軟體一樣,make && make install分不分開寫沒什麼區別,確實沒什麼區別,但那是在同一臺機器上,前後的語境是連通的,換成目前遠端指令碼的方式,就有差別了,如果寫成兩個遠端命令,前後語境不連通, 所以command1的路徑下肯定不互有commnd2產生的檔案,而且command2並不是沒有產生檔案,僅僅是它不在你希望的目錄而是在~目錄產生了檔案,所以我的前面的那些猜測都是錯誤的,capistrano中的run執行shell指令碼非常好,無需什麼特殊設定,你完全可以通過合適的指令碼來實現高階自動化的部署方案

capistrano中的指令碼使用

在capistrano的deploy指令碼中,你可以根據實際情況大量使用指令碼,通常是shell指令碼比如 yourshellcommand 用起來非常方便,但有點必須注意,如果你的指令碼前後具有很強的依賴性,你因該這麼寫 command1 command2 而不是 command1 command...

Linux中expect自動互動指令碼的使用

最近在一台物理機上同時執行64個虛擬機器進行測試,但每台虛擬機器的操作都是一樣的,所以用指令碼來操作會方便很多,但唯一的問題就是要自動登入64臺虛擬機器後再進行操作,利用expect能解決這個問題。expect是用來進行自動化控制和測試的工具,在ubuntu14的安裝方法是 apt get inst...

windows bat批處理指令碼中命令的使用方法

1.start path 同時開啟多個.exe檔案 cmd start start 2.與檔案路徑有關的一些命令 cmd echo 當前碟符 d0 echo 當前碟符和路徑 dp0 echo 當前批處理全路徑 f0 echo 當前碟符和路徑的短檔名格式 sdp0 echo 當前cmd預設目錄 cd ...