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

 

posted @ 2021-01-19 21:31  NQ31  阅读(298)  评论(0编辑  收藏  举报