请教一个问题 关于开机自动执行脚本

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
ushi
帖子: 6
注册时间: 2017-07-11 14:54
系统: Ubuntu 14.04

请教一个问题 关于开机自动执行脚本

#1

帖子 ushi » 2017-07-11 15:08

我在raspberry pi 上面安装了ubuntu mate
因为这个东西要放在走廊上面收集某些数据
raspberry pi是连接着一个镭射探测器,而且用的是ROS.
所以每次都要打一堆命令来启动.


所以我想法是每次开机后,
1. 自动打开终端A, 输入命令a (启动ROS)
2. 过几秒后, 自动打开终端B, 输入命令b (ROS命令)
3. 过几秒后, 自动开机终端C, 输入命令c (ROS命令)
4. 过几秒后, 自动开机终端D, 输入命令d (ROS命令)


因为是ROS的问题,我一次要打开至少3 到4个终端


有朋友能帮我解决吗? 谢谢
头像
vickycq
帖子: 4507
注册时间: 2011-03-20 13:12
系统: Debian
来自: 山东省寿光县
联系:

Re: 请教一个问题 关于开机自动执行脚本

#2

帖子 vickycq » 2017-07-11 15:55

ushi 写了:我想法是每次开机后,
1. 自动打开终端A, 输入命令a (启动ROS)
2. 过几秒后, 自动打开终端B, 输入命令b (ROS命令)
3. 过几秒后, 自动开机终端C, 输入命令c (ROS命令)
4. 过几秒后, 自动开机终端D, 输入命令d (ROS命令)
一定要打开四个终端吗?能不能这样

每次开机后,
1. 自动执行命令a (启动ROS)
2. 过几秒后, 自动执行命令b (ROS命令)
3. 过几秒后, 自动执行命令c (ROS命令)
4. 过几秒后, 自动执行命令d (ROS命令)
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户
ushi
帖子: 6
注册时间: 2017-07-11 14:54
系统: Ubuntu 14.04

Re: 请教一个问题 关于开机自动执行脚本

#3

帖子 ushi » 2017-07-12 2:06

vickycq 写了:
ushi 写了:我想法是每次开机后,
1. 自动打开终端A, 输入命令a (启动ROS)
2. 过几秒后, 自动打开终端B, 输入命令b (ROS命令)
3. 过几秒后, 自动开机终端C, 输入命令c (ROS命令)
4. 过几秒后, 自动开机终端D, 输入命令d (ROS命令)
一定要打开四个终端吗?能不能这样

每次开机后,
1. 自动执行命令a (启动ROS)
2. 过几秒后, 自动执行命令b (ROS命令)
3. 过几秒后, 自动执行命令c (ROS命令)
4. 过几秒后, 自动执行命令d (ROS命令)
终端A 里面运行的roscore要一直开启
终端B 里面运行的urg_node也要一直开启

我不知道如果用sh会不会把前面的命令kill了再开始

谢谢
头像
vickycq
帖子: 4507
注册时间: 2011-03-20 13:12
系统: Debian
来自: 山东省寿光县
联系:

Re: 请教一个问题 关于开机自动执行脚本

#4

帖子 vickycq » 2017-07-12 18:43

ushi 写了:要一直开启我不知道如果用sh会不会把前面的命令kill了再开始
实际上,您可以在命令末尾添加 & 符号使命令并行运行。但如果您为了使自动化的效果与手动操作完全一致,如需要在分别打开的几个终端中观察输出,可以在自启脚本中启动多个终端。使用您的终端模拟器提供的 -x 或 -e 参数在启动终端时在其中运行程序。使用方法因终端而异。
例如创建一个脚本

代码: 全选

#!/bin/bash
mate-terminal -t ROSCORE -e roscore &
sleep 5
mate-terminal -t URG_NODE -e "bash -c \"rosrun urg_node urg_node_ip_address:='192.168.0.10'\"" &
sleep 5
mate-terminal -t 命令C -e commandC &
sleep 5
mate-terminal -t 命令D -e commandD &
添加可执行权限后,加入桌面环境的自启。

如果您的命令比较复杂,如包含多组引号,为了避免失误,您可以考虑不使用上面的方法。直接在脚本中执行命令。
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户
回复