编辑了一个qt界面,需要设置开机启动,费了九牛二虎之力,终于搞定了。
设置开机显示命令行
开机不显示图形界面,直接显示命令行的操作有两种方法:
- 多用户方法
sudo systemctl set-default multi-user.target //多用户模式(命令行)
sudo systemctl set-default graphical.target //图形化界面
- systemctl 方法
systemctl disable lightdm.service //关闭桌面系统
systemctl enable lightdm.service //设置桌面开机自启动
//ps:如果设置桌面开机自启动没有效果,可以用如下命令后再设置桌面自启
sudo dpkg-reconfigure lightdm //重置桌面服务
//下面这条命令不是必须的,先备注在这里
systemctl restart lightdm.service //重启桌面服务
- 临时开启命令行
a.使用键盘ctrl+alt+F1,再输入用户名和密码尅登入tty1(F1-F7对应tty1-7,其中tty7是图形界面即桌面),返回桌面ctrl+alt+F7
b.输入命令
sudo init 3 //终端模式
sudo init 5 //图形界面
c.输入命令
sudo chvt 1 //终端模式
sudo chvt 7 //图形界面
编辑启动命令
执行如下命令
crontab -e //如果出现多个选项,就选择 /usr/bin/vim.basic
在打开的文件里面添加如下内容
//在里面添加如下内容
@reboot /home/sl/Desktop/Enforcement -platform linuxfb
命令解释
@reboot:开机时启动
/home/sl/Desktop/执行文件的路径
Enforcement执行文件名
-platform linuxfb执行文件的附加参数
ps:如果在命令行手动运行该程序,与该语句等效果的命令如下:
cd /home/sl/Desktop/
./Enforcement -platform linuxfb
验证命令是否可用
使用如下命令验证运行环境,请注意路径需要改成你自己的文件路径
sudo /home/sl/Desktop/Enforcement -platform linuxfb
如果正常运行,那就可以了.
如果报错,寻找错误原因,我的运行出来报错如下:
一看就是没有找到字体文件,并且界面上确实没有显示出汉字
就在报错中提到的文件位置建立 /home/user/qt5.9.1-arm/lib/fonts文件夹,命令
sudo mkdir -p /home/user/qt5.9.1-arm/lib/fonts
拷贝字体文件进去,我的字体文件夹是/usr/share/fonts/truetype/wqy/
cp /usr/share/fonts/truetype/wqy/wqy-zenhei.ttc /home/user/qt5.9.1-arm/lib/fonts
然后重启看看是否直接执行了Enforcement文件。
延时启动的配置
有时候我们需要自己的应用在其他服务启动之后运行,如果通过判断其他服务的进程是否开启,有点麻烦,如果对时间要求不高的应用,可以简单的使用sleep来达到延时启动效果。
首先执行命令
crontab -e //如果出现多个选项,就选择 /usr/bin/vim.basic
修改成如图内容
由图可知,需要在如下目录建立auto.sh文件
/home/admin/sl/
在auto.sh中添加如下内容
#!/bin/sh
sleep 5
/home/admin/sl/Enforcement -platform linuxfb &
解释:
#!/bin/sh 这句是必要的,不解释
sleep 5 延时5秒
/home/admin/sl/Enforcement -platform linuxfb & 表示运行/home/admin/sl/目录下的Enforcement文件,后面的&表示后台运行
给auto.sh文件赋予权限
sudo chmod 777 auto.sh #有人说使用777不是一个好习惯,我也顾不上了,就是干
如此便达到延迟5秒启动程序。注意自己按上面设置自启动,目录要改成自己的。
设置开机自启QT界面后字体依然很小的问题
出现该问题,主要是配置的环境变量没生效。
QT运行的环境变量我们通常是在/etc/profile中更改的,如下是我的配置
这里面涉及到QT字体目录,涉及QT界面分辨率和尺寸的设置,设置自启动后,由于系统没有自动登录(需要输入用户名和密码才能登陆),该文件没有执行,导致环境变量没生效。
解决方法一:编写脚本或者更改系统设置,让其在开机能够自动登录,之后再启动QT界面,该方法理论可行,实际我百度了好久,没实现自动登录操作,有知道方法的大佬麻烦给我说一下。
解决方法二:在自启程序前重新配置一下环境变量,该方法亲测可用,很简单。
在上述设置开机自启文件auto.sh中,在祁东界面前,将QT的环境变量复制进去,就搞定了,如图