启动时运行脚本 ubuntu 14.04

启动时运行脚本 ubuntu 14.04

我对在 Ubuntu 中编写脚本还很陌生。我有一个使用 OpenCV 进行 Ipcamera 视频处理的 C++ 应用程序,我正在 Ubuntu 14.04 中工作。

我将尝试解释我所做的事情:

首先,我想检查是否可以在启动时调用脚本,因此我创建了这个简单的脚本,它仅在我拥有脚本的同一目录中创建一个文件:

#!/bin/sh


RUTA_ENTORNO=`dirname $0`

echo "Creando archivo de prueba..."
touch ${RUTA_ENTORNO}/ArchivoPrueba.txt
exit 0

我在 rc.local 中添加下一行:

sh /home/myScript

当我重新启动计算机时,文件就创建好了,非常完美。

然后我编译了我的应用程序,并将可执行文件移动到我的脚本的同一文件夹中,并添加以下内容:

#!/bin/sh

/home/executable
RUTA_ENTORNO=`dirname $0`

echo "Creando archivo de prueba..."
touch ${RUTA_ENTORNO}/ArchivoPrueba.txt
exit 0

/home/executable在脚本中添加了一行来执行它,并检查此后是否创建了 file.txt。

但我不明白的是,当我重新启动系统时,相机没有运行。似乎应用程序没有抛出任何错误,但创建了 file.txt。但是,如果我在终端中运行sh /home/myScript,应用程序会启动,我可以看到相机,但不会创建 file.txt。

当我重新启动系统时,如何自动运行我的应用程序?

答案1

我对此做一点猜测:

  1. /home/executable可能取决于正在初始化的图形,我认为这意味着在 GUI 运行之后。
  2. 如果 GUI 没有运行,它可能会因错误而退出,并且您的脚本将继续执行剩余部分(这就是未创建文件的原因)。输出将rc.local被丢弃,因此您不知道它是否引发了错误。
  3. 如果 GUI 正在运行,您的程序将继续运行,因此脚本在您关闭它之前不会到达剩余部分。

考虑使用Upstart 会话作业. 在(例如) 中创建一个.conf文件,其中包含:~/.config/upstartcamera.conf

description "My OpenCV-based camera app"
start on startup
stop on session-end

exec /home/executable

现在它应该在您登录时自动启动。您可以使用以下命令来启动和停止您的应用程序(camera是您创建的文件的名称.conf):

start camera
stop camera

respawn如果您希望 Upstart 在关闭该程序时再次启动该程序,您还可以将其添加到配置文件中。

相关内容