首页 文章

从init.d脚本启动时,程序无法打开文件

提问于
浏览
0

提前感谢您阅读我的帖子 . 我的程序在从init.d脚本启动时执行的方式有问题 . 这是一个C程序,我存储在/ usr / local / bin目录中,还有两个属性文件 . 正确运行程序需要一个属性文件 . 从命令行调用程序时一切正常,例如:

myprogram或./myprogram

但是当我的init.d脚本用于启动程序时,二进制文件将不会打开所需的属性文件 . 我已经检查了init.d脚本(chmod 755)的权限,并确保我更新了rc.d(sudo update-rc.d myprogram defaults),但我无法弄清楚这一点 . init脚本的LSB头如下所示:

#!/bin/bash 
### BEGIN INIT INFO
# Provides:         myprogram (where myprogram is the name of the init script)
# Required-Start:       $local_fs $network $remote_fs $syslog
# Required-Stop:        $local_fs $network $remote_fs $syslog
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    myprogram short description
# Description:      Enable service provided by daemon
### END INIT INFO

任何帮助都非常感谢 . 谢谢 .

1 回答

  • 1

    由于您使用相对路径来打开文件,因此最有可能出现问题 . 从脚本启动应用程序时的工作目录是找到脚本的目录,而不是应用程序所在的目录 . 因此,当您使用相对路径查找文件时,它们与脚本的目录相关,这就是为什么在从脚本执行时无法找到它们,但是当您从命令行直接执行时 .

    您可以通过将脚本移动到应用程序的目录并尝试运行它来测试此理论 . 如果它在脚本和应用程序位于同一目录时从脚本工作,那么我是对的 .

    没有什么是可以肯定的,因为我们没有你的代码 .

相关问题