ubuntu设置开机启动的一些方法

本文详细介绍在不同版本的Ubuntu系统中设置程序开机启动的多种方法,包括修改rc.local、init配置、systemd服务、gnome会话属性及autostart目录等,并提供x11vnc和srs服务的具体配置实例。

ubuntu设置开机启动一般有如下几种方法

1、修改/etc/rc.local

早期的系统直接编辑/etc/rc.local文件,在exit之前加入执行的命令即可实现开机自启。但是这种方法目前已不被推荐,最新的ubuntu18以及ubuntu20已经没有该文件。

2、增加/etc/init/xxx.conf

进入/etc/init目录,我们会发现该目录下有很多类似的xxx.conf文件。通过在该目录下新增conf文件同样可以实现开机自启的功能,之前我在ubuntu14系统通过该方式实现x11vnc的开机自启。但是这种方法目前同样不被推荐,一般在ubuntu16之后的系统同样不推荐使用这样的方法。

3、增加/lib/systemd/system/xxx.service

进入/lib/systemd/system目录,我们会发现该目录下有很多类似的xxx.service文件。通过在该目录下新增service文件并搭配最新的systemctl命令,可以实现开机自启、启动、关闭服务等功能。该方法同样适用于centos。

4、桌面环境gnome-session-properties设置

如果有ubuntu桌面环境,通过在终端输入gnome-session-properties会弹出如下设置启动项的页面:

点击Add按钮,在弹出的界面中Command对应的部分选择自己的启动脚本即可

5、增加~/.config/autostart/xxx.sh.desktop

该方法实际上和方法4一样,只是方法4需要桌面环境,如果你只能通过ssh连接设备的话,那么方法4就无法操作。方法5即是方法4的替代方案。

进入~/.config/autostart目录,我们我们会发现该目录下有很多类似的xxx.sh.desktop文件。通过在该目录下新增desktop文件可以实现开机自启的功能。

6、示例

6.1在ubuntu14通过/etc/init/x11vnc.conf实现x11vnc开机自启

在ubuntu14上安装x11vnc,设置开机启动的方法如下:

  1. 创建/etc/init/x11vnc.conf文件

  2. 写入以下内容:

     start on login-session-start

     script

     /usr/bin/x11vnc -auth /var/run/lightdm/root/:0 -noxrecord -noxfixes -noxdamage -rfbauth /etc/x11vnc.pass -forever -bg -rfbport   5900 -o /var/log/x11vnc.log

    end script

设置完成后,重启机器发现x11vnc实现了开机启动。

6.2在ubuntu16通过/lib/systemd/system实现x11vnc开机自启

最近我在一台ubuntu16的机器上使用了6.1的方法,但是发现x11vnc并没有开机启动,手动执行该脚本发现可以正常启动x11vnc。

在读了一些资料后,发现在ubuntu16设置开机启动方法为:在/lib/systemd/system目录下新建x11vnc.service,写入一下内容

[Unit]
Description=Start x11vnc at startup.
After=multi-user.target
[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /etc/x11vnc.pass -rfbport 5900 -shared
[Install]
WantedBy=multi-user.target

然后执行以下命令启动x11vnc

sudo systemctl daemon-reload

sudo systemctl enable x11vnc.service

sudo systemctl start x11vnc.service

6.3在ubuntu16通过/lib/systemd/system实现srs开机自启

有了上面设置x11vnc开机启动的经验,在设置srs开机启动上仍然遇到了一些问题。首先,ExecStart只能使用一条命令,而srs的启动需要切换到某一路径,以相对路径启动,不然程序会报错。这个可以通过将命令封装成shell脚本,然后在ExecStart后面执行shell脚本来实现。后面再启动srs时发现程序启动后就退出了,但是手动执行该shell脚本没有问题。通过比较发现,以service执行时,会打印父进程退出,而手动执行时打印父进程退出,子进程启动。问题出在这个地方。将之前写的srs.service里面的Type=simple改成Type=forking后,srs完成了开机自启动。

<think>好的,我需要帮助用户在Windows的WSL Ubuntu环境中设置开机启动项。首先,我应该回忆一下用户提供的引用内容,看看有没有相关的指导。 引用1提到通过批处理文件设置开机启动,可以自动执行WSL Ubuntu。默认是后台启动,如果用户想要终端窗口,可以修改批处理内容。引用2和3也提到了类似的命令,使用wsl -d Ubuntu启动。引用4则指出WSL不支持传统的rc.local方法,需要另寻途径。引用5是关于SSH配置的,可能暂时用不上。 用户的问题是如何在WSL Ubuntu中添加和管理开机启动项。根据引用内容,传统Linux的服务管理方式在WSL中可能不适用,所以可能需要通过Windows的任务计划或启动文件夹来实现。 首先,我应该考虑如何在Windows启动时运行WSL命令。用户提到的批处理文件放在启动文件夹里,或者使用任务计划程序。引用1和2中的例子都是用批处理文件执行wsl命令,然后设置这个批处理在开机时运行。 另外,如果用户需要在WSL内部的服务或脚本自启动,可能需要利用WSL的init系统。虽然引用4说rc.local不可用,但较新的WSL版本可能支持systemd。比如,Ubuntu 22.04及更高版本支持启用systemd,这样用户可以通过systemd服务来管理启动项。但需要确认用户是否启用了systemd,因为默认情况下可能未开启。 所以,可能的步骤包括: 1. 通过Windows任务计划或启动文件夹,在开机启动WSL实例,并执行特定命令。 2. 在WSL内部配置systemd服务(如果可用),或者使用其他方法如cron的@reboot来运行脚本。 需要详细说明这两种方法,并提到注意事项,比如后台运行、权限问题等。还要参考引用中的例子,比如批处理文件的创建和修改,以及如何设置任务计划程序。 可能的问题点:WSL的初始化方式不同于普通Linux,所以开机启动项的管理需要结合Windows和WSL两方面的操作。需要确保用户清楚步骤,并正确引用相关资料中的方法。</think>### 如何在Windows WSL Ubuntu中添加和管理开机启动项? #### 方法一:通过Windows任务计划/启动文件夹(推荐) 1. **创建启动脚本** 新建批处理文件(如`start_wsl_services.bat`),内容根据需求选择: ```bash :: 后台静默启动(引用[^1]) wsl -d Ubuntu -u root /etc/init.wsl start :: 或打开终端窗口启动(引用) start wsl -d Ubuntu -u root /etc/init.wsl start ``` *注:`/etc/init.wsl`需自定义(见方法二)或替换为具体命令(如启动nginx/mysql)*。 2. **设置开机启动** - **方式1**:将批处理文件放入Windows启动文件夹 路径:`shell:startup`(在运行窗口中输入)。 - **方式2**:通过任务计划程序 创建新任务,触发器设置为“登录时”,操作为运行批处理文件[^2]。 #### 方法二:在WSL内部配置自启动服务(需systemd支持) 1. **启用systemd** 编辑WSL配置文件(需Windows 11或较新版本): ```ini # 在%USERPROFILE%\.wslconfig中添加 [boot] systemd=true ``` 重启WSL:`wsl --shutdown`。 2. **创建Systemd服务文件** 示例:为nginx创建服务 ```bash sudo nano /etc/systemd/system/nginx.service ``` 内容: ```ini [Unit] Description=NGINX Server [Service] ExecStart=/usr/sbin/nginx Restart=always [Install] WantedBy=multi-user.target ``` 启用服务: ```bash sudo systemctl enable nginx ``` #### 方法三:使用@reboot定时任务(无需systemd) 在WSL中执行: ```bash crontab -e ``` 添加: ```bash @reboot service nginx start # 替换为实际命令 ``` §§ 1. WSL默认不保留后台进程,需通过Windows机制触发启动[^4]。 2. 若需图形界面,批处理文件中可添加`start`命令[^1]。 3. 权限问题:建议以root用户运行关键服务(通过`-u root`参数)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值