蛋皮のhome

从此唯行乐,闲愁奈我何。

Linux设置程序开机自启动

Linux设置程序开机自启动大致有三种方法。

一、通过rc.local设置自启动

通过在/etc/rc.local的文件夹下添加shell指令即可在开机时自动启动指令。其内容的格式举例如下:

#!/bin/sh
 sudo mkdir /test

该例子便是在开机时在根目录下创建新文件夹/test,同理也可以运行其他程序,会编写sh的可以把所用的指令写进sh文件后在rc.local启用sh文件即可。这种方法比较方便便捷,但这种方法也有一定的特殊性和局限性。

rc.local的启动是在用户登录之前,对于整个系统开机而言的启动程序执行,当程序执行完成后才会进入用户界面,所以当开机启动项过多,那么系统开机的时间就会变长。并且rc.local只能运行命令行程序,无法运行带界面的程序,运行带界面的程序会报错无法运行然后直接跳过该程序。

二、通过autostart运行

这种方法是首先在/usr/share/applications/目录下创建一个名为QRDecode.desktop的启动配置文件,然后加入以下代码:

[Desktop Entry]
Version=1.0
Name=QRDecode
Exec=/home/test/QRDecode    #这是那个可执行程序所在完整路径,如果程序有附加输入参数,也可以跟在后面添加,并用空格隔开
StartupNotify=false
NoDisplay=true
Type=Application
Categories=System;Utility;Archiving;

将这个文件拷贝到/etc/xdg/autostart目录下,然后重启即可运行(可以运行GUI程序)

参考网址: https://blog.csdn.net/zilanpotou182/article/details/71173361

在这里说明一下,这个文件的文件名可自定义,但文件后缀很重要,不能更改丝毫。然后也只有将该文件复制在/etc/xdg/autostart文件目录下才会生效,如果文件路径有所变化,记得也需要及时找到该文件并更改程序路径。这种运行方式可以运行带界面的程序。并且在用户登录之后才会运行。如果想要完全意义上的开机自动运行,需要设置成用户自动登录。一般情况下,推荐使用这种方法。

三、代替系统界面运行程序

如果想要代替系统界面去运行一个程序,即把应用程序当作系统桌面去启动,则可以使用此方法。

在/etc/profile文件的开头添加执行程序的命令。如:

cd /home/username/workspace
./hello

或者直接写:

/home/username/workspace/hello

注意,此方法实现后如果需要改回去,可以通过进入tty命令行界面进行修改操作,快捷键是:Ctrl+Alt+F1,注意,F1、F2一直到F6都可以进入tty界面,只不过每一个界面都是单独的一个界面。另外此方法有一点需要注意的是,如果是自己开发的程序,比如通过QT开发的程序,通过此方法在开机自启动运行后,是不会显示程序右上角那一行的,包括程序名和最小化最大化和关闭按钮,所以如果为了方便调试与开发建议程序里添加按钮之类的可以关闭程序功能,这样如果想回到系统可以通过关闭程序返回系统。但如果是自己开发的依旧建议用第二种方法,并在程序里添加默认全屏显示的功能依然可以达到和第三种一样的效果。且界面显示等不会有其他意外的情况。

综上,以上便是个人总结的Linux下设置开机自启动的程序的方案。基本都是在网上找寻方法以及个人使用感受所得。如你有更好的方法,欢迎评论分享。

发表评论

Your email address will not be published. Required fields are marked *.

*
*
You may use these <abbr title="HyperText Markup Language">HTML</abbr> tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>