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