0

我想创建一个别名:

  1. 更改目录
  2. 启动redis
  3. 启动节点应用程序

我可以通过创建如下所示的别名来做到这一点:

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

问题是在node myApp.js我杀死 redis 之前这些片段不会运行。有什么方法可以让我在不等待第一个完成的情况下启动两个进程?

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

4

3 回答 3

3

我没有办法对此进行测试,但添加“&”在后台运行 cmd 应该可以工作,即

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

您可能需要添加第二个 &,即

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

因为这会将提示返回给您,您可以继续在命令行下工作。

编辑

有很多方法可以杀死进程,在这里搜索 SO 如果你幸运的话,你就可以做到

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

有很多方法可以解决这个问题,所以你最好检查一下你的特殊情况。

  • 是否还有其他您不想杀死的 redis-server 副本正在运行?
  • 是否有其他节点副本正在运行,然后,您如何区分这些副本。
  • 你如何确保你正在杀死节点的“myApp.js”版本。

如果我要一直这样做,我会startPS变成一个函数来捕获使用“&”返回的 PID,将这些 pid 保存到环境中,然后有一个单独的函数可以确认这些 PID 存在,并且他们很有可能是正确的程序,然后发出杀戮。

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

IHTH。

于 2012-11-27T19:57:13.973 回答
2

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

alias startSP='cd mydirectory ; redis-server & node myApp.js'
于 2012-11-27T19:57:06.893 回答
0

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

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

}

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

于 2012-12-17T07:49:45.190 回答