systemd下的systemctl命令
从fedora15开始,系统对于daemon的启动管理方法不再采用
SystemV形式,而是使用了
sytemd的架构来管理daemon的启动。
systemd的服务管理程序
systemctl是最主要的工具。它融合 service 和chkconfig的功能于一体。
运行一个服务:
systemctl start network.service
关闭网络服务:
systemctl stop network.service
重启网络服务:
systemctl restart network.service
显示一个服务(无论运行与否)的状态:
systemctl status network.service
在开机时启用一个服务:
systemctl enable network.service
在开机时禁用一个服务:
systemctl disable network.service
查看服务开机是否启动:
systemctl is-enabled network.service;echo $? 或者是chkconfig
使用systemctl命令,请记住start,stop,restart,status,enable,disable,is-enabled。
从runlevel 到 target的转变:
在systemd的管理体系里面,以前的运行级别(runlevel)的概念被新的运行目标(target)所取代。tartget的命名类似于
multi-user.target等这种形式,比如原来的运行级别3(runlevel3)就对应新的多用户目标(multi-
user.target),run level
5就相当于graphical.target。由于不再使用runlevle概念,所以/etc/inittab也不再被系统使用。
而在systemd的管理体系里面,默认的target(相当于以前的默认运行级别)是通过软链来实现。例如
ln -s /lib/systemd/system/runlevel3.target /etc/systemd/system/default.target
在/lib/systemd/system/
下面定义runlevelX.target文件目的主要是为了能够兼容以前的运行级别level的管理方法。
事实上/lib/systemd/system/runlevel3.target,同样是被软连接到multi-user.target。
显示当前的处于运行状态的daemon
# systemctl
UNIT LOAD ACTIVE SUB JOB DESCRIPTION
<略>
fedora-l...odules.service loaded active exited Load legacy module configu
iptables.service loaded active exited IPv4 firewall with iptable
显示该daemon的当前状态
# systemctl status httpd.service
httpd.service - The Apache HTTP Server (prefork MPM)
Loaded: loaded (/lib/systemd/system/httpd.service; disabled)
Active: inactive (dead) <-- 表示未启动,启动时为activing;
CGroup: name=systemd:/system/httpd.service
等同于/etc/init.d/httpd status
该启动文件原本在/etc/init.d/目录下,新架构下被/lib/systemd/system/下相应的文件所取代。例如实例中的/lib/systemd/system/httpd.service,http的启动等相关的配置都在这个文件里修改。
unit的启动停止
# systemctl start httpd.service 等同于 /etc/init.d/httpd start
# systemctl stop httpd.service 等同于 /etc/init.d/httpd stop
配置成系统启动时默认启动
# systemctl enable httpd.service 等同于/sbin/checkconfig httpd
在启动文件/lib/systemd/system/httpd.service里的[Install]单元里来指定启动的目标(target)级别。比如
[Install]
WantedBy=multi-user.target
则表明在多用户目标(multi-user.target,相当于level3)时自动启动。
另外一旦设定了自动启动(enbale),就在/etc/systemd/system/
.wants/下面建了一个httpd.service的软连接,连接到/lib/systemd/system/下的相应服务那里
关闭自动启动
# systemctl disable httpd.service 相当于 /sbin/checkconfig httpd off
添加新的unit
把新生成的foo.service 放到/lib/systemd/system/下面,然后采用load命令导入
#systemctl load foo.service 相当于/sbin/chkconfig --add foo
显示自动启动状态的unit
在systemd里面没有像/sbin/chkconfig –list那样显示自动启动的状态的可操作的命令,只能用以下命令显示
#ls /etc/systemd/system/multi-user.target.wants/
阅读(3388) | 评论(0) | 转发(0) |