Windows 10 Series – Ubuntu Service Auto Startup


内容纲要

Windows 10 Series – Ubuntu Service Auto Startup

上一篇讲到了一些常用服务的安装配置,这里面其实存在一个问题,每次关机后,下次开机都需要手动启动这些依赖的服务。那么,能不能让这些服务在开机的时候自动运行起来呢?答案是可以的~

网上流传的一些方法在我的电脑上都不好使,Win10在不停的更新升级,有许多东西都变了。

总结下来,下列即是当前可行的一个方案,有个小缺点,开机启动的时候会有个命令提示符的弹窗,几秒后会自动关闭的。

Windows 10 自动启动脚本

打开启动菜单目录

Win + R 输入 shell:startup即可打开启动菜单目录。

在启动目录下创建名为 autorun-service.bat 的脚本文件,内容如下:

@echo off
@cmd /Q /C start /B /MIN C:\Windows\System32\bash.exe --login -c 'exit'
@exit

bash.exe是安装完 Linux 子系统才有的, –login 参数表示登录终端。
如果打开命令提示符,输入bash --login即可登录进入 Linux 子系统的终端。
这种方式的思路是开机启动运行一下子系统的bash,在子系统当前用户的 ~/.profile 文件上做文章。
在 Linux 子系统是 Windows 10 的定制版本,此子系统没有原生 Linux 的一些 deamon 守护进程,所有需要手动启动这些服务。
通过以下一些命令便可略知一二:

sudo systemctl restart apache2
System has not been booted with systemd as init system (PID 1). Can't operate.

ssh服务默认是未启动的,通过判断 ssh 服务的状态来决定是否需要批量拉起我们的服务。

Linux 子系统配置

## 打开 ubuntu 终端
# 创建 bin 目录
mkdir ~/bin

# 创建服务自启动脚本文件
touch ~/bin/autorun-service
chmod 700 ~/bin/autorun-service
#-- 脚本内容见下方

## 配置自动调用脚本
# .profile 末尾加上如下配置
if [ -e "$HOME/bin/autorun-service" ] ; then
    . "$HOME/bin/autorun-service"
fi

~/bin/autorun-service

#!/bin/bash
#
# filename: autorun-service
# description: auto run service configuration
#
#-- 此处 123456 替换为你的子系统当前用户的密码
UPWD=123456

if [ -n "`service ssh status | grep " is not running"`" ] ; then
    echo $UPWD | sudo -S service ssh start
    echo $UPWD | sudo -S service mysql start
    echo $UPWD | sudo -S service apache2 start
fi

Reference

  1. 开启win10下Ubuntu子系统的SSH服务 并设置为开机启动
  2. win10子系统设置开机启动ssh服务

声明:
  未经特别说明,本站Blog均采用署名-非商业性使用-禁止演绎 2.5 中国大陆授权。任何违反本协议的行为均属于非法行为。如需非商业性转载,请保留署名。如需商业性转载出版,请直接和联系。


《“Windows 10 Series – Ubuntu Service Auto Startup”》 有 1 条评论

发表回复

您的电子邮箱地址不会被公开。