Linux添加开机自启服务

Linux添加开机自启服务

参考:Linux 添加开机启动方法(服务/脚本)

系统启动时需要加载的配置文件

1
2
3
4
/etc/profile、/root/.bash_profile
/etc/bashrc、/root/.bashrc
/etc/profile.d/*.sh、/etc/profile.d/lang.sh
/etc/sysconfig/i18n、/etc/rc.local(/etc/rc.d/rc.local)

自定义服务文件,添加到系统服务,通过Systemctl管理

  1. 使用vim创建服务文件 服务名.service文件,例如:nginx.service、redis.service、supervisord.service

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    [Unit]:服务的说明
    Description:描述服务
    After:描述服务类别

    [Service]服务运行参数的设置
    Type=forking 是后台运行的形式
    ExecStart 为服务的具体运行命令
    ExecReload 为服务的重启命令
    ExecStop 为服务的停止命令
    PrivateTmp=True 表示给服务分配独立的临时空间
    注意:启动、重启、停止命令全部要求使用绝对路径

    [Install] 服务安装的相关设置,可设置为多用户
    WantedBy=multi-user.target
  2. 赋予服务文件755权限

  3. 将服务文件放至目录路径:/usr/lib/systemd/system

  4. 设置开机自启动(任意目录下执行)。如果执行启动命令报错,则执行:systemctl daemon-reload

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    设置开机自启动
    [root@localhost ~]# systemctl enable nginx.service
    [root@localhost ~]# systemctl enable supervisord

    停止开机自启动
    [root@localhost ~]# systemctl disable nginx.service
    [root@localhost ~]# systemctl disable supervisord

    验证一下是否为开机启动
    [root@localhost ~]# systemctl is-enabled nginx
    [root@localhost ~]# systemctl is-enabled supervisord
  5. 其他命令

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    启动nginx服务
    [root@localhost ~]# systemctl start nginx.service

    停止nginx服务
    [root@localhost ~]# systemctl start nginx.service

    重启nginx服务
    [root@localhost ~]# systemctl restart nginx.service

    查看nginx服务当前状态
    [root@localhost ~]# systemctl status nginx.service

    查看所有已启动的服务
    [root@localhost ~]# systemctl list-units --type=service
  6. 服务文件示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    # supervisord.service进程管理服务文件
    [Unit]
    # 内容自己定义:Description=Supervisor daemon
    Description=Process Monitoring and Control Daemon

    After=rc-local.service nss-user-lookup.target

    [Service]
    Type=forking
    ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
    ExecStop= /usr/bin/supervisorctl shutdown
    ExecReload=/usr/bin/supervisorctl reload
    Restart=on-failure
    RestartSec=42s
    KillMode=process

    [Install]
    WantedBy=multi-user.target
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # nginx.service服务文件
    [Unit]
    Description=nginx - high performance web server
    After=network.target remote-fs.target nss-lookup.target

    [Service]
    Type=forking
    ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
    ExecReload=/usr/local/nginx/sbin/nginx -s reload
    ExecStop=/usr/local/nginx/sbin/nginx -s stop

    [Install]
    WantedBy=multi-user.target
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # redis.service服务文件
    [Unit]
    Description=Redis
    After=network.target remote-fs.target nss-lookup.target

    [Service]
    Type=forking
    ExecStart=/usr/local/bin/redis-server /etc/redis.conf
    ExecStop=kill -INT `cat /tmp/redis.pid`
    User=www
    Group=www

    [Install]
    WantedBy=multi-user.target