zoukankan      html  css  js  c++  java
  • Linux之系统服务

    一、Linux启动流程

    1、Centos 6.x启动流程图解

    2、Centos 6.x和CentOS 7.x启动流程对比图解

     3、运行级别

    linux系统下有七个运行级别

    运行级别 systemd目标名称 作用
    0 runlevel0.target,poweroff.target 关机
    1 runlevel1.target,rescue.target 单用户模式
    2 runlevel2.target,multi-user.target 暂未使用
    3 runlevel3.target,multi-user.target 多用户的文本界面
    4 runlevel4.target,multi-user.target 没有使用
    5 runlevel5.target,graphical.target 多用户的图形界面
    6 runlevel6.target,reboot.target 重启
    # 查看系统默认的运行级别
    [root@192 ~]# ls /usr/lib/systemd/system/runlevel*
    # 查看系统默认的运行级别
    [root@192 ~]# systemctl get-default
    graphical.target
    # 查看正在运行的级别  
    [root@192 ~]# runlevel
     N 3
    # 设置默认运行级别
    [root@192 ~]# systemctl set-default graphical.target  #切换图形界面

    二、Linux systemd

    1、概述

    linux存在问题:linux一直都是采用init进程作为祖宗进程,init进程由于是串行启动,所以存在启动时间长,启动脚本复杂,导致启动速度很慢,直到centos 7换成并行启动。

    systemd:system daemon守护进程,主要是解决linux系统init进程存在的问题,目标就是为系统启动和管理提供一套完整的解决方案,目前最新系统都采用了systemd管理(RedHat7,CentOS7,Ubuntu15等)

    优势(以Centos 7为例):1、并行启动服务,显著提高开机效率;2、关机只关闭正在运行的服务,不会像CentOS6那样把服务全部都关闭一次;3、服务启动和停止不再使用脚本进行管理,也就是/etc/init.d下不再有脚本;4、解决原有模式缺陷,比如:原有service不会关闭程序产生的子进程。                             

    2、systemd相关配置文件     

    /usr/lib/systemd/system/ #类似Centos6系统的启动脚本,/etc/init.d/
    /etc/systemd/system/ #类似Centos6系统的/etc/rc.d/rcN.d/
    /etc/systemd/system/multi-user.target.wants/,开机要启动的程序

    3、systemd管理服务命令

    #systemctl常用命令
    '''
    systemctl start crond.service     # 启动服务
    systemctl stop crond.service       # 启动服务
    systemctl restart crond.service   # 重启服务
    systemctl reload crond.service    # 重新加载配置
    systemctl status crond.service    # 查看服务运行状态
    systemctl is-active sshd.service  # 查看服务是否在运行中
    systemctl mask crond.service      # 禁止服务运行
    systemctl unmask crond.service    # 取消禁止服务运行
    systemctl cat vsftpd              # 查看启动文件
    '''
    # systemctl status 服务名称/crond.service查看服务状态
    [root@192 ~]# systemctl status crond.service
    ● crond.service - Command Scheduler
       Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
       Active: active (running) since Fri 2021-01-15 20:18:28 CST; 2h 49min ago
     Main PID: 538 (crond)
       CGroup: /system.slice/crond.service
               └─538 /usr/sbin/crond -n
    '''
    loaded           #服务单元的配置文件已经被处理
    active(running)  #服务持续运行
    active(exited)   #服务成功完成一次的配置
    active(waiting)  #服务已经完成但在等到某个事件
    inactive        #服务没有在运行
    enabled          #服务设定为开机运行
    disabled         #服务设定为开机不允许
    static            #服务开机不启动,但是可以配其他服务调用启动
    '''

    1、systemctl服务开机启动、不启动等命令

    systemctl enable crond.service     #开机自动启动
    systemctl disable crond.service    #开机不自动启动
    systemctl list-unit-files          #查看各个级别下服务的启动与禁用
    systemctl is-enabled crond.service #查看特定服务是否为开机自启动
    systemctl daemon-reload             #创建新服务文件需要重载变更

    2、关机、重启、日志命令

    systemctl poweroff        #立即关机
    systemctl reboot        #重启命令
    #--------------日志有关命令--------------
    journalctl -n 20    #查看日志最后20行
    journalctl -f       #动态查看日志
    journalctl -p err   #查看日志的级别
    journalctl -u crond #查看某个服务的单元的日志
    journalctl -xe      #排查问题日志
    '''
    -xe是排查问题时最常用的参数:
    -e 从结尾开始看
    -x 相关目录(如:问题相关的网址)
    '''

    3、centos6、centos7启动服务

    #1  centos6 上启动服务:service start network
    #2  centos7 启动服务:systemctl start network

    4、制作系统服务

    #1、切换到system目录下
    cd /usr/lib/systemd/system/
    #2、创建一个conf文件,内容模板如下:
    [Unit]
    Description=Vsftpd ftp daemon # 描述
    After=network.target          # 在XX后启动
    [Service]
    Type=forking                  # 程序后台运行
    ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf # 命令
    # ExecStartPre 启动之前执行
    # ExecStop 停止
    # ExecRestart 重启
    # ExecReload 重新加载
    [Install]
    WantedBy=multi-user.target  # 在哪个运行级别下
    
    #例子:制作nginx服务
    [Unit]
    Description=my nginx
    After=network.target  #在哪个服务启动后启动
    [Service]
    Type=forking
    ExecStart=/usr/local/nginx/sbin/nginx
    ExecStop=/usr/local/nginx/sbin/nginx -s stop
    ExecRestart=/usr/local/nginx/sbin/nginx -s restart
    ExecReload=/usr/local/nginx/sbin/nginx -s reload
    [Install]
    WantedBy=multi-user.target
    # 启动服务 
        systemctl start mynginx.service
    # 查看服务状态:
        systemctl status mynginx.service
    # 开机自启动
        systemctl enable mynginx
    # 取消开机自启动
        systemctl disable mynginx.service
  • 相关阅读:
    css样式的六种选择器
    css 颜色表示法
    css 文本设置
    “http”和“https”的区别是什么?优缺点是什么?
    Httpclient
    接口认证:Bearer Token(Token 令牌)
    哪个参数用来区分请求来自客户(手机)端还是服务器(PC)端?
    常用的HTTP响应头
    Http 请求头包含哪些信息?
    单例集合的体系
  • 原文地址:https://www.cnblogs.com/nq31/p/14284712.html
Copyright © 2011-2022 走看看