Nilfisk 集团总部位于丹麦,在 40 多个国家和地区设有销售公司。Nilfisk 结合强大的分销商网络,在全球 100 多个国家销售产品。力奇的生产设施位于亚洲、欧洲和美洲。
我们与2020年2月开始接手力奇清洁微信公众号,在此之前该公众号每月并没有规律的推送,各项公众号数据也非常的惨淡。
作为网站维护人员,经常要管理客户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来管理系统中运行的服务。
大部分情况下这个办法是可行的,但有时候系统中无法使用 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。
可用的服务管理命令是systemctl。