首页 > 解决方案 > ROS/Linux:linux终端中的“&”到底是什么?

问题描述

我正在与 ROS 合作。要启动 ros-packages,您需要让 ROS Master 在后台运行。现在,当我想启动 ROS 包 rviz 时,而不是打开两个终端: Terminal1:

$ roscore

终端2:

$ rviz

我可以在一个终端中执行以下操作:

$ roscore& rviz

但是这里到底发生了什么?因为当我用它结束那个终端时,Str+C它只会关闭 rivz,但 roscore 会一直在后台运行?为什么以及如何关闭它?

标签: terminalros

解决方案


如果使用 single & 左侧将在后台运行,而右侧将在终端中正常运行。

现在要关闭第一个进程,您需要找到 PID(进程 ID)并执行终止命令,所以首先您需要找到 PID 并且可以使用 pgrep(在您的情况下 PROCESS_NAME 可以是 roscore):

pgrep -f PROCESS_NAME 

现在要终止进程,您可以轻松执行以下操作:

kill -9 PID_HERE

或者您可以通过单个命令来完成:

pgrep -f PROCESS_NAME | xargs kill -9

推荐阅读