V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
img5d
V2EX  ›  Linux

关于 terminal 在后台如何运行的问题( Linux , ROS)

  •  
  •   img5d · 2019-07-24 09:17:23 +08:00 · 5197 次点击
    这是一个创建于 1948 天前的主题,其中的信息可能已经有所发展或是发生改变。
    问题描述:做 ROS 途中,有一个需求,需要点击一个写好的 bottom,蹦出 rviz. (实际是调用 launch 文件启动 rviz ) 但是现在 rviz 可以启动,随之反馈信息的 terminial 也会一起蹦出来,如何让 terminal 不显示,藏在后台里。
    28 条回复    2019-07-24 13:34:05 +08:00
    nullboy
        1
    nullboy  
       2019-07-24 09:46:18 +08:00
    &
    strongwong
        2
    strongwong  
       2019-07-24 09:57:21 +08:00
    你在这里问 ros 的问题,可能没有多少人玩这个吧。当然这也不算是一个 ros 问题。。。
    你试试这样写 roslaunch 那条启动项
    roslaunch xxx......xxx &
    或者这样运行你的脚本
    nohup ./xxxx.sh &
    img5d
        3
    img5d  
    OP
       2019-07-24 09:59:34 +08:00
    @nullboy @strongwong 试过了都不管用 谢了
    itfanr
        4
    itfanr  
       2019-07-24 10:11:25 +08:00
    别用 launch 自己写 ros run 或者自己重写一下 rviz 的启动部分 哈哈
    tankren
        5
    tankren  
       2019-07-24 10:15:53 +08:00
    提个 ticket 给官方 前提你是 正版用户
    img5d
        6
    img5d  
    OP
       2019-07-24 10:17:51 +08:00
    @itfanr run 成功过 ,但是项目必须要启动 launch..
    img5d
        7
    img5d  
    OP
       2019-07-24 10:19:51 +08:00
    @itfanr 是否可以后台运行 terminal ? 谢谢
    loading
        8
    loading  
       2019-07-24 10:34:24 +08:00 via Android
    了解一下 screen 命令
    tongsucn
        9
    tongsucn  
       2019-07-24 11:49:55 +08:00
    同楼上,screen 或者 tmux: https://github.com/tmux/tmux/wiki
    chinvo
        10
    chinvo  
       2019-07-24 11:52:00 +08:00 via iPhone
    @tankren #5 这里的 ros 应该是指开源的 robot os

    @img5d 那个 terminal 是 rviz 的 log,目前没发现能关掉的办法
    SaberJack
        11
    SaberJack  
       2019-07-24 11:54:36 +08:00 via Android
    用 gazebo 啊
    rubber
        12
    rubber  
       2019-07-24 12:04:27 +08:00
    你所说的点击一个 Button,然后启动 rviz,这个 Button 是用什么做的,Qt?然后你启动 rviz 现在用的是什么具体方法?

    我所了解的是 roslaunch 是用 python 写的一个 script,然后帮你启动 ROS 的节点,用子进程运行的话,并不会显示的启动 terminal 的。
    jihu9001
        13
    jihu9001  
       2019-07-24 12:05:16 +08:00 via Android
    screen
    img5d
        14
    img5d  
    OP
       2019-07-24 12:17:37 +08:00
    @rubber 对的 用 qt.PY 做的一个 GUI 简单的界面, 按下这个按钮,启动这个 launch 文件,然后就蹦出来 rviz。

    您说的那个 用子进程运行 怎么理解啊 有点听不懂

    我是不是可以这样理解:现在我点击 bottom 然后蹦出 rviz 是一个主进程 ?

    请指教
    img5d
        15
    img5d  
    OP
       2019-07-24 12:18:26 +08:00
    @chinvo 如果不关掉,只是让它不显示出来可以吗?隐藏或者后台运行等。
    chinvo
        16
    chinvo  
       2019-07-24 12:19:53 +08:00 via iPhone
    @img5d #15 没有研究过这种需求,我之前做过的项目都是 web 控制,所以不会把桌面暴露给用户
    img5d
        17
    img5d  
    OP
       2019-07-24 12:26:14 +08:00
    @chinvo 对 我就是不想把 terminal 暴露给用户 ,请给点思路,如何用 web 控制?我现在就是 qt+python+执行程序 ,不太懂 web 控制的思路。
    rubber
        18
    rubber  
       2019-07-24 12:26:53 +08:00
    @img5d 对,我的想法是在你的 qt.PY 程序里面点按钮之后,开个进程跑你的 launch 文件。

    但我比较好奇的是,现在你在按下按钮后,具体执行了什么命令,启动你的 launch 文件,会跳出一个终端。难道是显示调用了 xfce4-terminal `cmd`?
    chinvo
        19
    chinvo  
       2019-07-24 12:28:11 +08:00 via iPhone
    @img5d #17 在你的自定义脚本里面嵌入个 web.py 或者其他什么东西,把动作封装成 http api trigger,然后提供个静态页面调用这些 http api
    img5d
        20
    img5d  
    OP
       2019-07-24 12:35:50 +08:00
    @rubber os.system("gnome-terminal -e 'bash -c \"roslaunch xxx.launch; exec bash\" ' ") 用的这样一个命令,打开的 launch 文件。然后 launch 文件里内容比较简单,就是把 rviz 启动起来。
    img5d
        21
    img5d  
    OP
       2019-07-24 12:36:15 +08:00
    @chinvo 谢谢 完全不会 有机会试一试。
    wweir
        22
    wweir  
       2019-07-24 12:47:55 +08:00
    Ctrl + z
    bg
    disown
    rubber
        23
    rubber  
       2019-07-24 12:53:57 +08:00
    @img5d 不需要加 gnome-terminal,特意开个终端启动的,你直接 os.system("roslaunch xxx.launch")就好,最好再加个输出重定向。
    rubber
        24
    rubber  
       2019-07-24 12:58:33 +08:00
    @rubber 不好意思这样会阻塞,应该参照二楼的写法
    Chyxs
        25
    Chyxs  
       2019-07-24 13:01:56 +08:00 via iPhone
    ./xxx >& /dev/null &
    统统消失
    dangyuluo
        26
    dangyuluo  
       2019-07-24 13:02:18 +08:00
    开启另一个进程吧,然后移交控制权吧。我也是用 ROS2 的,但是没有做 GUI 开发。
    img5d
        27
    img5d  
    OP
       2019-07-24 13:15:59 +08:00
    @rubber 23 楼这个答案 开始是这么写的 然后执行文件无法启动 我再找找方法吧 谢谢你啊
    wly19960911
        28
    wly19960911  
       2019-07-24 13:34:05 +08:00
    我干脆丢到 screen 里面去算了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2751 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 11:43 · PVG 19:43 · LAX 03:43 · JFK 06:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.