百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Linux基础-CentOS 6 和CentOS 7 区别

nanshan 2024-10-11 13:30 10 浏览 0 评论

虽然CentOS6已经不再维护,CentOS7将在2024年6月不再维护,目前国内CentOS使用量还是挺大,CentOS6和CentOS7区别还是有必要了解下。

版本

发行

完全更新

停止更新

3

2004-03-19

2006-07-20

2010-10-31

4

2005-03-09

2009-03-31

2012-02-29

5

2007-04-12

2014-01-31

2017-03-31

6

2011-07-10

2017-05-10

2020-11-30

7

2014-07-07

2020-08-06

2024-06-30

8

2019-09-24

2021-12-31

2021-12-31

01 系统配置

条目

CentOS6方法

CentOS7方法

说明

主机名

临时:hostname 重启生效: /etc/sysconfig/network中的HOSTNAME=

临时重启生效: hostnamectl set-hostname 方法2:永久可编辑/etc/hostname

hostname都临时修改主机通用命令

字符集

方法: cat /etc/sysconfig/i18n LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16

方法1: localectl set-locale LANG=en_GB.utf8 方法2: /etc/locale.conf中的LANG=LANG=en_US.UTF-8

en_US.UTF-8 zh_CN.utf8

时区

方法: ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

方法1: ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 方法2:timedatectl set-timezone Asia/Shanghai


修改时间

方法: date -s "2021-11-02 18:08:00"

方法1:date -s "2021-11-02 18:08:00" 方法2:timedatectl set-time "2021-11-02 18:08:00"

timedatectl同步时间需要timedatectl set-ntp false

grub(GRand Unified Bootloader)

/boot/grub/grub.conf的kernel中加入需要添加的参数

/etc/default/grub的GRUB_CMDLINE_LINUX中加入需要添加的参数

centos6 使用grub, centos7使用grub2配置文件的名称改变了。在grub中,配置文件为grub.conf或menu.lst(grub.conf的一个软链接),在grub2中改名为grub.cfg。

内核

默认内核版本是2.6.X 查看内核awk -F "[()]" '/^title/{print $2}' /boot/grub/grub.conf 修改内核:修改/boot/grub/grub.conf中的default

默认内核版本是3.10.x 查看使用内核grub2-editenv list和所有内核awk -F"'" '/^men/{print $2}' /boot/grub2/grub.cfg 修改内核grub2-set-default "CentOS Linux (3.10.0-1160.45.1.el7.x86_64) 7 (Core)"

不要手动修改/boot/grub2/grub.cfg文件,该文件是通过/etc/grub.d 和/etc/default/grub生产

单用户模式修改密码

grub选择内核界面输入e,选择kernel行输入e,在最后添加1,回车enter,回到kernel输入b,进入单用户模式;passwd root设置密码,然后reboot

grub选择内核界面输入e,选择linux16行,root=* 后面全部去掉,添加rw init=/sysroot/bin/bash,输入ctrl+x;执行命令chroot /sysroot ,passwd root,exit,reboot

centos6去掉改行console=ttyS0,115200;centos7还有其他修改root密码的方式,但是大体思路类似

开机脚本

/etc/rc.d/rc.local

rc-local.service管理

/etc/rc.local是/etc/rc.d/rc.local的软链接

网卡名

传统的kernel网卡命名方法 ethX,这种命名方法的结果不可预知的

biosdevname和net.ifnames命令规范 net.ifnames的命名规范为: 设备类型+设备位置+数字 biosdevname的命名规范为emx,p<slot>p<ethernet port>,p<slot>p<ethernet port>_<virtual interface> 同一个网卡通常同时具有多个维度的名称,systemd在选取的时候,按照有先后次序,使用先命中的;顺序可以简单理解为(eno1-ens1-enp1)

为什么centos7不再使用以前的ethX方式?根本是因为之前ethX方式是不确定的,每次启动可能都不同(如果没有用户自定义网卡名称的前提下)

服务类

网络管理:network 防火墙:iptables 时间同步:ntpd

网络管理:NetworkManger或者network 防火墙:firewalld或者iptables 时间同步:chronyd或者ntpd

查询ntpq -p 查询chronyc sources

文件系统

默认是ext4(Fourth EXtended filesystem)

文件系统默认是xfs

ext4 分别支持1EB文件系统,xfs最大支持8EB

目录结构

centos6的/bin, /sbin, /lib, /lib64在/下

centos7的/bin, /sbin, /lib, /lib64移到/usr下

实际使用没有影响,有目录软链接

登录提示

/etc/issue 提示CentOS release 6.x

/etc/issue 提示\S,系统版本


02 系统管理

2.1 linux启动方式

条目

sysvinit

upstart

systemd

说明

第一代,传统,兼容最多,基于运行级别的系统。

第二代,形似systemd雏形,基于事件的系统。

第三代,配合cgroup,systemd完全接管整个系统,采用了 socket / D-Bus activation 等技术启动服务,系统初始化时服务并行启动。

目录

/etc/init.d目录

/etc/init目录

/usr/lib/systemd目录

软件包

sysvinit-tools提供相关命令

upstart

systemd

提供命令

last lastb mesg wall killall5 pidof

halt init initctl poweroff reboot reload restart runlevel shutdown start status stop telinit

bootctl busctl coredumpctl hostnamectl journalctl kernel-install localectl loginctl machinectl systemctl systemd-* timedatectl udevadm halt init poweroff reboot runlevel shutdown telinit udevadm

查看启动方式

stat /proc/1/exe

stat /proc/1/exe File: '/proc/1/exe' -> `/sbin/init'

stat /proc/1/exe File: ‘/proc/1/exe’ -> ‘/usr/lib/systemd/systemd’

操作系统

Ubuntu 14,CentOS 5/6/7

Ubuntu 14,CentOS 6

Ubuntu 16及以后,CentOS7及以后,Fedora 15及以后

基于 systemd 的发行版中运行大部分有 sysv 初始化工具。

rpm -ql systemd |grep 'bin/' 查找某个包提供命令集

2.2 运行级别

运行级别

CentOS6

CentOS7

说明

0

init 0、halt、poweroff

runlevel0.target -> poweroff.target

关闭系统,CentOS6不要设置该级别

1

init 1

runlevel1.target -> rescue.target

单用户模式(root权限,用于系统维护,无网络连接,不运行守护进程)

2

init 2

runlevel2.target -> multi-user.target

多用户模式,无网络连接,不运行守护进程,没有NFS(命令行)

3

init 3

runlevel3.target -> multi-user.target

完全多用户模式,正常启动系统(命令行)

4

init 4

runlevel4.target -> multi-user.target

未使用,保留

5

init 5

runlevel5.target -> graphical.target

多用户X11,带图形界面

6

init 6

runlevel6.target -> reboot.target ctrl-alt-del.target -> reboot.target

系统重启,CentOS6不要设置该级别

查看

grep ^id /etc/inittab

systemctl get-default

graphical.target和multi-user.target

临时生效

init 3

systemctl isolate multi-user.target

立即切换

永久生效

sed -i '/^id/{s/id:./id:3/}' /etc/inittab

systemctl set-default multi-user.target

重启生效

2.3 服务

2.3.1 服务管理

条目

sysvinit

systemd

备注

查看

service sshd status

systemctl status sshd


启动

service sshd start

systemctl start sshd


关闭

service sshd stop

systemctl stop sshd


重启

service sshd restart

systemctl restart sshd


重新加载

service sshd reload

systemctl reload sshd

重启读取配置文件(不停掉服务)

查看所有服务状态

service --status-all

systemctl list-unit-files

service命令显示比较混乱

查看自启

chkconfig --list

systemctl list-unit-files

查看所有服务开机自启动或者禁止情况

查看单个服务自启

chkconfig --list sshd

systemctl is-enabled sshd systemctl list-unit-files sshd.service

查看单个服务是否开机自启

设置自启

chkconfig sshd on/off

systemctl enable/disable sshd

服务开机自启/不开机自启

重新加载服务

chkconfig --add sshd

systemctl daemon-reload

修改服务文件(不是配置文件)后,重新加载服务

查看服务环境变量

/etc/sysconfig/sshd

systemctl show sshd

CentOS6 服务文件/etc/init.d/sshd一般都会指定配置

initctl 是upstart方式服务管理工具,使用较少,不在对比表格中呈现;

systemctl --failed来显示失败的服务,如果有失败使用reset-failed 处理;

2.3.2 服务编写

条目

sysvinit

upstart

systemd

备注

编写服务

详情配置见附件 # cat /etc/init.d/sshd # source function library . /etc/rc.d/init.d/functions # pull in sysconfig settings [ -f /etc/sysconfig/sshd ] && . /etc/sysconfig/sshd start() { … } stop() { … } restart() { … } reload() { … } status() { … } case "$1" in start) start ;; stop) stop ;; … esac exit $RETVAL

cat /etc/init/ssh.conf description "OpenSSH server" start on runlevel [2345] stop on runlevel [!2345]respawn respawn limit 10 5 umask 022 env SSH_SIGSTOP=1 expect stop # 'sshd -D' leaks stderr and confuses things in conjunction with 'console log' console none pre-start script test -e /etc/ssh/sshd_not_to_be_run && { stop; exit 0; } mkdir -p -m0755 /var/run/sshd end script exec /usr/sbin/sshd -D

# cat /usr/lib/systemd/system/sshd.service [Unit] Description=OpenSSH server daemon Documentation=man:sshd(8) man:sshd_config(5) After=network.target sshd-keygen.service Wants=sshd-keygen.service [Service] Type=notify EnvironmentFile=/etc/sysconfig/sshd ExecStart=/usr/sbin/sshd -D $OPTIONS ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=on-failure RestartSec=42s [Install] WantedBy=multi-user.target

/etc/init.d/目录下服务文件需要有可以执行权限

PID管理

需要生成PID文件,用于后期关闭、重启等使用

无需PID文件,upstart会记录主进程ID,子进程ID没有记录

无需PID文件,所有进程ID由cgroup统一接管


资源限制

除了ulimit,没有其他限制进程资源的简便方法

除了ulimit,没有其他限制进程资源的简便方法

除了ulimit,还支持部分cgroup限制,可对进程做内存限制和cpu资源限制等

systemd-cgls systemd-cgtop查看cgroup的内容和性能

守护进程

sysvinit需要自行实现 nohup & screen supervisor

upstart和systemd类似,将程序运行在前台即可

由systemd启动,将程序运行在前台即可


2.4 日志管理

2.4.1CentOS6和CentOS7日志对比

条目

CentOS6

CentOS7

备注

概况

使用rsyslog收集日志存在在/var/log/messages、/var/log/dmesg、/var/log/secure等,需手动查看

systemd-journald日志默认经过压缩,是二进制文件,无法直接查看,使用journalctl查看,可以使用多个因素匹配,比如时间段、服务名、日志级别等等。

centos7默认使用systemd-journald做日志中心库,使用rsyslog来持久化日志,使用logrotate来轮转日志文件。

日志查看

/var/log/messages记录绝大部分日志

journalctl

查看所有日志

单个服务

需要单独指定,类似/var/log/ssh

journalctl -u sshd 远程服务sshd日志

查看sshd日志,-o verbose详细输出

日志过滤

tailf -n 10 /var/log/secure 跟踪查看 tail /var/log/secure 查看最新日志 sed -n '/Nov 10 13:03/,/Nov 10 14:04/p' /var/log/secure 指定时间段日志

journalctl -u sshd -n 2 -f跟踪查看 journalctl -e 查看最新日志 journalctl -S yesterday --until="2021-11-10 13:59:00" -u sshd指定时间段日志

-u unit 指定服务名 -f follow跟踪实时日志 -n lines 显示最新日志行数 -e pager-end 显示最新日志 -S since -U until 包括当前时间点

系统日志

/var/log/dmesg /var/log/messages

journalctl -k 本次启动内核相关日志 journalctl -b 本次启动相关日志

-k dmesg 内核日志 -b boot启动日志,是包括-k信息

日志使用量

du -sh /var/log/ 默认是持久化

journalctl --disk-usage 默认存在内存中

centos7默认存在在/run/log/journal目录下,由Storage=auto参数控制

日志持久化

已持久化存储,日志默认都存在该目录/var/log/ 日志输入链路:service daemon ---> rsyslog ---> /var/log

systemd-journald数据持久化方式 mkdir /var/log/journal systemctl restart systemd-journald 日志输入链路:systemd --> systemd-journald --> ram DB --> rsyslog -> /var/log

CentOS7持久化后,/run/log/journal目录已经不存在,取而代之的是/var/log/journal目录

日志写入方式

自行输出到文件中,或通过syslog记录

只要程序由systemd启动,只需将输出日志到标准输出或标准错误

Service支持StandardOutput=syslog

业务日志

自行输出到文件中,或通过syslog记录

不建议将业务日志输出到journal,会导致2个问题: 如果没有做日志持久化,则默认存在内存中,会导致最多一半的内存被占用 存储量很大,会导致查询其他日志很耗时

CentOS7解决办法:输出到syslog,Service支持StandardOutput=syslog

日志帮助

man 5 rsyslog.conf

man 5 journald.conf man systemd-journald man 5 systemd.service man 5 systemd.unit man 5 systemd.exec

systemd帮助文档较多

journalctl --verify 检查journal日志一致性,会显示二进制文件的位置。

rsyslog缺点:日志消息内容无法验证、数据格式松散、日志检索低效、有限的元数据保存、无法记录二进制数据等

2.4.2日志文件说明

日志文件

说明

/var/log/messages

公共日志即核心系统日志文件,除了邮件日志。

/var/log/cron

周期性计划任务日志

/var/log/dmesg

内核自检日志

/var/log/maillog

系统电子邮件日志

/var/log/secure

用户认证相关的安全日志,包括ssh/su/sudo/用户/密码等相关事件

/var/log/lastlog

用户最近的登录日志,二进制文件,使用命令lastlog查看

/var/log/btmp

失败的、错误的登录日志,二进制文件,使用命令lastb查看

/var/log/wtmp

永久记录所有用户的登陆、注销信息,同时记录系统的后动、重启、关机事件,二进制文件,使用命令last查看

个人理解btmp和wtmp中tmp是attempts的缩写。

2.4.3日志等级说明

日志级别

重要程度

说明

0

emerg

system is unusable 系统不可用

1

alert

action must be taken immediately 必须采取行动处理

2

crit

critical conditions 紧急状态

3

err

error conditions 错误状态

4

warn

warning conditions 警告状态

5

notice

normal but significant condition 正常但是需要注意

6

info

informational 信息

7

debug

debug level messages 调试级别信息

数字级别越小,优先级越高,消息越重要

cat /proc/sys/kernel/printk 7 4 1 7

console_loglevel 控制台日志级别:优先级高于该值的消息将被打印至控制台 default_message_loglevel 缺省的消息日志级别:将用该优先级来打印没有优先级的消息 minimum_console_loglevel 最低的控制台日志级别:控制台日志级别可被设置的最小值(最高优先级) default_console_loglevel 缺省的控制台日志级别:控制台日志级别的缺省值

相关推荐

详解 HTTPS、TLS、SSL、HTTP区别和关系

一、什么是HTTPS、TLS、SSLHTTPS,也称作HTTPoverTLS。TLS的前身是SSL,TLS1.0通常被标示为SSL3.1,TLS1.1为SSL3.2,TLS1.2为SSL...

锐安信SSL证书自动化运维系统:灵活管理SSL/TLS证书全生命周期

点击上方关注“锐成云分销”,云建站解决方案专家!域名、SSL证书、DNS、主机一站选齐在SSL/TLS证书的生命周期管理中,证书的各种操作方式是基础且核心的部分之一,更是保障用户数据传输加密的关键。这...

宝塔免费的 SSL/TLS 证书如何续签

申请之前,请确保域名已解析,如未解析会导致审核失败(包括根域名)宝塔SSL申请的是免费版TrustAsiaDVSSLCA-G5证书,仅支持单个域名申请有效期1年,不支持续签,到期后需要重新申...

HTTPS、HTTP、TLS/SSL工作及握手原理、PKI/CA密钥体系

一、HTTPS与HTTP介绍二、TLS/SSL工作原理三、TSL/SSL握手过程四、HTTPS性能优化五、PKI体系一、HTTPS与HTTP介绍1.Https(SecureHypetextTran...

什么是SSL证书卸载 SSL证书卸载有什么作用

SSL证书是数字证书的一种,安装部署的话可以对网站起到身份验证和数据加密的作用。网站部署SSL证书,相对就必然会有SSL证书卸载,那么SSL证书卸载是什么呢?SSL证书卸载有什么作用?随着SSL通信量...

让SSL/TLS协议流行起来:深度解读SSL/TLS实现1

一前言SSL/TLS协议是网络安全通信的重要基石,本系列将简单介绍SSL/TLS协议,主要关注SSL/TLS协议的安全性,特别是SSL规范的正确实现。本系列的文章大体分为3个部分:SSL/TLS协...

苹果、谷歌、微软等一致同意!SSL/TLS证书最长有效期锐减至47天

快科技4月14日消息,苹果此前向CA/B论坛(负责管理SSL/TLS证书的行业组织)提议,将所有证书有效期缩短至45天。日前CA/B论坛服务器证书工作组投票通过SC-081v3提案,最终决定将SSL/...

Android怎么设置端口转发,将访问本设备的端口转到另外一台设备

一、Android系统怎么设置端口转发,将访问本设备的端口转到另外一台设备?要设置端口转发,您需要先在Android设备上安装一个支持端口转发的应用程序。其中一个常用的应用是"Termux&#...

大神级产品:手机装 Linux 运行 Docker 如此简单

本内容来源于@什么值得买APP,观点仅代表作者本人|作者:灵昱Termux作为一个强大的Android终端模拟器,能够运行多种Linux环境。然而,直接在Termux上运行Docker并不可行,需要...

关于H3C交换机的SSH功能配置方法(华三交换机ssh配置)

对于交换机的初步学习,作为初学者的我,还望诸位不吝赐教。若存在不足之处,烦请大家多提宝贵意见。同样身为初学者的我们,亦可携手共进,相互分享技术经验。一、本地用户配置(核心步骤)1.创建用户并设置密码...

Linux常用操作ssh(linux中的ssh命令)

ssh#p是小写ssh-p22user@hostsftp#连接sftp-P22root@host#将文件上传到服务器上:put[本地文件的地址][服务器上文件存储的位置]#将...

小白心得,如何使用SSH连接飞牛系统(fnos)?

一、背景作为一个刚接触飞牛系统的小白,在研究飞牛os的时候,发现很多功能都需要连接ssh,但是如何使用SSH连接飞牛系统成为入门飞牛os的一道坎。下面以自己的学习经历详细记录下过程吧。二、系统设置1、...

如何在 Windows 11 或 10 上使用 Winget 安装 OpenSSH

SSH(SecureShell)是大多数开发人员和系统管理员用来通过Linux远程连接托管服务器或任何云服务的工具,因为SSH在Linux中是内置的。然而,对于Windows呢?是的...

linux文件之ssh配置文件的含义与作用

ssh远程登录命令是操作系统(包括linux和window系统)下常用的操作命令,可以帮助用户,远程登录服务器系统,查看,操作系统相关信息。linux系统对于ssh命令有专门保存其相关配置的目录和文件...

害怕Linux SSH不安全?这几个小妙招安排上!

ssh是访问远程服务器最常用的方法之一,同时,其也是Linux服务器受到攻击的最常见的原因之一。不过别误会...我们并不是说ssh有什么安全漏洞,相反,它在设计上是一个非常安全的协议。但是安...

取消回复欢迎 发表评论: