×

解决 Linux 服务器开机执行脚本无效的问题

96
BlindingDark
2017.08.11 23:08* 字数 320

Linux shell rc.local 开机启动


服务器是 debian 8,启动脚本是 /etc/rc.local

按照网上说的各种方法试了半天,就是不生效。也没有错误信息。
排除各种可能性,最后猜想是 /etc/rc.local 执行的时候并没有必要的环境。
再次搜寻相关的问题,找到了解决方法。
/etc/rc.local 脚本中要想执行某一用户的可执行文件,需要先转换到这个用户才能正常执行。
示意如下。

cd /home/your_username
su your_username -c "/bin/bash /home/your_username/some/shell/start.sh"

大概思路就是,使用某个用户的身份来运行命令。
首先 cd 到用户的目录下,然后使用 su 后跟你的用户名,达到使用该用户身份来执行命令的效果。
需要注意的是,要使用 -c 参数来执行你要的命令,否则如果单独执行 su username 会进入到另一个 shell 环境中,导致接下来的命令无法继续执行。

另外需要注意的是,/etc/rc.local 默认第一行是有 -e 参数的。也就是如果有一行执行失败(返回值不为 0),就不会继续往下执行了。


Linux & More
Web note ad 1