terminal - ROS/Linux:linux终端中的“&”到底是什么?
问题描述
我正在与 ROS 合作。要启动 ros-packages,您需要让 ROS Master 在后台运行。现在,当我想启动 ROS 包 rviz 时,而不是打开两个终端: Terminal1:
$ roscore
终端2:
$ rviz
我可以在一个终端中执行以下操作:
$ roscore& rviz
但是这里到底发生了什么?因为当我用它结束那个终端时,Str+C
它只会关闭 rivz,但 roscore 会一直在后台运行?为什么以及如何关闭它?
解决方案
如果使用 single & 左侧将在后台运行,而右侧将在终端中正常运行。
现在要关闭第一个进程,您需要找到 PID(进程 ID)并执行终止命令,所以首先您需要找到 PID 并且可以使用 pgrep(在您的情况下 PROCESS_NAME 可以是 roscore):
pgrep -f PROCESS_NAME
现在要终止进程,您可以轻松执行以下操作:
kill -9 PID_HERE
或者您可以通过单个命令来完成:
pgrep -f PROCESS_NAME | xargs kill -9
推荐阅读
- javascript - 为什么打字稿不允许在字符串中调用 concat | 字符串[] 类型?
- typescript - 参数名称提示不适用于打字稿静态方法
- android-recyclerview - 如何在运行时突出显示 android recyclerview 项目
- javascript - 从文件夹中获取数组并使用 discord.js 发送随机文件
- firebase - Firebase - Firestore 按时间顺序获取具有地理点和时间戳的数据
- dataset - 如何从 imageNet 下载图像和边界框以使它们具有匹配的名称?
- firebase - _firebase2.default.database.ref 不是函数
- typescript - 打字稿泛型:返回类参数的实例
- apostrophe-cms - 撇号中不同版本的jquery冲突
- makefile - 制作:意外标记'--initialization'附近的语法错误