Linux设置软件开机自启动的三种方式(中标麒麟、银河麒麟、ubuntu)

一、有界面的程序自启动

利用Linux的 .desktop文件实现开机启动。
在 目录下建立一个文件,并对文件进行以下编辑。

操作步骤

  1. 打开目录

  2. 建立文件

  3. 编写文件并保存

添加如下代码:

桌面条目具体要求和含义可见:https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html

注意

  1. 需要权限
  2. 此设置开机自启动的方法与方法不同的是,此方法适合桌面级软件的开机自启动(软件有界面)

二、无界面的程序自启动

① 方式一

Ubuntu 20.04的服务管理是基于systemd的,因此设置服务自启动最推荐的方法是在目录下创建一个systemd服务文件,配置好要执行的服务。

该种方式在字段中指定开机自启动的程序是可执行文件的时候会管用,但在某些情况下,当字段指定为脚本文件时可能会失效,并且此方式貌似需要登录系统后才会启动指定的程序

操作步骤

  1. 创建我们需要开机自启动的脚本,例如test.sh,其内容如下:

  2. 在/etc/systemd/user目录下创建一个systemd服务文件, 命名为user-defined.service(可以命名为以.service结尾的任何名称), 内容如下:

  3. 将systemd服务文件和我们的脚本更改权限,使其可执行。

  4. 重新加载系统的systemd服务文件,并启用我们自己写的user-defined.service文件。

取消开机自启动

② 方式二

现在大部分的Linux发布版本开机第一个程序都从换成了这中启动方式。是靠管理的方式来控制开机服务、开机级别等功能。
在目录下包含了各种文件,有后缀的服务,有后缀的开机级别等,这里介绍关于后缀的文件。因为在开机要想执行自启动,都是通过这些 的控制的,服务又分为系统服务(system)和用户服务(user)。

  • 系统服务:开机不登录就能运行的程序(常用于开机自启)。
  • 用户服务:需要登录以后才能运行的程序。

配置文件说明

(以服务为例)

  • 区块:启动顺序与依赖关系
    字段:给出当前服务的简单描述。
    字段:给出文档位置。
    字段:如果或需要启动,那么应该在它们之后启动。
    字段:定义应该在哪些服务之前启动。
    注:[和字段只涉及启动顺序,不涉及依赖关系]
    字段:表示与之间存在“弱依赖”关系,即如果启动失败或停止运行,不影响继续执行。
    字段:表示“强依赖”关系,即如果该服务启动失败或异常提出,那么也必须退出。
    注:[字段与字段只涉及依赖关系,与启动顺序无关,默认情况下是同时启动的]

  • 区块:启动行为。

    • 启动命令
      字段:定义启动进程时执行的命令。
      字段:重启服务时执行的命令。
      字段:停止服务时执行的命令。
      字段:启动服务之前执行的命令。
      字段:启动服务之后执行的命令。
      字段:停止服务之后执行的命令。
      注:所有的启动设置之前都可以加一个连词号(-),表示“抑制错误”,即发生错误的时候,不影响其他命令的执行。比如(注意等号后面的那个连词号),就表示即使/etc/sysconfig/sshd文件不存在,也不会抛出错误。中的启动、重启、停止命令要求全部使用绝对路径!

    • 启动类型
      字段定义启动类型。
      它可以设置的值如下:

      • (默认值):字段启动的进程为主进程
      • :字段将以方式启动,此时父进程将会退出,子进程将成为主进程(后台运行)
      • :类似于,但只执行一次, 会等它执行完,才启动其他服务
      • :类似于,但会等待信号后启动
      • :类似于,启动结束后会发出通知信号,然后 再启动其他服务
      • :类似于,但是要等到其他任务都执行完,才会启动该服务。一种使用场合是为让该服务的输出,不与其他服务的输出相混合。
    • 重启行为
      区块有一些字段,定义了重启行为。

      • 字段:定义 如何停止 服务:

        • (默认值):当前控制组里面的所有子进程,都会被杀掉
        • :只杀主进程
        • :主进程将收到 信号,子进程收到 信号
        • :没有进程会被杀掉,只是执行服务的 命令。
      • 字段:定义了退出后, 的重启方式

        • (默认值):退出后不会重启
        • :只有正常退出时(退出状态码为0),才会重启
        • :非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启
        • :只有被信号终止和超时,才会重启
        • :只有在收到没有捕捉到的信号终止时,才会重启
        • :超时退出,才会重启
        • :不管是什么退出原因,总是重启

        设为,表示任何意外的失败,就将重启。如果 正常停止(比如执行命令),它就不会重启。
        注:[对于守护进程,推荐设为。对于那些允许发生错误退出的服务,可以设为]

      • 字段:表示 Systemd 重启服务之前,需要等待的秒数。

  • 区块
    区块定义如何安装这个配置文件,即怎样做到开机启动。

    • 字段:表示该服务所在的。

    • 的含义是服务组,表示一组服务。

    • 指的是:所在的 是。
      这个设置非常重要,因为执行命令时,sshd.service的一个符号链接,就会放在目录下面的子目录之中。
      有默认的启动 。

      上面的结果表示,默认的启动 是。在这个组里的所有服务,都将开机启动。这就是为什么命令能设置开机启动的原因。
      使用 的时候,命令和命令也很有用。

      一般来说,常用的有两个:
      :表示多用户命令行状态;
      :表示图形用户状态,它依赖于。

注册服务实例

  • 配置文件目录
    脚本目录:
    系统服务目录:
    用户服务目录:

  • 在目录下新建文件:

重载系统服务:
设置开机启动:
启动服务:
停止服务:
重启服务:
注:[修改完配置文件要重载配置文件]
参考:
https://www.freedesktop.org/software/systemd/man/systemd.service.html
https://www.jianshu.com/p/79059b06a121
https://wiki.archlinux.org/title/systemd/User
http://www.jinbuguo.com/systemd/systemd.service.html

三、补充

适用于无界面的程序自启动

对于有或文件的Linux发行版本,开机自启动只需要在文件中添加上自己程序的路径即可,但如果程序是有界面的,仍然只能使用方法一来设置开机自启动。
注:现在已经不提倡使用这种方式设置开机自启动了,如果使用过程中设置失败了,需要查看文件是否具有可执行权限(只是的软链接,添加文件的可执行权限是不管用的)。

文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux24909 人正在系统学习中

来源:从此开始低调范??

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年11月10日
下一篇 2022年11月10日

相关推荐