ubuntu 18.04 设置开机自启动程序(亲测有效:包括在ubuntu服务器,xaiver均测试通过)

情况A(以root用户运行程序,此方法不会加载用户环境变量,需要加载用户环境变量的请看情况B)

 

1.     sudo rm /etc/systemd/system/rc-local.service (如果有该文件则删除,没有不管)

2.     sudo vim /lib/systemd/system/rc-local.service 

确保内容如下(只需要在原文后面加入[Install]块的内容即可):

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

# This unit gets pulled automatically into multi-user.target by
# systemd-rc-local-generator if /etc/rc.local is executable.
[Unit]
Description=/etc/rc.local Compatibility
ConditionFileIsExecutable=/etc/rc.local
After=network.target

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes
[Install]  
WantedBy=multi-user.target  
Alias=rc-local.service

2.  sudo vim /lib/systemd/system/rc-local.service 

#!/bin/sh -e
echo "test info" /usr/local/test.log &
exit 0
【注意】:
1).   #!/bin/sh -e (不要用#!bin/bash)
2). 自己需要启动的程序写在exit 0之前
3). 非后台程序需要在命令租后加上&,否则会失败
4). 路径用绝对路径,不要用~这种符号

3. sudo systemctl enable rc-local

该命令是将刚才的/lib/systemd/system/rc-local.service 内容生效,
会产生一个/etc/systemd/system/rc-local.service -》 /lib/systemd/system/rc-local.service
【以上步骤没问题的话,接下来4,5不会报错】
4.  sudo systemctl start rc-local
5.  sudo systemctl status rc-local

【确定没报错则重启电脑,查看是否生效】

情况B(以特定用户运行程序,此方法可以加载用户环境变量)
1. 以A情况执行(步骤2一个地方不同)
原先步骤2:
sudo vim /lib/systemd/system/rc-local.service 
#!/bin/sh -e
 sudo -u username echo "test info" /usr/local/test.log &
 exit 0
 
【注意】:只需要将自己的命令前加上sudo -u usrname即可
2.  sudo systemctl set-default graphical.target


【拓展】:

一、开机默认进入命令行模式
1、输入命令:sudo systemctl set-default multi-user.target

2、重启:reboot
要进入图形界面,只需要输入命令startx
从图形界面切换回命令行:ctrl+alt+F7(有的是F1)

二、开机默认进入图形用户界面
1、输入命令:sudo systemctl set-default graphical.target

2、 sudo vim /lib/systemd/system/getty@.service

将下面

ExecStart=-/sbin/agetty --noclear %I $TERM

改为

ExecStart=-/sbin/agetty  -a (username) --noclear %I $TERM

#该步骤为命令行免密登录,若是不需要,可不用该步骤

3、重启:reboot
要进入命令行模式:ctrl+alt+F2
从命令行切换到图形界面:ctrl+alt+F7(有的是F1)

 
posted @ 2022-01-09 11:37  wangaolin  阅读(2150)  评论(0编辑  收藏  举报