rc.local 不会执行脚本

rc.local 不会执行脚本

这是我的 rc.local

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

cd /root/server/srv/
./start_srv &

exit 0

当我执行时

    cd /root/server/srv/
    ./start_srv &

我自己通过终端,它正常启动并且一切正常,但是当我尝试通过 rc.local 执行时,它无法启动。

我知道 rc.local 不需要 sudo 等。我尝试通过终端自己执行 rc.local,但出现错误:“无法 CD 到……”

我究竟做错了什么?

ls -ld /root drwx------ 4 root root 4096:,

ls -ld /root/server drwxr-xr-x 3 root root 4096:,

ls -ld /根/服务器/ srv / start_srv:-rwxr-x--x 1 500 500 468420

ls -ld /根/服务器/ srv:drwxrwxrwx 2 500 500 4096

答案1

为了验证您的/etc/rc.local脚本,您应该使用以下命令:

  sudo service rc.local start

当系统init启动rc.local脚本时,它会运行为,但如果你想检查你的脚本,你需要成为通过sudo命令。

这就是为什么您会收到类似的错误Can't CD to /root/server/srv/

如果您的脚本在启动过程中不起作用,请考虑环境受到限制,因此您应该根据脚本的需要定义缺少的变量。

这里就是一个例子。

错误: /bin/sh: 0: Illegal option -是由于DOS文件格式造成的。

为了修复它你应该安装dos2unix实用程序并转换 rc.local 文件:

  sudo dos2unix /etc/rc.local

相关内容