2012-11-27 27 views
0

我想創建一個別名:創建啓動兩個進程的bash別名?

  1. 變化目錄
  2. 開始Redis的
  3. 啓動節點應用

我能夠像一個創建別名要做到這一點如下:

alias startSP='cd mydirectory; redis-server;node myApp.js' 

問題是,node myApp.js作品不會運行,直到我殺死redis。有什麼方法可以啓動兩個進程而無需等待第一個完成?

我應該試圖打開第二個選項卡來執行此操作嗎?

回答

3

我沒有辦法測試這一點,但加上「&」來運行CMD在後臺應該工作,即

alias startSP='cd mydirectory ; redis-server & node myApp.js' 

你可能會希望添加第二&,即

alias startSP='cd mydirectory ;redis-server & node myApp.js &' 

因爲這會返回提示給你,你可以繼續在你的命令行工作。

編輯

有很多方式來殺死進程,搜索這裏S.O.如果你幸運的話,你可以做

pkill redis-server 
    pkill node ...? hm.... 

有很多方法可以讓這個錯誤,所以你會做得更好,檢查你的具體情況。

  • 是否還有其他副本運行的redis服務器,你不想殺死?
  • 是否有其他節點運行的副本,然後,你如何區分這些副本。
  • 你如何確定你正在殺死'myApp.js'版本的節點。

如果我打算做這一切的時候,我會變成startPS成捕獲的PID功能,從使用「&」返回,保存那些PID的環境,然後有一個單獨的功能可以確認那些PID是否存在,並且他們很有可能是正確的程序,那麼就發出殺手。

還要注意,kill -15是殺程序的首選方式,給它機會,關閉文件等

IHTH。

+0

真棒!如果我返回到命令行,我將如何在完成後終止進程? –

+0

@AbeMiessler:看我的編輯。你會在這裏找到很多關於S.O的討論。用於便捷的方式來殺死應用程序VS快速和骯髒的方法。 – shellter

2

相反的;,其依次分隔兩個過程,你可以使用&,其在後臺啓動一個進程,然後在前臺運行,另:

alias startSP='cd mydirectory ; redis-server & node myApp.js' 
0

爲什麼不添加功能到您的個人資料呢?

startSP(){ 
cd /your/directory 
    redis-server && node myApp.js 

}

的& &將開始使節點myApp.js等待Redis的服務器啓動

+0

這樣做比使用別名有什麼好處? –