Systemctl是systemd用于管理系统和管理服务的工具。许多现代Linux发行版,如Ubuntu、Debian、Fedora、Linux Mint、OpenSuSE、Redhat都采用systemd作为默认的init系统。
使用systemctl,可以启动、停止、重新加载、重启服务、列出服务单元、检查服务状态、启用/禁用服务、管理运行级别和电源管理。在本文中将展示如何在Linux中使用systemctl命令来管理systemd服务。
# W: o- u3 q0 ?/ l: e/ E7 y 使用systemctl启动服务时,命令格式:systemctl start [service-name]。例如,启动firewalld服务: [root@localhost ~]# systemctl start firewalld: C+ R, \; R$ a, M/ p <以上代码可复制粘贴,可往左滑> 与以前老版本的linux中的service命令相反,systemctl start命令不输出任何内容。
要停止服务,请使用systemctl stop [service-name]。例如,停止firewalld服务: [root@localhost ~]# systemctl stop firewalld <以上代码可复制粘贴,可往左滑>
要重新启动服务,请使用systemctl restart [service-name],例如: [root@localhost ~]# systemctl restart firewalld <以上代码可复制粘贴,可往左滑>
要重新加载服务的配置(例如ssh)而不重新启动它,请使用systemctl reload [service-name],例如:7 S* k- h' j% z1 z, b, A [root@localhost ~]# systemctl reload sshd <以上代码可复制粘贴,可往左滑>
*systemctl检查服务状态 为了查看服务是否正在运行,我们可以使用systemctl status [service-name]来查看。0 }' U. {; k: ?* k8 v [root@localhost ~]# systemctl status firewalld( r) i+ w& y: o0 t2 j2 {+ a <以上代码可复制粘贴,可往左滑>
*检查服务是否设置为开机启动5 ]5 Q& B; v% @7 k 要在引导时启用服务,请使用systemctl enable [service-name],例如: [root@localhost ~]# systemctl enable httpd.service Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.& b' N5 z$ @4 I3 f! f. e <以上代码可复制粘贴,可往左滑>
同样,disable时取消引导时启用服务:5 C' O' a/ N+ }9 j9 ~+ m [root@localhost ~]# systemctl disable httpd.service <以上代码可复制粘贴,可往左滑>
可以使用is-enabled选项检查开机是否启动该服务,请运行:( {9 ^: c. y0 Y5 Q3 ~8 B( Z0 ?) u, \ [root@localhost ~]# systemctl is-enabled httpd.service <以上代码可复制粘贴,可往左滑>
输出的内容enabled表示开机时启动该服务,disabled表示开机时不启动该服务。 *systemctl列出单元* ^& J0 p ]/ u6 m3 ?/ S- c/ z% S 要列出所有激活的单元,使用list-units选项。" {6 B& \! B4 ]" b( T% D% v [root@localhost ~]# systemctl list-units/ j& u& S( Z+ u1 a& Z+ x <以上代码可复制粘贴,可往左滑>
要列出所有活动的服务,请运行:) ]9 o6 G* q5 K- L2 A& _; w- V$ N, @, Q [root@localhost ~]# systemctl list-units -t service* \9 R: z0 p; k. J1 g/ S4 I8 i <以上代码可复制粘贴,可往左滑>
*使用systemctl重启、关机系统 像poweroff、shutdown命令一样,systemctl命令可以关闭系统,重启或进入休眠状态。% T+ ~( J6 w1 c l 关机: [root@localhost ~]# systemctl poweroff <以上代码可复制粘贴,可往左滑> 重启: [root@localhost ~]# systemctl reboot) l/ R- e; C; X& ^' L <以上代码可复制粘贴,可往左滑> 系统休眠: [root@localhost ~]# systemctl hibernate <以上代码可复制粘贴,可往左滑>8 `; Q9 f8 D* s: L; ^5 A *使用systemclt管理远程系统 通常,上述所有systemctl命令都可以用于通过systemctl命令本身管理远程主机。这将使用ssh与远程主机进行通信。如下所示:[root@localhost ~]# systemctl status httpd -H root@192.168.0.12 <以上代码可复制粘贴,可往左滑>
-H选项,指定远程主机的用户名和密码。 *管理Targets Systemd具有Targets的概念,这些Targets的目的与sysVinit系统中的运行级别相似。sysVinit中的运行级别主要是数字(0,1,2,-6)。以下是sysVinit中的运行级别及其对应的systemd中的target:. Z4 j0 B: ~# |) `5 O 0 runlevel0.target, poweroff.target 1 runlevel1.target, rescue.target& p, ~+ E5 W9 w: C [1 K 2,3,4 runlevel2.target, runlevel3.target,runlevel4.target, multi-user.target8 A2 w% W: O. H$ @; j 5 runlevel5.target, graphical.target) C# A2 m" `# ^1 Y 6 runlevel6.target, reboot.target" Z7 Z; C" f1 X. w <以上代码可复制粘贴,可往左滑> 如果想要查看当前的运行级别,可以使用如下命令: [root@localhost ~]# systemctl get-default 8 T. d2 F! C. z8 b multi-user.target <以上代码可复制粘贴,可往左滑>
设置默认的运行级别为graphical,命令如下:5 h6 i( s( u' E6 ~* E6 t+ } [root@localhost ~]# systemctl set-default graphical.target - G! w1 S0 _" s l- x0 E Removed symlink /etc/systemd/system/default.target.5 S4 f# L+ t. z/ Z# B8 T Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/graphical.target.0 i/ B7 u. g2 H1 F <以上代码可复制粘贴,可往左滑>
想要列出所有激活的target,可以使用下面命令: [root@localhost ~]# systemctl list-units -t target( i( S+ T- K, u7 D! N @+ z( l <以上代码可复制粘贴,可往左滑>
*systemd工具的其他命令( @8 Q3 i4 V+ Q) m. Y. e! S! l journalctl日志收集1 x) p/ t1 }9 v5 Q$ q systemd有自己的日志系统,称为journald。它替换了sysVinit中的syslogd。0 N3 I& A+ V3 r L+ ]0 l! J/ y [root@localhost ~]# journalctl <以上代码可复制粘贴,可往左滑>
要查看所有引导消息,请运行命令journalctl -b [root@localhost ~]# journalctl -b <以上代码可复制粘贴,可往左滑>5 m5 D4 _/ e$ P 以下命令实时跟踪系统日志(类似于tail -f): [root@localhost ~]# journalctl -f <以上代码可复制粘贴,可往左滑>
1 M1 L8 n4 {1 T2 d7 M [root@localhost ~]# systemd-analyze; @2 g3 T; L3 Z+ f9 z8 H6 O Startup finished in 497ms (kernel) + 1.836s (initrd) + 6.567s (userspace) = 8.901s <以上代码可复制粘贴,可往左滑>
最后显示系统启动时间为8.901秒。查看服务的启动时间: [root@localhost ~]# systemd-analyze blame$ N- \, `2 W+ s9 C- A <以上代码可复制粘贴,可往左滑>
. V0 A1 h0 W9 q. t- o2 d [root@localhost ~]# hostnamectl6 Z3 P8 w) E: j/ A% n$ |, A6 a/ B <以上代码可复制粘贴,可往左滑>
*总 结) X& D/ K! P5 Z: X 在本文学习了systemctl命令来管理Linux发行版中的系统服务。希望对你们有所帮助。3 p9 ]! Q% ?2 f |
微信公众号
手机版