这是我的 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