创建启动两个进程的bash别名?

时间:2012-11-27 19:53:47

标签: macos bash alias

我想创建一个别名:

  1. 更改目录
  2. 启动redis
  3. 启动节点应用程序
  4. 我能够通过创建如下所示的别名来实现此目的:

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

    问题是node myApp.js件在我杀死redis之前不会运行。有没有办法可以在不等待第一个完成的情况下启动两个进程?

    我是否应该尝试打开第二个标签来执行此操作?

3 个答案:

答案 0 :(得分: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-server副本你不想杀死?
  • 节点的其他副本是否正在运行然后,您如何区分这些副本。
  • 如何确保您杀死“myApp.js”版本的节点。

如果我要一直这样做,我会将startPS变成一个捕获使用'&'返回的PID的函数,将这些pid保存到环境中,然后分开可以确认存在这些PID的函数,并且它们很可能是正确的程序,然后发出kill。

另请注意,kill -15是杀死程序的首选方式,使其有机会关闭文件等。

IHTH。

答案 1 :(得分:2)

而不是按顺序分隔两个进程的;,您可以使用&,它在后台启动一个进程,然后在前台运行另一个进程:

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

答案 2 :(得分:0)

为什么不在您的个人资料中添加功能呢?

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

}

&&将启动make节点myApp.js等待redis-server启动