开机自启Windows子系统WSL的守护进程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了开机自启Windows子系统WSL的守护进程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1674字,纯文字阅读大概需要3分钟。
内容图文
说明
Windows的WSL子系统极大的方便了Linux软件在windows下的开发。但其有一个极大的缺陷,即几乎没有Init操作,不会启动后台守护进程(至少到文章编写时)。而有时编写软件时又需要用到一些后台进程,如Rsyslog,虽然可以通过手动执行/etc/init.d下的脚本来启动守护进程,但仍然不方便。
操作系统版本
Microsoft Windows [版本 10.0.19042.685]
WSL
ubuntu focal 20.04
具体思路
通过注册表 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 运行一个WSL下的程序,再由该程序完成以下操作:
- 提权。(提升到Root权限)
- 依次执行/etc/rc3.d/下的文件
注意:此程序在下称为WslInitMutilUser。
程序代码及安装
编译环境
需要安装build-essential软件包
代码
#include "stdio.h"
#include "unistd.h"
#include "stdlib.h"
int main(int argc ,char *argv[])
{
if(setuid(0) !=0 || setgid(0) != 0)
{
printf("Please Run:\n sudo chown 0:0 %s \n sudo chmod +s %s\n\r",argv[0],argv[0]);
return -1;
}
system("bash -c \'for i in `find /etc/rc3.d/`; do bash -c \"$i restart\"; done\'");
return 0;
}
编译安装
注意:所有sudo安装操作可能需要输入密码。
编译
gcc WslInitMutilUser.c -o WslInitMutilUser
安装WSL程序
将程序文件复制到/usr/local/bin/,并赋予setuid权限。
sudo cp WslInitMutilUser /usr/local/bin/
sudo chown 0:0 /usr/local/bin/WslInitMutilUser
sudo chmod +s /usr/local/bin/WslInitMutilUser
测试WSL程序
在windows下的cmd.exe执行观察是否能正常工作(主要是测试能否正常启动WslInitMuilUser)。
wsl WslInitMutilUser
写入注册表自启
名字自定义,内容如下:
wsl.exe /usr/local/bin/WslInitMutilUser
最终效果
开机登陆后会自动启动后台守护进程(一个黑框一闪而逝)。后台进程均自动启动。可在WSL下使用update-rc.d命令管理守护进程的自启。
注意事项
有的后台进程(如openssh-server)可能由于WSL本身的初始根文件系统问题不能自启,卸载相关软件包再重新安装即可。
内容总结
以上是互联网集市为您收集整理的开机自启Windows子系统WSL的守护进程全部内容,希望文章能够帮你解决开机自启Windows子系统WSL的守护进程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。