Centos7系统下修改主机名、清理linux日志和操作记录 - 运维笔记

时间:2024-03-11 13:25:07

 

一、修改主机名
习惯了在Centos6系统下修改主机名的操作,但是Centos7下修改主机名的操作却大不相同!操作笔记如下:

在CentOS中,有三种定义的主机名:静态的(static),瞬态的(transient),和灵活的(pretty):
 
    * "静态"主机名也称为内核主机名,是系统在启动时从/etc/hostname自动初始化的主机名。
    * "瞬态"主机名是在系统运行时临时分配的主机名,例如,通过DHCP或mDNS服务器分配。静态主机名和瞬态主机名都遵从作为互联网域名同样的字符限制规则。
    * "灵活"主机名则允许使用*形式(包括特殊/空白字符)的主机名,以展示给终端用户(如kevin-test.kevin.com)。
 
 
在CentOS 7中,有个叫hostnamectl的命令行工具,它允许你查看或修改与主机名相关的配置。
1)要查看主机名相关的设置:
[root@kevin-test ~]# hostname
kevin-test.kevin.com
 
[root@kevin-test ~]# hostnamectl 
   Static hostname: kevin-test.kevin.com
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 45461f76679f48ee96e95da6cc798cc8
           Boot ID: 1e7ed2e4777240529451d611c03465c6
    Virtualization: kvm
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-327.13.1.el7.x86_64
      Architecture: x86-64
 
或者
[root@kevin-test ~]# hostnamectl  status
   Static hostname: kevin-test.kevin.com
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 45461f76679f48ee96e95da6cc798cc8
           Boot ID: 1e7ed2e4777240529451d611c03465c6
    Virtualization: kvm
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-327.13.1.el7.x86_64
      Architecture: x86-64
 
2)只查看静态、瞬态或灵活主机名,分别使用"--static","--transient"或"--pretty"选项
[root@kevin-test ~]# hostnamectl --static
kevin-test.kevin.com
[root@kevin-test ~]# hostnamectl --transient
kevin-test.kevin.com
[root@kevin-test ~]# hostnamectl --pretty
 
[root@kevin-test ~]#
 
3)要同时修改所有三个主机名:静态、瞬态和灵活主机名
[root@kevin-test ~]# hostnamectl set-hostname kevin-test.kevin.com
[root@kevin-test ~]# hostnamectl --pretty set-hostname kevin-test.kevin.com
[root@kevin-test ~]# hostnamectl --static set-hostname kevin-test.kevin.com
[root@kevin-test ~]# hostnamectl --transient set-hostname  kevin-test.kevin.com
 
修改静态主机名
[root@kevin-test ~]# hostnamectl --static set-hostname kevin-test.kevin.com
其实,不必重启机器以激活永久主机名修改。上面的hostnamectl命令会立即修改内核主机名。注销并重新登入后在命令行提示来观察新的静态主机名。
 
就像上面展示的那样,在修改静态/瞬态主机名时,任何特殊字符或空白字符会被移除,而提供的参数中的任何大写字母会自动转化为小写。一旦修改了静态主机名,/etc/hostname 将被自动更新。然而,/etc/hosts 不会更新以保存所做的修改,所以你每次在修改主机名后一定要手动更新/etc/hosts,之后再重启CentOS 7。否则系统再启动时会很慢。
 
4)手动更新/etc/hosts(这个只是临时生效,重启服务器后,主机名还是会恢复默认)
[root@kevin-test ~]# cat /etc/hosts
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 kevin-test.kevin.com

===============================================================================
除此之外,还有一种永久修改主机名的方法:修改配置文件 /etc/hostname 
[root@kevin-test ~]# vim /etc/hostname
kevin-test.kevin.com

然后重启服务器即可永久生效
[root@kevin-test ~]# reboot

二、清理linux日志和操作记录

1)清理linux日志
linux系统产生的各种日志时间久了,可能会导致系统盘爆满。下面分享一些基本常用的清理linux系统日志的方法:
# echo > /var/log/wtmp       # 清除用户登录记录
# echo > /var/log/btmp       # 清除尝试登录记录
# echo > /var/log/lastlog      # 清除最近登录信息
# echo > /var/log/secure     # 登录信息
# echo > /var/log/messages   # 系统操作日志
# echo > /var/log/syslog       # 记录系统日志的服务
# echo > /var/log/xferlog
# echo > /var/log/auth.log
# echo > /var/log/user.log
# cat /dev/null > /var/adm/sylog
# cat /dev/null > /var/log/maillog
# cat /dev/null > /var/log/openwebmail.log
# cat /dev/null > /var/log/mail.info
# echo > /var/run/utmp

2)清除系统操作过的命令记录(即清理history)
# echo > .bash_history          # 清除保存的用户操作历史记录
# history -cw                   # 清除所有历史
# vim /etc/profile              
HISTSIZE=0                      # 改成0或者1          

history命令用于显示历史记录和执行过的指令命令。
history命令读取历史命令文件中的目录到历史命令缓冲区和将历史命令缓冲区中的目录写入命令文件。

history命令单独使用时,仅显示历史命令,在命令行中,可以使用符号!执行指定序号的历史命令。例如,要执行第2个历史命令,则输入!2。

history命令是被保存在内存中的,当退出或者登录shell时,会自动保存或读取。在内存中,历史命令仅能够存储1000条历史命令,该数量是由环境变量HISTSIZE进行控制。
默认是不显示命令的执行时间,命令的执行时间history其实已经记录,只是没有显示而已。

需要注意:
如想查询某个用户在系统上执行了什么命令,可以使用root用户身份登录系统,检查Home目录下的用户主目录下的".bash_history"文件,该文件记录了用户所使用的命令和历史信息。

在 /etc/profile文件里设置HISTSIZE参数值,这个值限制了用户操作记录最多保存多少份,也就是在用户家目录的.bash_history文件里多少多少份。
[root@kevin-test ~]# cat /etc/profile|grep "HISTSIZE"
HISTSIZE=1000
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

[root@kevin-test ~]# cat /root/.bash_history |wc -l
1000

[root@kevin-test ~]# history |tail -5     #执行"history"命令读取的记录就是从当前用户家目录的.bash_history文件中读取的
 1015  cat /root/.bash_history |wc -l
 1016  cat /etc/profile|grep "HISTSIZE"
 1017  history 
 1018  history |tail -10
 1019  history |tail -5

上面的history执行后没有显示执行时间。这里需要注意下:
默认情况下,history并不记录命令的执行时间,分析起来很困难。我们可以使用HISTTIMEFORMAT在历史中显示TIMESTAMP。

[root@kevin-test ~]# echo \'export HISTTIMEFORMAT="%F %T `whoami` "\' >> /etc/profile
[root@kevin-test ~]# source /etc/profile

[root@kevin-test ~]# history |tail -5        #相当于"history 5"
  995  2019-11-29 11:20:20 root source /etc/profile
  996  2019-11-29 11:20:22 root history 
  997  2019-11-29 11:20:48 root ping 172.20.17.6
  998  2019-11-29 11:20:50 root du -sh *
  999  2019-11-29 11:21:27 root cd /data/www/

====================================================
查看历史执行记录
[root@kevin-test ~]# history #查看历史执行记录

查看历史执行记录后 5 条
[root@kevin-test ~]# history 5  #查看历史执行记录后 5 条

使用! 执行历史命令。
! number 执行第几条命令
!! 执行上一条

[root@kevin-test ~]# !10 #执行历史记录第10条命令

[root@kevin-test ~]# !! #执行上一条命令 

另外注意:
bash执行命令时不是马上把命令名称写入history文件的,而是存放在内部的buffer中,等bash退出时会一并写入。
不过,可以调用"history -w"命令要求bash立即更新history文件。

[root@kevin-test ~]# history -w     #立即更新history文件,将当前bash命令记录进去。
[root@kevin-test ~]# history -c     #立即清空history当前历史记录