Назад | Перейти на главную страницу

CentOS 7.1 - возврат к старым функциям топа и сервиса

Недавно я установил новый сервер 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

Есть ли способ вернуться к прежнему виду? Я понимаю, что это несколько тривиально, но было много случаев, когда служба еще не была запущена или не останавливалась по какой-либо причине. Статус сообщения - хороший способ увидеть это.

CentOS 7 значительно отличается от CentOS 6. Вместо того, чтобы идти назад, вы должны принять изменения и двигаться вперед. Вы не можете вернуться назад с этими командами (или любыми другими), не вернувшись к C6.

Научитесь использовать systemctl вместо того service; это так же просто, если заново изучить мышечную память. Подождите, пока вам придется работать с firewalld хотя, это «весело».

Другие вещи, которые вы найдете по-другому.

В net-tools пакет, который предоставляет netstat, ifconfig etc не установлен по умолчанию, он был заменен инструментами в iproute сс, ip и т.п.

Многие из журналов, которые вы привыкли изучать, находятся не в / var / log, вам нужно включить rsyslog для доступа к ним или использовать journalctl.

Ох, а есть hostnamectl и ... и ...

Вопрос 1

Попробуйте использовать top -M вместо.

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

KiB единица СИ, представляющая 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 покажет вам признак успеха или неудачи, который вы ищете (и вернет соответствующий код выхода).

Так как @Iian сказал, примите эти изменения, поскольку такое же изменение уже произошло во всех основных дистрибутивах Linux.

Ваш второй вопрос об отсутствии статуса при перезапуске httpd обслуживание вполне разумное.
В service команда устарела, вам нужно будет привыкнуть к systemctl команда.
Но вам также нужно будет привыкнуть к systemctl status команда.
Вместо того

# service httpd restart

Вам нужно будет ввести

# systemctl restart httpd
# systemctl status httpd
# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2016-01-02 11:45:01 CET; 8s ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 29795 (httpd)
   Status: "Processing requests..."
   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

Jan 02 11:45:01 vm.certdepot.net systemd[1]: Starting The Apache HTTP Ser....
Jan 02 11:45:01 vm.certdepot.net systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.

Понятно, что вам нужно будет ввести две команды вместо одной, что не является очевидным прогрессом.
Однако вы получите гораздо лучшее представление о текущей конфигурации:

  • служба работает?
  • какие сообщения он записывал при загрузке в сообщения журнала?
  • служба активируется при загрузке?
  • какой файл единицы конфигурации использовался?
  • к какой CGroup принадлежит эта служба?