判断linux系统中的服务管理命令是service还是systemctl

Jushuang Xiao | Created: Jul 19, 2016 Updated: Jul 24, 2024

作为网站维护人员,经常要管理客户linux系统中运行的一些服务,例如mysql,nginx等。然而客户的linux系统版本不同,甚至是不同的distribution,因此我经常会遇到一个问题,到底这个linux的服务管理命令是service还是systemctl呢?

一开始我会用以下办法来解决这个问题,那就是查看当前linux系统的distribution及版本号。因为我在网上经常看到CentOS 6重启mysql的命令是 service mysql restart,CentOS 7的是 systemctl restart mysql。查看linux系统distribution及版本号的命令是 lsb_release -a 。如下图所示,当前linux系统为CentOS 7,所以可以用systemctl来管理系统中运行的服务。

terminal 1.png

大部分情况下这个办法是可行的,但有时候系统中无法使用 lsb_release -a 命令,且linux的distribution也不只有CentOS,还有RedHat、Debian、Ubuntu等。要记住这些distribution版本号对应的服务管理命令也不是不可能,我相信大部分人不会这样做的。

还有一种办法就是尝试,两个命令都试一遍,哪个正确就用哪个。这种办法避免不了会看到一些报错信息,非常不符合系统维护人员精准控制的感觉。

直到我了解到,linux系统中的服务管理程序跟init进程有关系,这个问题才算得到彻底的解决。

计算机从按开机键到系统启动的流程,在流程启动的最后一步就是启动系统的第一个用户态进程init进程,其进程ID永为1。目前比较流行的init进程分为三种:sysvinit、upstart、systemd。使用命令 pstree 就能看到当前的linux系统的init进程。通常我们见到的init进程是sysvinit和systemd,对应系统可以使用的命令是service和systemctl。

例如:

service command.png

可用的服务管理命令是service。

systemctl command.png

可用的服务管理命令是systemctl。

关于作者

Dan Hu

Jushuang Xiao

联系我们 订阅电子报

Practical B2B Marketing Tips to 10X Better Marketing Results

Join 2,000+ professionals getting: Proven growth tactics, battle-tested strategies, and real B2B case studies.

Stephen Tseng
Stephen Tseng

为什么 B2B 企业的广告预算不断增加,高质量询盘却没有增长?

对于许多 B2B 企业来说,广告预算持续投入,网站访问量看起来也不错,但真正有价值的询盘却始终有限。问题往往不在于是否继续加预算,而在于广告是否吸引了正确的客户,以及点击之后是否形成有效转化。

继续阅读 →

Stephen Tseng
Stephen Tseng

海外品牌在中国卖不动,真的是中国市场太难了吗?

很多海外企业觉得“中国市场太难了”。在得出这个结论之前,先问一个问题:当中国客户产生采购需求时,他们能不能在百度上找到你?问题往往不是需求不足,而是品牌可见度不够。

继续阅读 →