关于 terminal 在后台如何运行的问题( Linux , ROS) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
img5d
V2EX    Linux

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

  •  
  •   img5d 2019-07-24 09:17:23 +08:00 5634 次点击
    这是一个创建于 2273 天前的主题,其中的信息可能已经有所发展或是发生改变。
    问题描述:做 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     Solana     3478 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 04:42 PVG 12:42 LAX 21:42 JFK 00:42
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86