Linux笔记:12-基础系统设定
@
系统基本设定
网络设定 (手动设定与 DHCP 自动取得)
目前的主流网卡为使用以太网络协议所开发出来的以太网卡 (Ethernet),因此我们 Linux 就称呼这种网络接口为 ethN (N 为数字)。
不过新的 CentOS 7 开始对于网卡的编号则有另一套规则,网卡的代号现在与网卡的来源有关~基本上的网卡名称会是这样分类的:
- eno1 :代表由主板 BIOS 内建的网卡
- ens1 :代表由主板 BIOS 内建的 PCI-E 界面的网卡
- enp2s0 :代表 PCI-E 界面的独立网卡,可能有多个插孔,因此会有 s0, s1... 的编号~
- eth0 :如果上述的名称都不适用,就回到原本的预设网卡编号
其实不管什么网卡名称,想要知道你有多少网卡,直接下达『 ifconfig -a 』全部列出来即可。此外, CentOS 7 也希望我们不要手动修改配置文件, 直接使用所谓的 nmcli 这个指令来设定网络参数即可。
手动设定 IP 网络参数
nmcli 是通过一个名为“连线代号”的名称来设置是否要上网,而每个“连线代号”会有个“网卡代号”, 这两个东西通常设置成相同就是了。那就来先查查看目前系统上默认有什么连线代号吧
[root@study ~]# nmcli connection show [网卡代号]
[root@study ~]# nmcli connection show
NAME UUID TYPE DEVICE
eth0 505a7445-2aac-45c8-92df-dc10317cec22 802-3-ethernet eth0
# NAME 就是连线代号,通常与后面的网卡 DEVICE 会一样!
# UUID 这个是特殊的装置识别,保留就好不要理他!
# TYPE 就是网卡的类型,通常就是以太网卡!
# DEVICE 当然就是网卡名称啰!
# 从上面我们会知道有个 eth0 的联机代号,那么来查察这个联机代号的设定为何?
[root@study ~]# nmcli connection show eth0
connection.id: eth0
connection.uuid: 505a7445-2aac-45c8-92df-dc10317cec22
connection.interface-name: eth0
connection.type: 802-3-ethernet
connection.autoconnect: yes
.....(中间省略).....
ipv4.method: manual
ipv4.dns:
ipv4.dns-search:
ipv4.addresses: 192.168.1.100/24
ipv4.gateway: --
.....(中间省略).....
IP4.ADDRESS[1]: 192.168.1.100/24
IP4.GATEWAY:
IP6.ADDRESS[1]: fe80::5054:ff:fedf:e174/64
IP6.GATEWAY:
如上表的输出,最底下的大写的 IP4, IP6 指的是目前的实际使用的网络参数,最上面的 connection开头的部份则指的是联机的状态! 比较重要的参数如下:
- connection.autoconnect [yes|no] :是否于开机时启动这个联机,预设通常是 yes 才对!
- ipv4.method [auto|manual] :自动还是手动设定网络参数的意思
- ipv4.dns [dns_server_ip] :就是填写 DNS 的 IP 地址~
- ipv4.addresses [IP/Netmask] :就是 IP 与 netmask 的集合,中间用斜线 / 来隔开
- ipv4.gateway [gw_ip] :就是 gateway 的 IP 地址!
[root@study ~]# nmcli connection modify eth0 \
> connection.autoconnect yes \
> ipv4.method manual \
> ipv4.addresses 172.16.1.1/16 \
> ipv4.gateway 172.16.200.254 \
> ipv4.dns 172.16.200.254
# 上面只是『修改了配置文件』而已,要实际生效还得要启动 (up) 这个 eth0 联机界面才行喔!
[root@study ~]# nmcli connection up eth0
[root@study ~]# nmcli connection show eth0
.....(前面省略).....
IP4.ADDRESS[1]: 172.16.1.1/16
IP4.GATEWAY: 172.16.200.254
IP4.DNS[1]: 172.16.200.254
IP6.ADDRESS[1]: fe80::5054:ff:fedf:e174/64
IP6.GATEWAY:
自动取得 IP 参数
只需要将 ipv4.method 那个选项填成 auto 即可。
[root@study ~]# nmcli connection modify eth0 \
> connection.autoconnect yes \
> ipv4.method auto
[root@study ~]# nmcli connection up eth0
[root@study ~]# nmcli connection show eth0
IP4.ADDRESS[1]: 172.16.2.76/16
IP4.ADDRESS[2]: 172.16.1.1/16
IP4.GATEWAY: 172.16.200.254
IP4.DNS[1]: 172.16.200.254
修改主机名
[root@study ~]# hostnamectl [set-hostname 你的主机名]
# 1. 显示目前的主机名与相关信息
[root@study ~]# hostnamectl
Static hostname: study.centos.vbird # 这就是主机名
Icon name: computer
Chassis: n/a
Machine ID: 309eb890d09f440681f596543d95ec7a
Boot ID: b2de392ff1f74e568829c716a7166ecd
Virtualization: kvm
Operating System: CentOS Linux 7 (Core) # 操作系统名称!
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-229.el7.x86_64 # 核心版本也提供!
Architecture: x86_64 # 硬件等级也提供!
# 2. 尝试修改主机名为 www.centos.vbird 之后再改回来~
[root@study ~]# hostnamectl set-hostname www.centos.vbird
[root@study ~]# cat /etc/hostname
www.centos.vbird
[root@study ~]# hostnamectl set-hostname study.centos.vbird
日期与时间设定
时区的显示与设定
[root@study ~]# timedatectl [commamd]
选项与参数:
list-timezones :列出系统上所有支持的时区名称
set-timezone : 设定时区位置
set-time : 设定时间
set-ntp : 设定网络校时系统
# 1. 显示目前的时区与时间等信息
[root@study ~]# timedatectl
Local time: Tue 2015-09-01 19:50:09 CST # 本地时间
Universal time: Tue 2015-09-01 11:50:09 UTC # UTC 时间,可称为格林威治标准时间
RTC time: Tue 2015-09-01 11:50:12
Timezone: Asia/Taipei (CST, +0800) # 就是时区啰!
NTP enabled: no
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
# 2. 显示出是否有 New_York 时区?若有, 则请将目前的时区更新一下
[root@study ~]# timedatectl list-timezones | grep -i new
America/New_York
America/North_Dakota/New_Salem
[root@study ~]# timedatectl set-timezone "America/New_York"
[root@study ~]# timedatectl
Local time: Tue 2015-09-01 07:53:24 EDT
Universal time: Tue 2015-09-01 11:53:24 UTC
RTC time: Tue 2015-09-01 11:53:28
Timezone: America/New_York (EDT, -0400)
[root@study ~]# timedatectl set-timezone "Asia/Taipei"
# 最后还是要记得改回来台湾时区喔!不要忘记了!
时间的调整
# 1. 将时间调整到正确的时间点上!
[root@study ~]# timedatectl set-time "2015-09-01 12:02"
过去我们使用 date 去修改日期后,还得要使用 hwclock 去订正 BIOS 记录的时间~现在透过timedatectl 一口气帮我们全部搞定。
用 ntpdate 手动网络校时
系统默认的自动校时会启动 NTP 协议相关的软件,会多开好几个端口。
[root@study ~]# ntpdate tock.stdtime.gov.tw
1 Sep 13:15:16 ntpdate[21171]: step time server 211.22.103.157 offset -0.794360 sec
[root@study ~]# hwclock -w
hwclock 则是将正确的时间写入你的 BIOS 时间记录内
语系设定
我们在第四章知道有个 LANG 与 locale 的指令能够查询目前的语系数据与变量,也知道/etc/locale.conf 其实就是语系的配置文件。
此外,你还得要知道的是,系统的语系与你目前软件的语系数据可能是可以不一样的!如果想要知道目前『系统语系』的话, 除了呼叫配置文件之外,也能够使用 localectl 来查阅
[root@study ~]# localectl
System Locale: LANG=zh_TW.utf8 # 底下这些数据就是『系统语系』
LC_NUMERIC=zh_TW.UTF-8
LC_TIME=zh_TW.UTF-8
LC_MONETARY=zh_TW.UTF-8
LC_PAPER=zh_TW.UTF-8
LC_MEASUREMENT=zh_TW.UTF-8
VC Keymap: cn
X11 Layout: cn
X11 Options: grp:ctrl_shift_toggle
[root@study ~]# locale
LANG=zh_TW.utf8 # 底下的则是『当前这个软件的语系』 数据!
LC_CTYPE="en_US.utf8"
LC_NUMERIC="en_US.utf8"
.....(中间省略).....
LC_ALL=en_US.utf8
从上面的两个指令结果你会发现到,系统的语系其实是中文的万国码 (zh_TW.UTF8) 这个语系。
而bash 使用的语系环境为 en_US.utf8。
服务器硬件数据的收集
以系统内建 dmidecode 解析硬件配备
系统有个名为 dmidecode 的软件,这个软件挺有趣的,它可以解析 CPU 型号、主板型号与内存相关的型号等等
[root@study ~]# dmidecode -t type
选项与参数:
详细的 type 项目请 man dmidecode 查询更多的数据,这里仅列出比较常用的项目:
1 :详细的系统数据,含主板的型号与硬件的基础数据等
4 :CPU 的相关数据,包括倍频、外频、核心数、核心绪数等
9 :系统的相关插槽格式,包括 PCI, PCI-E 等等的插槽规格说明
17:每一个内存插槽的规格,若内有内存,则列出该内存的容量与型号
范例一:秀出整个系统的硬件信息,例如主板型号等等
[root@study ~]# dmidecode -t 1
# dmidecode 2.12
SMBIOS 2.4 present.
Handle 0x0100, DMI type 1, 27 Bytes
System Information
Manufacturer: Red Hat
Product Name: KVM
Version: RHEL 6.6.0 PC
Serial Number: Not Specified
UUID: AA3CB5D1-4F42-45F7-8DBF-575445D3887F
Wake-up Type: Power Switch
SKU Number: Not Specified
Family: Red Hat Enterprise Linux
范例二:那内存相关的数据呢?
[root@study ~]# dmidecode -t 17
# dmidecode 2.12
SMBIOS 2.4 present.
Handle 0x1100, DMI type 17, 21 Bytes
Memory Device
Array Handle: 0x1000
Error Information Handle: 0x0000
Total Width: 64 bits
Data Width: 64 bits
Size: 3072 MB
Form Factor: DIMM
Set: None
Locator: DIMM 0
Bank Locator: Not Specified
Type: RAM
Type Detail: None
硬件资源的收集与分析
现在我们知道系统硬件是由操作系统核心所管理的,由第十九章的开机流程分析中,我们也知道 Linux kernel 在开机时就能够侦测主机硬件并载入适当的模块来驱动硬件了。 而核心所侦测到的各项硬件设备,后来就会被记录在 /proc 与 /sys 当中了。 包括 /proc/cpuinfo, /proc/partitions, /proc/interrupts 等等。
那除了直接呼叫出 /proc 底下的文件内容之外,其实 Linux 有提供几个简单的指令来将核心所侦测到的硬件叫出来的~ 常见的指令有底下这些:
- gdisk:第七章曾经谈过,可以使用 gdisk -l 将分区表列出;
- dmesg:第十六章谈过, 观察核心运作过程当中所显示的各项讯息记录;
- vmstat:第十六章谈过,可分析系统 (CPU/RAM/IO) 目前的状态;
- lspci:列出整个 PC 系统的 PCI 接口装置!很有用的指令;
- lsusb:列出目前系统上面各个 USB 端口口的状态,与连接的 USB 装置;
- iostat:与 vmstat 类似,可实时列出整个 CPU 与接口设备的 Input/Output 状态。
lspci
[root@study ~]# lspci [-vvn]
选项与参数:
-v :显示更多的 PCI 接口设备的详细信息;
-vv :比 -v 还要更详细的细部信息;
-n :直接观察 PCI 的 ID 而不是厂商名称
范例一:查阅您系统内的 PCI 总线相关设备:
[root@study ~]# lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] (rev 01)
00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
00:02.0 VGA compatible controller: Red Hat, Inc. QXL paravirtual graphic card (rev 04)
00:03.0 Ethernet controller: Red Hat, Inc Virtio network device
00:04.0 SCSI storage controller: Red Hat, Inc Virtio block device
00:05.0 RAM memory: Red Hat, Inc Virtio memory balloon
00:06.0 Audio device: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio
Controller (rev 01)
00:1d.0 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 (rev 03)
00:1d.1 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 (rev 03)
00:1d.2 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 (rev 03)
00:1d.7 USB controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 (rev 03)
# 不必加任何的参数,就能够显示出目前主机上面的各个 PCI 接口的设备呢!
lsusb
刚刚谈到的是 PCI 接口设备,如果是想要知道系统接了多少个 USB 设备呢
[root@study ~]# lsusb [-t]
选项与参数:
-t :使用类似树状目录来显示各个 USB 端口的相关性
范例一:列出目前鸟哥的测试用主机 USB 各端口状态
[root@study ~]# lsusb
Bus 002 Device 002: ID 0627:0001 Adomax Technology Co., Ltd
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
# 如上所示,鸟哥的主机在 Bus 002 有接了一个设备,
# 该设备的 ID 是 0627:0001,对应的厂商与产品为 Adomax 的设备。
iostat
默认 CentOS 并没有安装这个软件;
[root@study ~]# iostat [-c|-d] [-k|-m] [-t] [间隔秒数] [侦测次数]
选项与参数:
-c :仅显示 CPU 的状态;
-d :仅显示储存设备的状态,不可与 -c 一起用;
-k :默认显示的是 block ,这里可以改成 K Bytes 的大小来显示;
-m :与 -k 类似,只是以 MB 的单位来显示结果。
-t :显示日期出来;
范例一:显示一下目前整个系统的 CPU 与储存设备的状态
[root@study ~]# iostat
Linux 3.10.0-229.el7.x86_64 (study.centos.vbird) 09/02/2015 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.08 0.01 0.02 0.00 0.01 99.88
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 0.46 5.42 3.16 973670 568007
scd0 0.00 0.00 0.00 154 0
sda 0.01 0.03 0.00 4826 0
dm-0 0.23 4.59 3.09 825092 555621
# 瞧!上面数据总共分为上下两部分,上半部显示的是 CPU 的当下信息;
# 下面数据则是显示储存设备包括 /dev/vda 的相关数据,他的数据意义:
# tps :平均每秒钟的传送次数!与数据传输“次数”有关,非容量!
# kB_read/s :开机到现在平均的读取单位;
# kB_wrtn/s :开机到现在平均的写入单位;
# kB_read :开机到现在,总共读出来的文件单位;
# kB_wrtn :开机到现在,总共写入的文件单位;
范例二:仅针对 vda ,每两秒钟侦测一次,并且共侦测三次储存设备
[root@study ~]# iostat -d 2 3 vda
Linux 3.10.0-229.el7.x86_64 (study.centos.vbird) 09/02/2015 _x86_64_ (4 CPU)
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 0.46 5.41 3.16 973682 568148
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 1.00 0.00 0.50 0 1
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 0.00 0.00 0.00 0 0
# 仔细看一下,如果是有侦测次数的情况,那么第一次显示的是“从开机到现在的数据”,
# 第二次以后所显示的数据则代表两次侦测之间的系统传输值!举例来说,上面的信息中,
# 第二次显示的数据,则是两秒钟内(本案例)系统的总传输量与平均值。
了解磁盘的健康状态
SMART 其实是『 Self-Monitoring, Analysis and Reporting Technology System 』的缩写,主要用来监测目前常见的 ATA 与 SCSI 界面的磁盘, 只是,要被监测的磁盘也必须要支持 SMART 的协议才行!否则 smartd 就无法去下达指令,让磁盘进行自我健康检查。
smartd 提供一只指令名为 smartctl
# 1\. 用 smartctl 来显示完整的 /dev/sda 的信息
[root@study ~]# smartctl -a /dev/sda
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.10.0-229.el7.x86_64] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org
# 首先来输出一下这部磁盘的整体信息状况!包括制造商、序号、格式、SMART 支持度等等!
=== START OF INFORMATION SECTION ===
Device Model: QEMU HARDDISK
Serial Number: QM00002
Firmware Version: 0.12.1
User Capacity: 2,148,073,472 Bytes [2.14 GB]
Sector Size: 512 Bytes logical/physical
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: ATA/ATAPI-7, ATA/ATAPI-5 published, ANSI NCITS 340-2000
Local Time is: Wed Sep 2 18:10:38 2015 CST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
# 接下来则是一堆基础说明!鸟哥这里先略过这段数据喔!
General SMART Values:
Offline data collection status: (0x82) Offline data collection activity
was completed without error.
Auto Offline Data Collection: Enabled.
.....(中间省略).....
# 再来则是有没有曾经发生过磁盘错乱的问题登录!
SMART Error Log Version: 1
No Errors Logged
# 当你下达过磁盘自我检测的过程,就会被记录在这里了!
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Short offline Completed without error 00% 4660 -
# 2 Short offline Completed without error 00% 4660 -
# 2\. 命令磁盘进行一次自我检测的动作,然后再次观察磁盘状态!
[root@study ~]# smartctl -t short /dev/sda
[root@study ~]# smartctl -a /dev/sda
.....(前面省略).....
# 下面会多出一个第三笔的测试信息!看一下 Status 的状态,没有问题就是好消息!
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Short offline Completed without error 00% 4660 -
# 2 Short offline Completed without error 00% 4660 -
# 3 Short offline Completed without error 00% 4660 -
不过要特别强调的是,因为进行磁盘自我检查时,可能磁盘的 I/O 状态会比较频繁,因此不建议在系统忙碌的时候进行。 否则系统的效能是可能会被影响的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)