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),就不会继续往下执行了。