深度系统操作实践

一、 开机关闭图形界面,直接进入命令行模式

# 关闭 lightdm启动器
sudo systemctl disable lightdm

# 重启即可看到效果
sudo shutdown -r now

# 设置开机默认进入图形界面
sudo systemctl enable lightd

二、Deepin实现开机脚本自启

实现用户自定义脚本开启自动主要有如下方法:

1、修改.profile文件。

  将要开机需要自动执行的命令直接写进.profile文件中,其原理是用户登录系统后自动执行该脚本(也就是登录后触发)。该方法有如下缺点:

  ①、如果脚本有报错或输出警告信息,那么登录系统后会出现黑屏弹框,严重影响开机体验。

  ②、不能在~/.profile文件中使用sleep命令。如果在.profile文件中使用sleep 5,那么当开机登录系统后会黑屏5s之后才进入桌面。

  ③、如果执行该脚本的用户为普通用户而不是root用户,那就意味着当你的命令含有sudo前缀时,需要采用hack方式去执行该条命令,如

#输出用户密码并作为下一条命令的输入
echo "your password" | sudo -S some command

2、新建/etc/rc.local文件。

  该方法的原理是系统开机后会自动启动rc-local服务,rc-local服务启动后就会自动执行/etc目录下的rc.local脚本。该方法不存在第一种方法的缺点,脚本执行失败不会出现黑屏弹窗、sleep不会造成开机黑屏以及执行脚本的用户是root用户。

  主要步骤:

  ①、新建/etc/rc.local文件。

  ②、粘贴一下模板

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.


exit 0

  ③、在"exit 0"上方插入需要自动的命令(一行一个)后保存文件。

  ④、给脚本增加755权限

sudo chmod +755 /etc/rc.local

  ⑤、调试脚本(可选)

# 使用 sudo 模拟 root 用户开机自启 /etc/rc.local 文件
sudo /etc/rc.local 

  如果第⑤步模拟启动脚本没有报错,就可以直接重启系统看是否可以成功实现脚本开机自启。重启进入系统后我们可以通过systemctl status rc-local.service查看rc.local的运行状态,如果结果显示active(exited)则说明脚本已经成功执行,反之如果结果显示failed,需要重新检查脚本哪出现问题。

  可能引起脚本无法正常启动的原因:

  • 执行脚本的用户不一致

  由于rc.local开机自启的时候是以root用户执行的,而在具体应用中可能存在本命令需要在普通用户执行的情况。

  假设用户lolimay在终端用“VBoxHeadless -s aikuai &”后台启动了虚拟机aikuai,那么我们在rc.local文件应该使用下面格式:

 # 以 lolimay 用户执行该命令
su - lolimay -c "VBoxHeadless -s aikuai &"
  • 多余的sudo

   rc.local 开机时是以 root 用户启动的,所以写在 rc.local 文件中命令不需要带有 sudo 前缀(实际上就算带有了 sudo 前缀也不会产生错误)。

  调试建议:

  在编写过程中时常使用"sudo /etc/rc.local"命令模拟是否能够执行成功。

3、将desktop文件拖进.config/autostart文件夹下实现开机自启。

  在~/.config/autostart文件夹下新建.desktop文件。~/.config/autostart文件夹类似于Windows下的启动文件夹,系统开机时会执行该文件夹下的每个desktop文件Exec参数指向的脚本或可执行文件。一个最简单的desktop文件模板如下:

[Desktop Entry]
Name=<应用程序名>
Type=Application
Exec=<应用程序或脚本完整路径>
Icon=<应用程序图标的完整路径>

  使用该方法需要注意执行脚本的用户为普通用户,所以当脚本中出现sudo命令时,需要采用类似于“echo "your password" | sudo -S some command”的hack方法去实现开机自启需要管理员权限的命令。

posted @ 2020-02-06 09:49  心缘-因缘  阅读(502)  评论(0)    收藏  举报