需求描述
由于wsl
中无法使用开机自动启动LNMP
服务,如果每次都需要一个个手动启动过于麻烦,需要实现wsl
开机自动启动这些服务。
解决方法
可以将启动服务添加到.bashrc
,实现打开wsl
自动启动服务。.bashrc
就相当于 shell 的配置文件.
系统中有多个.bashrc
隐藏文件,他们的作用不同。这里主要实现打开wsl
是调用,所以就使用用户文件夹下的.bashrc
文件。
其路径示例:/home/username/.bashrc
。username
为用户名。
实现步骤
- 在用户文件夹下创建自启服务的
startservers.sh
脚本:
cd /home/username #切换到用户文件夹
#创建startservers.sh文件
cat>startservers.sh<<EOF
#!/bin/bash
# Edit this for your relevant services.
services=(php7.3-fpm nginx redis-server mysql)
for service in "\${services[@]}"
do
if (( \$(ps -ef | grep -v grep | grep \$service | wc -l) == 0 ))
then
# Uncomment to get messages. #
#echo "Starting service \${service}"
(sudo service \$service start > /dev/null &)
fi
done
EOF
- 给与
startservers.sh
可执行权限
chmod +x startservers.sh
- 将
startservers.sh
添加到/home/username/.bashrc
文件:
sed -i '$a ~/startservers.sh' .bashrc
这样,当wsl
启动后,将会自动开启配置在startservers.sh
中的服务。
这些服务没有root权限能开起来?
sudo service $service start
可以开起来,应该会有权限问题。本地开发环境,WSL
我设置的默认启动用户是root
,启动后跳转到非root
用户。