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