我最近安装了全新的 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
,它会给我一个OK
或Failure
消息。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被取代遗产sysvinit
和systemd
。这是一项重大但必要的变革,因为它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?