[英]How to run two shell scripts at startup?
我正在使用Ubuntu 16.04,并且有两个Shell脚本:
我需要两个脚本在系统启动后立即执行。
我使两个脚本@reboot /path/to/run_roscore.sh; /path/to/run_detection_node.sh
执行,然后将以下命令添加到cron: @reboot /path/to/run_roscore.sh; /path/to/run_detection_node.sh
@reboot /path/to/run_roscore.sh; /path/to/run_detection_node.sh
,但是它没有运行。
我还尝试使用以下命令将这两个脚本添加到“ 启动应用程序”中 :roscore: sh /path/to/run_roscore.sh
以及以下用于检测节点的命令: sh /path/to/run_detection_node.sh
。 而且它仍然不起作用。
如何使这些脚本运行?
编辑:我使用以下命令来查看CRON进程的系统日志: grep CRON /var/log/syslog
并获得以下输出:
CRON[570]: (CRON) info (No MTA installed, discarding output)
。
所以我安装了MTA,然后系统日志显示: CRON[597]: (nvidia) CMD (/path/to/run_roscore.sh; /path/to/run_detection_node.sh)
我仍然看不到输出(应该是带有检测的摄像机流,就像我在终端中直接运行脚本时看到的那样)。 我应该如何进行?
自从我最终完成这项工作以来,我将在这里回答我自己的问题。
我执行了以下步骤来使脚本从启动运行:
.bash
)。 #!/bin/bash
。 bash path/to/script
运行脚本。 基本上,当我将shell类型从sh
更改为bash
,脚本会在系统启动时立即开始运行。
请注意,如果这对某人有帮助:我希望将run_roscore.bash
作为单独的脚本运行是将roscore作为后台进程运行。 通过在rosnode启动之前将roscore roscore&
作为命令,可以从单个脚本(也正在运行检测节点)直接运行它。 该命令将启动主机作为后台进程,并保持同一终端打开以执行以下命令。
如果您可以安装不朽 ,则可以使用require
选项按顺序启动服务,例如,这可以是/etc/immortal/script1.yml
的运行配置:
cmd: /path/to/script1
log:
file: /var/log/script1.log
wait: 1
require:
- script2
对于/etc/immortal/script2.yml
cmd: /path/to/script2
log:
file: /var/log/script2.log
这将完成它会尝试启动开机时间这两个脚本,第一个script1
将等待1秒开始之前,也等待script2
要运行起来,看到更多的wait
和require
在此选项: https://开头immortal.run/post/immortal/
根据您的操作系统,您将需要配置/设置immortaldir ,这是在Linux上的配置方法: https : //immortal.run/post/how-to-install/
要深入探讨主管的话题,您可以在这里找到更多替代方案: https : //en.wikipedia.org/wiki/Process_supervision
如果要确保在Ubuntu启动时启动“ Roscore”(无论它是什么),则应将其作为服务启动(而不是通过cron)。 请参阅此问题/答案 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.