systemd--------------Ubuntu 18.04 自启动服务

    技术2025-04-21  22

            ubuntu下自启动服务,习惯了在rc.local添加,而在ubuntu 18.04系统下,已经没有了irc.local。从18.04开始,Ubuntu发行版本已经使用systemd来启动服务,不再使用initd。刚好用到,于是就静下来看了下systemd启动的过程。

            废话不多,下面是启动自己程序的步骤:

    1. 添加/etc/systemd/system/myapp.service服务,内容如下:

    [Unit]

    Description=user app

    # Requires=serial-getty@ttyGS0.service     #添加自己程序的依赖

    #After=networking.service  

    [Service]

    type=forking                                        

    ExecStart=/bin/bash /root/app.sh                # 用户的服务脚本

    [Install]

    WantedBy=multi-user.target

    2.在/root/app.sh增加自己的服务,并增加执行权限,sudo chmod a+x /root/app.sh

    note:因为启动该服务时,系统环境还未初始化,所以脚本中自己手动添加所有需要的系统环境,

    如:LD_LIBRARY_PATH,PATH等。

    3.使能服务

    #systemctl enable myapp      

    重启系统就会自动执行/root/app.sh

     -----------------------------------------------------------------------------------------------------------------------

    note:1.Ubuntu中,服务分别放在两个位置,/etc/systemd/system/ 和/lib/systemd/system/ 。

      前者是用户定义的服务居多,后者系统服务居多。

            2.myapp.service中 [Unit]..类似字段要注意首字母大写,之前看了有些文章没有大写,测试时不满足语法,无法启动服务。

            测试语法是否正确方法:# systemctl reload myapp.service,     #systemctl enable myapp.service

            3.需要做rootfs的,可以直接建立软连接人间代替 systemctl enable xxx  命令

             执行过该命令的应该可以看到,该命令实质上就是在/etc/systemd/system/multi-user.target.wants/ 下建立了一个同名软连接。  “multi-user.target.wants”这里与服务中install内容对应。

            

     

     

     

    Processed: 0.012, SQL: 9