Skip to content

26 系统基本设定

CentOS 6.x 以前有个名为 setup 的软件将许多的设定做成类图形界面, CentOS 7 已经为很多命令加入了 bash-complete 的功能。

1. 网络设置

鸟哥的网络基础介绍

nmcli [OPTIONS] OBJECT { COMMAND | help }
控制 NetworkManager 的命令行工具

OBJECT
    c[onnection]    NetworkManager's connections
    d[evice]        devices managed by NetworkManager

CONNECTION MANAGEMENT COMMANDS
    nmcli connection {show | up | down | modify | add | edit | clone | delete | monitor | reload | load | import | export} [ARGUMENTS...]

nmcli 是透过一个名为联机代号的名称来设定是否要上网,而每个联机代号会有个网卡代号, 这两个东西通常设定成相同就是了。

1.1 查看网络参数

# 首先,必须要开启NetworkManager服务啊
[root@dev ~]# systemctl start NetworkManager
[root@dev ~]# nmcli connection show
# NAME 就是联机代号,通常与后面的网卡 DEVICE 会一样!
# UUID 这个是特殊的装置识别,保留就好不要理他!
# TYPE 就是网卡的类型,通常就是以太网卡!
# DEVICE 当然就是网卡名称啰!
NAME    UUID                                  TYPE      DEVICE 
ens37   4a5516a4-dfa4-24af-b1c4-e843e312e2fd  ethernet  ens37  
ens33   a0adb700-66e5-4fa5-9ad9-ffe048c7f33b  ethernet  ens33  
virbr0  5584116b-5bdd-4c5d-bfb4-436e3f88ac4e  bridge    virbr0 
# 这里为什么多了一张!!!
ens33   e8f7f6ec-8d65-43d1-91a1-b5ec5792515a  ethernet  --
# 详细的参数就要带上名字喽
[root@dev ~]# nmcli connection show ens33
connection.id:                          ens33
connection.uuid:                        e8f7f6ec-8d65-43d1-91a1-b5ec5792515a
connection.stable-id:                   --
connection.type:                        802-3-ethernet
connection.interface-name:              ens33
connection.autoconnect:                 yes
……
ipv4.method:                            manual
ipv4.dns:                               8.8.8.8
ipv4.dns-search:                        --
ipv4.dns-options:                       ""
ipv4.dns-priority:                      0
ipv4.addresses:                         192.168.216.10/24
ipv4.gateway:                           192.168.216.2
……
# 在我的机器上上面的信息会有两段,也符合两个联机代号?
IP4.ADDRESS[1]:                         192.168.216.10/24
IP4.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 地址!

1.2 手动设置网络参数

# 修改
[root@dev ~]# nmcli connection modify ens33 connection.autoconnect yes ipv4.method manual ipv4.addresses 192.168.216.10/24 ipv4.gateway 192.168.216.2 ipv4.dns 8.8.8.8
# 启动
[root@dev ~]# nmcli connection up ens33 
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
# 设置完成之后有一个联机代号消失了。。。
[root@dev ~]# nmcli connection show
NAME    UUID                                  TYPE      DEVICE 
ens37   4a5516a4-dfa4-24af-b1c4-e843e312e2fd  ethernet  ens37  
ens33   e8f7f6ec-8d65-43d1-91a1-b5ec5792515a  ethernet  ens33  
virbr0  5584116b-5bdd-4c5d-bfb4-436e3f88ac4e  bridge    virbr0
# 再来查看
[root@dev ~]# nmcli connection show ens33
……
IP4.ADDRESS[1]:                         192.168.216.10/24
IP4.GATEWAY:                            192.168.216.2
IP4.DNS[1]:                             8.8.8.8

1.3 自动设置网络参数

其实跟上面很类似啦

[root@dev ~]# nmcli connection modify ens33 connection.autoconnect yes ipv4.method auto
[root@dev ~]# nmcli connection up ens33
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)
# 哦,居然有两个ip,并且都可以使用!
[root@dev ~]# nmcli connection show ens33
……
IP4.ADDRESS[1]:                         192.168.216.10/24
IP4.ADDRESS[2]:                         192.168.216.165/24
IP4.GATEWAY:                            192.168.216.2

nmcli 的参数也是支持自动补全的哦!

2. 修改主机名

hostnamectl [OPTIONS...] COMMAND ...

OPTIONS
    -H --host=[USER@]HOST  Operate on remote host

COMMAND
    status                 Show current hostname settings
    set-hostname NAME      Set system hostname
[root@dev ~]# hostnamectl 
   Static hostname: dev
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 0242c388ca104d46b8d6d9a4b951ff3f
           Boot ID: 8c349cebf0d1404483efc44765754ea4
    Virtualization: vmware
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-1062.el7.x86_64
      Architecture: x86-64
[root@dev ~]# hostnamectl set-hostname shark
[root@dev ~]# hostname
shark
# 新打开的终端才会改变哦
[root@shark ~]#

3. 日期与时间设置

timedatectl [OPTIONS...] COMMAND ...

OPTIONS
    -H --host=[USER@]HOST  Operate on remote host

COMMAND
    status                   Show current time settings
    set-time TIME            Set system time
    set-timezone ZONE        Set system time zone
    list-timezones           Show known time zones
    set-ntp BOOL             Control whether NTP(Network Time Protocol) is enabled
[root@dev ~]# timedatectl 
      Local time: Fri 2019-12-13 10:02:29 CST   # 本地时间
  Universal time: Fri 2019-12-13 02:02:29 UTC   # UTC 时间,可称为格林威治标准时间
        RTC time: Fri 2019-12-13 02:02:29
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a

过去我们使用 date 去修改日期后,还得要使用 hwclock 去订正 BIOS 记录的时间。现在透过 timedatectl 可以一步到位!

3.1 用 ntpdate 手动网络校时

[root@dev ~]# ntpdate ntp1.aliyun.com
13 Dec 10:29:59 ntpdate[23726]: adjust time server 120.25.115.20 offset 0.002090 sec

# 将正确的时间写入你的 BIOS 时间记录
[root@dev ~]# hwclock -w

后续可以利用 crontab 来更新系统时间。

4. 语言环境设置

系统的语言环境与当前终端的语言环境不一定是一致的。

localectl [OPTIONS...] COMMAND ...

OPTIONS
    -H --host=[USER@]HOST  Operate on remote host

COMMAND
    status                   Show current locale settings
    set-locale LOCALE...     Set system locale
    list-locales             Show known locales
[root@dev ~]# locale
LANG=en_US.UTF-8
# 当前终端的语言环境
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
……
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
# 系统的语言环境
[root@dev ~]# localectl 
   System Locale: LANG=en_US.UTF-8
       VC Keymap: us
      X11 Layout: us

改变语言环境:

# 改变当前终端语言环境
[root@dev ~]# export LC_ALL=zh_CN.UTF-8
[root@dev ~]# locale
LANG=en_US.UTF-8
LC_CTYPE="zh_CN.UTF-8"
……
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=zh_CN.UTF-8

# 改变系统语言环境
[root@dev ~]# localectl set-locale LANG=zh_CN.UTF-8
[root@dev ~]# localectl 
   System Locale: LANG=zh_CN.UTF-8
       VC Keymap: us
      X11 Layout: us
[root@dev ~]# cat /etc/locale.conf 
LANG=zh_CN.UTF-8