CentOS 7.1 - 恢复 top 和 service 的旧功能

CentOS 7.1 - 恢复 top 和 service 的旧功能

我最近安装了全新的 CentOS 7.1 服务器。我注意到它与 CentOS 6.7 有一些不同,我希望有办法恢复某些内容的旧视图。

例如:

问题 1:top

Top 命令以不同的方式显示数据。例如:

新的顶视图:

top - 00:27:45 up  4:58,  1 user,  load average: 0.08, 0.50, 0.89
Tasks: 155 total,   2 running, 153 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  1.1 sy,  0.0 ni, 98.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  4047624 total,  1938600 free,   853888 used,  1255136 buff/cache
KiB Swap:  4194300 total,  4194300 free,        0 used.  2860704 avail Mem

旧顶视图:

top - 00:28:59 up 22:49,  1 user,  load average: 0.19, 0.21, 0.24
Tasks: 157 total,   1 running, 156 sleeping,   0 stopped,   0 zombie
Cpu(s): 17.9%us,  1.0%sy,  0.0%ni, 80.9%id,  0.2%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   4055052k total,  3456240k used,   598812k free,   584160k buffers
Swap:  4194296k total,   191184k used,  4003112k free,  1076124k cached

有没有办法使用旧格式显示内存和统计数据?

问题 2:service命令

在 Centos 6.7 中,如果我执行了类似 的操作service httpd restart,它会给我一个OKFailure消息。CentOS 7.1 似乎不会这样做。

旧观点:

# service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]

新视图:

# service httpd restart
Redirecting to /bin/systemctl restart  httpd.service

有没有办法回到旧视图?我知道这有点微不足道,但有很多次服务尚未启动,或者由于某种原因无法停止。消息状态是一种很好的查看方式。

答案1

问题 1

尝试使用top -M

-M : Detect memory units
        Show memory units (k/M/G) and display floating point values in the
        memory summary.

KiB是表示字节的 SI 单位1000,其中KB表示1024字节。

就我个人而言,我总是只安装htop并用它来代替,因为我发现它更具可读性,更具信息性,而且更强大。

此外,free -k(千字节)、free -m(兆字节)或free -g(千兆字节)也将提供您正在寻找的内存使用情况信息。

编辑:经过进一步调查,top -M可能无法在 CentOS 7 上运行。这是一个很好的答案采用一些替代方法,以及 的替代top方案htop

问题2

CentOS 7被取代遗产sysvinitsystemd。这是一项重大但必要的变革,因为它sysvinit已经过时了,解决其不足之处对开发人员和管理员来说可能是一场斗争。Ubuntu、Debian、RHEL、SUSE 和几乎所有其他主要的 Linux 发行版也已切换到systemd

与这些发行版上的服务交互的正确方法systemd是使用systemctl命令:

restart NAME...
   Restart one or more units specified on the command line. If the units are not running
   yet, they will be started.

因此,就你的情况而言:

systemctl restart httpd

使用systemctl将显示您正在寻找的成功或失败的指示(并返回适当的退出代码)。

作为@伊安说,接受这些变化,因为同样的变化已经发生在每个主要的 Linux 发行版上。

答案2

CentOS 7 与 CentOS 6 有很大不同。您不应该想倒退,而应该接受变化并向前迈进。您不能使用这些命令(或任何其他命令)倒退,除非回到 C6。

学会使用systemctl而不是service;一旦重新掌握肌肉记忆,就同样容易了。等到你必须使用它firewalld时,那才是“有趣的”。

您还会发现其他不同的事情。

net-tools提供的包网络状态是否配置等不是默认安装的,它已被以下工具取代iproute 党卫军知识产权ETC。

您习惯检查的许多日志不在 /var/log 中,您需要启用 rsyslog 才能访问它们或使用 journalctl。

哦,还有 hostnamectl 和......和......

答案3

您提出的第二个问题,即重新启动服务时缺少状态,httpd完全合理。
service命令已被弃用,您需要习惯该systemctl命令。
但您还需要习惯该systemctl status命令。
而不是

# 服务 httpd 重启

你必须输入

#systemctl 重新启动 httpd
#systemctl 状态 httpd
#systemctl 状态 httpd
● httpd.service - Apache HTTP 服务器
   已加载:已加载(/usr/lib/systemd/system/httpd.service;已禁用;供应商预设:已禁用)
   活跃:自 2016-01-02 星期六 11:45:01 CET;8 秒前开始活跃(运行)
     文档:man:httpd(8)
           手册:apachectl(8)
 主 PID:29795(httpd)
   状态:“正在处理请求……”
   CGroup:/system.slice/httpd.service
           ─29795 /usr/sbin/httpd-DFOREGROUND
           ─29796 /usr/sbin/httpd-DFOREGROUND
           ─29797 /usr/sbin/httpd-DFOREGROUND
           ─29798 /usr/sbin/httpd-DFOREGROUND
           ─29799 /usr/sbin/httpd-DFOREGROUND
           └─29800 /usr/sbin/httpd -DFOREGROUND

1 月 2 日 11:45:01 vm.certdepot.net systemd[1]: 正在启动 Apache HTTP 服务器....
1 月 2 日 11:45:01 vm.certdepot.net systemd[1]:已启动 Apache HTTP 服务器。
提示:有些线条被省略了,使用 -l 可以完整显示。

显然,您需要输入两个命令而不是一个,这不是一个明显的进步。
但是,您将对当前配置有更好的了解:

  • 服务正在运行吗?
  • 它在启动时将什么消息写入日志消息?
  • 该服务是否在启动时激活?
  • 使用了哪个配置单元文件?
  • 该服务属于哪个 CGroup?

相关内容