我想创建一个别名:
- 更改目录
- 启动redis
- 启动节点应用程序
我可以通过创建如下所示的别名来做到这一点:
alias startSP='cd mydirectory; redis-server;node myApp.js'
问题是在node myApp.js
我杀死 redis 之前这些片段不会运行。有什么方法可以让我在不等待第一个完成的情况下启动两个进程?
我应该尝试打开第二个标签来执行此操作吗?
我没有办法对此进行测试,但添加“&”在后台运行 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....
有很多方法可以解决这个问题,所以你最好检查一下你的特殊情况。
如果我要一直这样做,我会startPS
变成一个函数来捕获使用“&”返回的 PID,将这些 pid 保存到环境中,然后有一个单独的函数可以确认这些 PID 存在,并且他们很有可能是正确的程序,然后发出杀戮。
另请注意,这kill -15
是杀死程序的首选方法,使其有机会关闭文件等。
IHTH。
您可以使用代替;
顺序分隔两个进程的&
,它在后台启动一个进程,然后在前台运行另一个进程:
alias startSP='cd mydirectory ; redis-server & node myApp.js'
为什么不向您的个人资料添加功能呢?
startSP(){
cd /your/directory
redis-server && node myApp.js
}
&& 将启动节点 myApp.js 等待 redis-server 启动