CentOS 7 sytemctl 配置及相关命令

systemctl简介

CentOS 7继承了RHEL 7的新的特性,例如强大的systemctl,而systemctl的使用也使得系统服务的/etc/init.d的启动脚本的方式发生重大改变,也大幅提高了系统服务的运行效率。但服务的配置和以往也发生了极大的不同,变的简单而易用了许多(仁者见仁)。

systemd提供更优秀的框架以表示系统服务间的依赖关系,实现系统初始化时服务的并行启动,同时达到降低Shell的系统开销的效果。
systemd 目标是:尽可能启动更少进程;尽可能将更多进程并行启动,systemd尽可能减少对shell脚本的依赖。

查看后台服务

systemctl --type=单位类型,用来过滤单位

alpstudy(root)system systemctl --type=service
UNIT                        LOAD   ACTIVE SUB     DESCRIPTION
  aegis.service               loaded active running LSB: aegis update.
  agentwatch.service          loaded active exited  SYSV: Starts and stops guest
  aliyun.service              loaded active running auto run aliyunservice or ag
  atd.service                 loaded active running Job spooling tools
  auditd.service              loaded active running Security Auditing Service
  cloud-config.service        loaded active exited  Apply the settings specified
  cloud-final.service         loaded active exited  Execute cloud user/final scr
  cloud-init-local.service    loaded active exited  Initial cloud-init job (pre-
  cloud-init-upgrade.service  loaded active exited  cloud-init upgrade service
  cloud-init.service          loaded active exited  Initial cloud-init job (meta
  crond.service               loaded active running Command Scheduler
  dbus.service                loaded active running D-Bus System Message Bus
  [email protected]          loaded active running Getty on tty1
  irqbalance.service          loaded active running irqbalance daemon
  kdump.service               loaded active exited  Crash recovery kernel arming
  kmod-static-nodes.service   loaded active exited  Create list of required stat
  network.service             loaded active running LSB: Bring up/down networkin
  ntpd.service                loaded active running Network Time Service
  polkit.service              loaded active running Authorization Manager
● postfix.service             loaded failed failed  Postfix Mail Transport Agent
  redis.service               loaded active running Redis persistent key-value d
  rhel-dmesg.service          loaded active exited  Dump dmesg to /var/log/dmesg
  rhel-domainname.service     loaded active exited  Read and set NIS domainname

服务(service):管理着后台服务;
挂载(mount)自动挂载(automount):用来挂载文件系统;
目票(target):运行级别;
套接字(socket):用来创建套接字,并在访问套接字后,立即利用依赖关系间接地启动另一单位

开机服务管理

CentOS 7的服务systemctl脚本存放在:/usr/lib/systemd/,有系统(system)和用户(user)之分,

/usr/lib/systemd/system/
/usr/lib/systemd/user/

像需要开机不登陆就能运行的程序,存在系统服务,即:/usr/lib/systemd/system/ 目录下
每一个服务以.service结尾,一般会分为3部分:[Unit]、[Service]、[Install]

[Unit] 主要是对这个服务的说明,内容包括Description和After,Description用于描述服务,After用于描述服务类别

[Service] 是服务的关键,是服务的一些具体运行参数的设置,

Type=forking是后台运行的形式,

PIDFile为存放PID的文件路径,

ExecStart为服务的具体运行命令,

ExecReload为重启命令,

ExecStop为停止命令,

PrivateTmp=True表示给服务分配独立的临时空间

注意:[Service]部分的启动、重启、停止命令全部要求使用绝对路径,使用相对路径则会报错!

[Install] 是服务安装的相关设置,可设置为多用户的

服务脚本按照上面编写完成后,以754的权限保存在/usr/lib/systemd/system/目录下,这时就可以利用systemctl进行配置

示例-自定义 mongodb 开机启动

vim /usr/lib/systemd/system/mongodb.service

[Unit]
Description=mongodb
After=auditd.service systemd-user-sessions.service time-sync.target network.target
 
[Service]  
Type=forking  
PIDFile=/var/run/mongodb/mongod.pid
ExecStart=/root/script/mongo_server_start.sh
ExecStop=/root/script/mongo_server_stop.sh
PrivateTmp=true 
 
[Install]
WantedBy=multi-user.target
[Unit]:服务的说明
Description:描述服务
After:描述服务类别
[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:[Service]的启动、重启、停止命令全部要求使用绝对路径
[Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3

systemctl 配置命令

systemctl status mongodb.service            // 查看mongodb启动状态

systemctl start mongodb.service             // 启动 mongodb

systemctl stop mongodb.service              // 关闭 mongodb

systemctl enable mongodb.service         // 开机启动 mongodb 服务

systemctl disable mongodb.service         // 开机关闭 mongodb 服务

systemctl list-units --type=service 	    // 查看所有已启动的服务

参考资料

  1. CentOS 7 sytemctl
    自定义服务开机启动

猜你喜欢

转载自blog.csdn.net/frone/article/details/84583848