CentOS7系统管理命令使用详解

软件管理相关

  • 查看安装的软件包
rpm -qa | grep nfs
  • 查看软件包的安装文件
rpm -ql nfs-utils

服务管理相关

  • 查看系统所有安装的服务项
systemctl list-unit-files --type=service
  • 查看系统所有运行的服务项
systemctl list-units --type=service
  • 查看系统所有开机自启动的服务项
systemctl list-unit-files --type=service | grep enabled
  • 查看服务的依赖关系
systemctl list-dependencies nfs-server
  • 查看出错的服务
systemctl list-units --type=service --state=failed
  • 清除服务项的错误状态
systemctl reset-failed <服务项名称>
  • 查看系统启动耗时
systemd-analyze
  • 查看各项服务启动耗时
systemd-analyze blame | grep .service
  • 禁用服务

这可以防止服务被其他服务间接启动,也无法通过 start 或 restart 命令来启动服务。

systemctl mask <服务项名称>
  • 启用服务

仅针对于已禁用的服务。

systemctl unmask <服务项名称>

简单服务文件的创建

  • 服务文件的位置

我们自己建立的服务文件直接放在 /etc/systemd/system/ 里面就好了。服务文件要使用 .service 后缀名。

如需修改软件包或系统自带的服务文件,请先将原版服务文件从 /lib/systemd/system/ 拷贝到 /etc/systemd/system/ 再进行修改。

  • 服务文件的模版

以下是最简单的配置模版,直接根据提示或注释修改参数值,然后去掉所有注释即可。

[Unit]
Description=<服务描述>
After=<在哪个模块(服务)之后启动(可选)>

[Service]
Type=<simple|forking|oneshot>
ExecStart=<程序或命令参数>
# 如果 "ExecStart=" 后面的程序或命令是在前台持续运行的,那么 "Type=" 后面应填写 "simple"。
# 如果 "ExecStart=" 后面的程序或命令是在后台持续运行的,那么 "Type=" 后面应填写 "forking"。
# 如果 "ExecStart=" 后面的程序或命令是在前台运行一下就退出的,那么 "Type=" 后面应填写 "oneshot"。
ExecReload=<重新读取配置文件的命令(可选)>
KillSignal=SIGTERM
KillMode=mixed

[Install]
WantedBy=multi-user.target

说明:创建服务文件之后,最好执行一下 systemctl daemon-reload 再启用。

  • 一个例子
[Unit]
Description=NFS server and services  #服务描述信息
DefaultDependencies=no
Requires= network.target proc-fs-nfsd.mount  #依赖到的其他units,强依赖,被依赖的units无法激活时,当前unit即无法激活
Requires= nfs-mountd.service
Wants=rpcbind.socket  #依赖到的其他units,弱依赖
Wants=nfs-idmapd.service

After= local-fs.target  #定义unit的启动次序,表示当前unit应该晚于哪些unit启动,其功能与before相反
After= network.target proc-fs-nfsd.mount rpcbind.socket nfs-mountd.service
After= nfs-idmapd.service rpc-statd.service
Before= rpc-statd-notify.service

# GSS services dependencies and ordering
Wants=auth-rpcgss-module.service
After=rpc-gssd.service rpc-svcgssd.service

# start/stop server before/after client
Before=remote-fs-pre.target

Wants=nfs-config.service
After=nfs-config.service

Conflicts=  #定义units间的冲突关系

[Service]
EnvironmentFile=-/run/sysconfig/nfs-utils  #环境配置文件

Type=oneshot
# 定义硬性ExecStart及相关参数的功能的unit进程启动类型
# simple:默认值;这个daemon主要有ExecStart接的指令串来启动,启动后常驻于内存中
# forking:由ExecStart启动的程序透过spawns延伸出其他子程序来作为此daemon的主要服务原生父程序在启动结束后就会终止
# onshot:用于执行一项任务,随后立即退出的服务,不会常驻于内存中
# notify:与simple相同,但约定服务会在就绪后向systemd发送一个信号,需要配合NotifyAccess来让Systemd接收消息
# idle:与simple类似,要执行这个daemon必须要所有的工作都顺利执行完毕后才会执行。这类的daemon通常是开机到最后才只能即可的服务
RemainAfterExit=yes
ExecStartPre=/usr/sbin/exportfs -r  #ExecStart前运行
ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS  #指明启动unit要运行命令或脚本的绝对路径
ExecStop=/usr/sbin/rpc.nfsd 0  #指明停止unit要运行的命令或脚本
ExecStopPost=/usr/sbin/exportfs -au  #ExecStop后运行
ExecStopPost=/usr/sbin/exportfs -f

ExecReload=/usr/sbin/exportfs -r  #指明重置unit要运行的命令或脚本

ExeStartPost=  #ExecStart后运行
Restart=  #当设定Restart=1时,则当次daemon服务意外终止后,会在此自动启动此服务

[Install]
WantedBy=multi-user.target  #被那些units所依赖,弱依赖
Alias=  #别名(可使用systemctl command Alial.service)
RequiredBy=  #被那些units所依赖,强依赖
Also=  #安装本服务的时候还要安装别的相关服务

注意:对于新创建的unit文件,或者修改了的unit文件,要通知systemd重载此配置文件,而后可以选择重启:

systemctl daemon-reload
posted @ 2020-10-30 09:49  Varden  阅读(662)  评论(0编辑  收藏  举报