美文网首页linux
systemd服务管理

systemd服务管理

作者: 郭不戳 | 来源:发表于2022-09-19 07:57 被阅读0次

    systemd简介

    systemd是Linux系统的一组基本构建块
    它提供了一个系统和服务管理器
    它作为PID 1 运行并启动系统的其余部分进程
    控制systemd的主要命令是systemctl

    systemd命令

    [root@web1 ~]# systemctl       #列出所有启动的服务
    [root@web1 ~]# systemctl status <服务名称>       #查看服务状态
    [root@web1 ~]# systemctl start <服务名称>       #启动服务状态
    [root@web1 ~]# systemctl stop <服务名称>       #关闭服务状态
    [root@web1 ~]# systemctl restart <服务名称>       #重启服务状态
    [root@web1 ~]# systemctl enable <服务名称>       #设置开机自启
    [root@web1 ~]# systemctl enable --now <服务名称>       #设置开机自启并启动
    [root@web1 ~]# systemctl disable <服务名称>       #禁止开机自启
    [root@web1 ~]# systemctl is-active <服务名称>       #查看是否激活
    [root@web1 ~]# systemctl is-enabled <服务名称>       #查看是否开机自启
    [root@web1 ~]# systemctl reboot       #重启计算机
    [root@web1 ~]# systemctl poweroff       #关闭计算机
    

    Unit文件

    systemd管理服务时会读取对应的配置文件也就是Unit文件
    读取Unit文件的目录(优先级由高到低)
    /etc/systemd/system (设置了开机自启的Unit文件)
    /usr/lib/systemd/system (所有已经安装软件的Unit文件)

    Unit文件案例

    [Unit]
    Description=Command Scheduler
    [Service]
    EnvironmentFile=/etc/sysconfig/crond
    ExecStart=/usr/sbin/crond -n $CRONDARGS
    ExecReload=/bin/kill-HUP $MAINPID
    killMode=precess
    [Install]
    WantedBy=multi-user.target
    

    Unit语法描述

    Unit语法描述

    systemd案例

    编写Unit文件,使systemctl命令控制nginx

    编写Unit文件

    [root@web1 ~]# cd  /usr/lib/systemd/system 
    [root@web1 ~]# cp httpd.service nginx.service    //拷贝模板
    [root@web1 ~]# vim  nginx.service   //修改
    [Service]
    Type=forking  //nginx是多进程类型程序,要设置为forking
    ExecStart=/usr/local/nginx/sbin/nginx  //当执行了systemctl start nginx之后执行的命令
    ExecReload=/usr/local/nginx/sbin/nginx -s reload   //当执行了systemctl reload nginx之后执行的命令
    ExecStop=/bin/kill -s QUIT $MAINPID    //当执行了systemctl stop nginx之后执行的命令,这里是用kill命令发送退出信号给nginx的进程号,相当于停止nginx服务,-s QUIT是发送退出信号,使nginx优雅关闭(处理完客户请求才退出),$MAINPID是变量,里面存了nginx的进程号
    [Install]
    WantedBy=multi-user.target   //支持开机自启
    

    激活Unit文件

    [root@web1 ~]# systemctl daemon-reload      //激活刚才的test.service文件,但有时可能不好使,可以重启系统
    然后重启服务之后可以用systemctl等命令控制nginx
    

    提示:必须要提前先安装好nginx服务,并且没有其他服务占用80端口!

    相关文章

      网友评论

        本文标题:systemd服务管理

        本文链接:https://www.haomeiwen.com/subject/xlauortx.html