linux - 如何在启动时运行两个shell脚本?

标签 linux bash shell ubuntu cron

我正在使用 Ubuntu 16.04,我有两个 shell 脚本:

  1. run_roscore.sh:这个在一个终端中启动 roscore。
  2. run_detection_node.sh:这个在另一个终端中启动一个对象检测节点,并且应该在 run_roscore.sh 初始化 roscore 后启动。

我需要这两个脚本在系统启动时立即执行。

我使这两个脚本都可执行,然后将以下命令添加到 cron: @reboot/path/to/run_roscore.sh;/path/to/run_detection_node.sh,但它没有运行。

我还尝试将这两个脚本添加到 Startup Applications 中,对 roscore 使用此命令:sh/path/to/run_roscore.sh 并使用以下命令检测节点: sh/path/to/run_detection_node.sh。它仍然不起作用。

如何运行这些脚本?

编辑:我使用以下命令查看 CRON 进程的系统日志:grep CRON/var/log/syslog 并获得以下输出:

CRON[570]:(CRON) 信息(未安装 MTA,丢弃输出)

所以我安装了 MTA,然后系统日志显示: CRON[597]:(nvidia)CMD(/path/to/run_roscore.sh;/path/to/run_detection_node.sh)

我仍然看不到输出(应该是带有检测的摄像头流,正如我直接在终端中运行脚本时看到的那样)。我应该如何进行?

最佳答案

由于我最终完成了这项工作,我将在这里回答我自己的问题。

我执行了以下步骤以使脚本从启动开始运行:

  • 将脚本的类型从 shell 更改为 bash(扩展名 .bash)。
  • 将 shebang 语句更改为 #!/bin/bash
  • 在启动应用程序中,输入命令 bash path/to/script 以运行脚本。

基本上,当我将 shell 类型从 sh 更改为 bash 时,脚本会在系统启动后立即开始运行。

请注意,如果这对某人有帮助:我打算将 run_roscore.bash 作为一个单独的脚本来运行 roscore 作为后台进程。通过在 rosnode 启动之前将 roscore& 作为命令,可以直接从单个脚本(它也运行检测节点)运行它。此命令将作为后台进程启动 master 并使同一终端保持打开状态以执行以下命令。

关于linux - 如何在启动时运行两个shell脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48438421/

相关文章:

java - 通过命令行在类路径(包括 JARS)中搜索或列出 Java 类

linux - 带有 3 个检查点的 If 语句

不再支持 Java 小程序 - 有什么替代方案? (文件操作-shell命令)

javascript - 实现浏览器可以使用的媒体设备

linux - 更新 header 中的 TCP/IP 校验和

bash 脚本代码有助于制作多个文件夹的 zip/tar

python - 在Python子进程中使用 '&'作为后台进程

shell - 将具有分号 (';' ) 的值分配给 bash 中的变量

linux - 无法在 GDB 中加载自定义 ELF 可执行文件

Linux shell : VLC programming