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 / root / server / srv / start_srv: -rwxr-x--x 1 500 500 468420

ls -ld / root / server / srv: drwxrwxrwx 2 500 500 4096

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

  sudo service rc.local start 

当系统init启动rc.local脚本时,它以root用户身份运行,但是如果要检查脚本,则需要通过sudo命令成为root用户

这就是为什么你得到像Can't CD to /root/server/srv/这样的错误Can't CD to /root/server/srv/

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

这是一个例子。

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

要修复它,您应该安装dos2unix实用程序并转换rc.local文件:

  sudo dos2unix /etc/rc.local