CentOS 7.0中一个最主要的改变,就是切换到了systemd。它用于替代红帽企业版Linux前任版本中的SysV和Upstart,对系统和服务进行管理。systemd兼容SysV和Linux标准组的启动脚本。
Systemd是一个Linux操作系统下的系统和服务管理器。它被设计成向后兼容SysV启动脚本,并提供了大量的特性,如开机时平行启动系统服务,按需启动守护进程,支持系统状态快照,或者基于依赖的服务控制逻辑。
先前的使用SysV初始化或Upstart的红帽企业版Linux版本中,使用位于/etc/rc.d/init.d/目录中的bash初始化脚本进行管理。而在RHEL 7/CentOS 7中,这些启动脚本被服务单元取代了。服务单元以.service文件扩展结束,提供了与初始化脚本同样的用途。要查看、启动、停止、重启、启用或者禁用系统服务,你要使用systemctl来代替旧的service命令。
注:为了向后兼容,旧的service命令在CentOS 7中仍然可用,它会重定向所有命令到新的systemctl工具。
使用systemctl来启动/停止/重启服务
要启动一个服务,你需要使用如下命令:
1. # systemctl start httpd.service
这会启动httpd服务,就我们而言,Apache HTTP服务器。
要停掉它,需要以root身份使用该命令:
1. # systemctl stop httpd.service
要重启,你可以使用restart选项,如果服务在运行中,它将重启服务;如果服务不在运行中,它将会启动。你也可以使用try-start选项,它只会在服务已经在运行中的时候重启服务。同时,reload选项你也可以有,它会重新加载配置文件。
1. # systemctl restart httpd.service
2. # systemctl try-restart httpd.service
3. # systemctl reload httpd.service
我们例子中的命令看起来会像下面这样:
检查服务状态
要检查服务状态,你可以使用status选项,看这里:
1. # systemctl status httpd.service
输出结果就像这样:
它会告诉你运行中的服务的方方面面。
使用启用/禁用服务来控制开机启动
你也可以使用enable/disable选项来控制一个服务是否开机启动,命令如下:
1. # systemctl enable httpd.service
2. # systemctl disable httpd.service
不过对于设置开机启动,我认为下面这种方式可能更好一些:
CentOS 7 的 /etc/rc.d/rc.local 是没有执行权限的, 系统建议创建 systemd service 启动服务
于是查看 systemd 里 svn 的配置文件 /lib/systemd/system/svnserve.service
[Unit]
Description=Subversion protocol daemon
After=syslog.target network.target
[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/svnserve
ExecStart=/usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid $OPTIONS
[Install]
WantedBy=multi-user.target
可以看到 svn 的service 配置文件在 /etc/sysconfig/svnserve,下面对其进行修改
vi /etc/sysconfig/sevnserce
// 将配置文件内部的
OPTIONS="-r /var/svn" 改为 svn 版本库存放的目录,:wq 保存退出
在提示符下输入
systemctl enable svnserve.service
此时重启服务器,再输入
[root@localhost ~]# ps -aux |grep svn
root 1363 0.0 0.0 197628 1280 ? Ss 10:45 0:00 /usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid -r /var/svn/repository
root 2035 0.0 0.0 112680 984 pts/0 S+ 10:56 0:00 grep --color=auto svn
强制关闭服务可以使用
kill -9 1363 // 其中1363 为 pid