声明

  • 此操作仅仅只是适合个人学习使用,在vmware中建立虚拟机后,将虚拟机文件压缩打包,只需vmware版本兼容,即可在其他电脑上的vmware中操作和使用

关闭selinux以及firewalld

[root@localhost ~]# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
[root@localhost ~]# systemctl disable firewalld --now

修改终端前缀显示

[root@localhost ~]# vi /etc/profile
export PS1='\[\e[0;35m\]\u@\h:\[\e[0m\]\[\e[0;35m\]$(pwd) \[\e[0m\]\[\e[0;35m\]\t\[\e[0m\]\n\[\e[0;36m\]> \[\e[0m\]'
[root@localhost ~]# source /etc/profile

修改默认网卡名称为eth0

localhost:~ # cp /etc/sysconfig/network-scripts/ifcfg-ens33{,.bak}
"先备份当前的网卡配置文件,方便失败的时候回滚"
localhost:~ # sed -i 's/ens33/eth0/g' /etc/sysconfig/network-scripts/ifcfg-ens33
localhost:~ # grep eth0 /etc/sysconfig/network-scripts/ifcfg-ens33
NAME="eth0"
DEVICE="eth0"
localhost:~ # mv /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-eth0
"CentOS7采用grub2引导,需要修改grub2文件"
localhost:~ # grep GRUB_CMDLINE_LINUX /etc/default/grub
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
localhost:~ # sed -i 's#^GRUB_CMDLINE_LINUX=.*#GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet net.ifnames=0 biosdevname=0"#' /etc/default/grub
localhost:~ # grub2-mkconfig -o /boot/grub2/grub.cfg
  • 为了将selinux=disabled生效,以及网卡名称生效,此时需要重启CentOS

替换yum源

  • CentOS安装完成后,默认的yum源是官方的,国外服务器在国内会比较慢,因此将yum源改为国内的,以此来提高yum的安装速度
"备份原来的repo文件"
localhost:~ # mkdir /etc/yum.repos.d/bak
localhost:~ # mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/
"这里使用的是阿里的centos源"
localhost:~ # curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
"创建本地元数据"
localhost:~ # yum makecache

安装常用工具

"安装epel源"
localhost:~ # yum -y install epel-release
"epel提供的yum并行下载插件"
localhost:~ # yum -y install yum-axelget
"终端命令补全工具,退出终端重新连接后,才会生效"
localhost:~ # yum -y install bash-completion
"最小化安装默认不带vim和wget"
localhost:~ # yum -y install vim wget net-tools
"免交互expect"
localhost:~ # yum -y install expect
"源码包安装软件常用的gcc环境,以及辅助工具make、cmake"
localhost:~ # yum -y install gcc gcc-c++ make cmake
"常用的解压软件"
localhost:~ # yum -y install p7zip unzip unar
"git版本控制器"
localhost:~ # yum -y install git
"树形查看目录结构工具"
localhost:~ # yum -y install tree
"python系列"
localhost:~ # yum -y install python-devel python3 pip3 pip
"jdk"
localhost:~ # tar xf jdk-8u281-linux-x64.tar.gz -C /usr/local/
localhost:~ # vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_281
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
localhost:~ # source /etc/profile
-bash: HISTTIMEFORMAT: readonly variable
localhost:~ # java -version
java version "1.8.0_281"
Java(TM) SE Runtime Environment (build 1.8.0_281-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.281-b09, mixed mode)
"node.js"
localhost:~ # cd /usr/local/
localhost:/usr/local # wget https://npm.taobao.org/mirrors/node/v14.15.4/node-v14.15.4-linux-x64.tar.xz
localhost:/usr/local # tar xf node-v14.15.4-linux-x64.tar.xz
localhost:~ # ln -s /usr/local/node-v14.15.4-linux-x64/bin/node /usr/bin/node
localhost:~ # node -v
v14.15.4
"时间同步服务器"
localhost:~ # yum -y install chrony.x86_64
"docker"
localhost:~ # cat > /etc/yum.repos.d/docker.repo <<EOF
[docker-ce]
name=docker-ce
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/x86_64/stable/
gpgcheck=0
enable=1
EOF
localhost:~ # yum repolist
localhost:~ # yum -y install docker docker-compose.noarch
"打开yum缓存,可以不打开"
Linux:~ # sed -i 's/keepcache=.*/keepcache=1/' /etc/yum.conf

优化history

localhost:~ # cat > /etc/profile.d/history.sh <<EOF
#!/bin/bash
export HISTFILE=$HOME/.bash_history
export HISTSIZE=1200
export HISTFILESIZE=1200
export HISTCONTROL=ignoredups
export HISTCONTROL=erasedups
export HISTTIMEFORMAT="`whoami` %F %T "
shopt -s histappend
PROMPT_COMMAND="history -a"
typeset -r HISTTIMEFORMAT
EOF
localhost:~ # source /etc/profile.d/history.sh

配置回收站

localhost:~ # cat << 'eof' >> /etc/profile.d/trash.sh
####### trash #######
mkdir -p ~/.trash # 路径可以自己创建和命名,不受限制,修改路径名后,记得修改下面三个函数里面的路径
alias rm=trash # 将rm别名成trash,调用trash函数
alias ur=undelfile # 使用别名定义一个ur命令,调用undelfile函数,作用是还原文件 function undelfile(){ # 通过$@将ur后面的参数逐一传给mv移动到当前目录下
mv -i ~/.trash/$@ ./ # mv -i 当目标文件存在时,提示是否覆盖
} function trash(){ # 在终端输入的rm命令,会通过别名alias调用trash函数,再通过$@将rm后面的参数逐一传给mv移动到.trash目录下
mv $@ ~/.trash/
} function cleartrash(){ # 在终端输入 cleartreash ,就会调用这里的函数,输入'y 或 Y',就会清空.trash目录下的内容
read -p "clear sure?[n]" confirm
[ $confirm == 'y' ] || [ $confirm == 'Y' ] && /bin/rm -rf ~/.trash/* # /bin/rm 不受别名的限制,会直接删除文件
}
####### trash end #######
eof
localhost:~ # source /etc/profile.d/trash.sh

迎宾显示

localhost:~ # cat << 'eof' > /etc/profile.d/ssh-login-info.sh
#!/bin/sh
# 输出一个图像
echo -e "\033[1;35m
██████╗ ██████╗
██╔══██╗ ██╔══██╗
██████╔╝ ██║ ██║
██╔══██╗ ██║ ██║
██████╔╝ ██████╔╝
╚═════╝ ╚═════╝\033[0m" # 获取系统运行的时间(uptime命令看到的时间单位是分钟,/proc/uptime里面看到的时间单位是秒,需要做换算)
upSeconds="$(cut -d. -f1 /proc/uptime)"
secs=$((${upSeconds}%60))
mins=$((${upSeconds}/60%60))
hours=$((${upSeconds}/3600%24))
days=$((${upSeconds}/86400))
UPTIME_INFO=$(printf "%d days, %02dh %02dm %02ds" "$days" "$hours" "$mins" "$secs")
# 判断linux发行版
if [ -f /etc/redhat-release ] ; then
PRETTY_NAME=$(< /etc/redhat-release) elif [ -f /etc/debian_version ]; then
DIST_VER=$(</etc/debian_version)
PRETTY_NAME="$(grep PRETTY_NAME /etc/os-release | sed -e 's/PRETTY_NAME=//g' -e 's/"//g') ($DIST_VER)" else
PRETTY_NAME=$(cat /etc/*-release | grep "PRETTY_NAME" | sed -e 's/PRETTY_NAME=//g' -e 's/"//g')
fi
# 判断当前操作系统是否是虚拟机或容器
if [[ -d "/system/app/" && -d "/system/priv-app" ]]; then
model="$(getprop ro.product.brand) $(getprop ro.product.model)" elif [[ -f /sys/devices/virtual/dmi/id/product_name ||
-f /sys/devices/virtual/dmi/id/product_version ]]; then
model="$(< /sys/devices/virtual/dmi/id/product_name)"
model+=" $(< /sys/devices/virtual/dmi/id/product_version)" elif [[ -f /sys/firmware/devicetree/base/model ]]; then
model="$(< /sys/firmware/devicetree/base/model)" elif [[ -f /tmp/sysinfo/model ]]; then
model="$(< /tmp/sysinfo/model)"
fi MODEL_INFO=${model} # 获取操作系统所在的硬件环境
KERNEL=$(uname -srmo) # 获取内核版本
USER_NUM=$(who -u | wc -l) # 获取连接终端的用户数量
RUNNING=$(ps ax | wc -l | tr -d " ") # 获取运行的进程数量 # 获取磁盘信息:磁盘总量以及使用率
totaldisk=$(df -h -x devtmpfs -x tmpfs -x debugfs -x aufs -x overlay --total 2>/dev/null | tail -1)
disktotal=$(awk '{print $2}' <<< "${totaldisk}")
diskused=$(awk '{print $3}' <<< "${totaldisk}")
diskusedper=$(awk '{print $5}' <<< "${totaldisk}")
DISK_INFO="\033[0;33m${diskused}\033[0m of \033[1;34m${disktotal}\033[0m disk space used (\033[0;33m${diskusedper}\033[0m)" # 获取CPU信息:cpu型号、核心数、逻辑数、
cpu=$(awk -F':' '/^model name/ {print $2}' /proc/cpuinfo | uniq | sed -e 's/^[ \t]*//')
cpun=$(grep -c '^processor' /proc/cpuinfo)
cpuc=$(grep '^cpu cores' /proc/cpuinfo | tail -1 | awk '{print $4}')
cpup=$(grep '^physical id' /proc/cpuinfo | wc -l)
CPU_INFO="${cpu} ${cpup}P ${cpuc}C ${cpun}L" # 获取系统负载情况:1分钟、5分钟、15分钟
read one five fifteen rest < /proc/loadavg
LOADAVG_INFO="\033[0;33m${one}\033[0m / ${five} / ${fifteen} with \033[1;34m$(( cpun*cpuc ))\033[0m core(s) at \033[1;34m$(grep '^cpu MHz' /proc/cpuinfo | tail -1 | awk '{print $4}')\033 MHz" # 获取内存信息:内存总量以及使用率
MEM_INFO="$(cat /proc/meminfo | awk '/MemTotal:/{total=$2/1024/1024;next} /MemAvailable:/{use=total-$2/1024/1024; printf("\033[0;33m%.2fGiB\033[0m of \033[1;34m%.2fGiB\033[0m RAM used (\033[0;33m%.2f%\033[0m)",use,total,(use/total)*100);}')" # 获取服务器IP地址
# extranet_ip=" and $(curl -s ip.cip.cc)"
IP_INFO="$(ip a | grep glo | awk '{print $2}' | head -1 | cut -f1 -d/)${extranet_ip:-}" # 远程连接后,将一下信息输出到终端
echo -e "
\033[0;1;31mInformation as of\033[0m..: \033[1;34m$(date +"%Y-%m-%d %T")\033[0m \033[0;1;31mProduct\033[0m............: ${MODEL_INFO}
\033[0;1;31mOS\033[0m.................: ${PRETTY_NAME}
\033[0;1;31mKernel\033[0m.............: ${KERNEL}
\033[0;1;31mCPU\033[0m................: ${CPU_INFO} \033[0;1;31mHostname\033[0m...........: \033[1;31m$(hostnamectl | grep 'Static hostname' | awk -F ': ' '{print $2}')\033[0m
\033[0;1;31mIP Addresses\033[0m.......: \033[1;31m${IP_INFO}\033[0m \033[0;1;31mUptime\033[0m.............: \033[0;33m${UPTIME_INFO}\033[0m
\033[0;1;31mMemory\033[0m.............: ${MEM_INFO}
\033[0;1;31mLoad Averages\033[0m......: ${LOADAVG_INFO}
\033[0;1;31mDisk Usage\033[0m.........: ${DISK_INFO} \033[0;1;31mUsers online\033[0m.......: \033[1;34m${USER_NUM}\033[0m
\033[0;1;31mRunning Processes\033[0m..: \033[1;34m${RUNNING}\033[0m
"
eof
localhost:~ # chmod +x /etc/profile.d/ssh-login-info.sh

优化vim

localhost:~ # vim /etc/vimrc
set nu
set ts=2
syntax on
set cursorline
hi CursorLine cterm=bold ctermbg=DarkGrey ctermfg=NONE
set paste
set expandtab
set ruler

set nu显示行号
set ts=2tab键默认空格的数量
syntax on开启语法高亮
set cursorline高亮当前行
hi CursorLine cterm=bold ctermbg=DarkGrey ctermfg=NONE配置当前行的颜色
set paste粘贴模式[vim自动缩进很多时候会影响到从外部黏贴进来的文本格式,会导致格式错乱]
set expandtab以空格键代替tab键[写yaml文件很好用,因为yaml文件不支持tab键,一次敲多个空格多难受]
set ruler右下角显示当前所在的行数

清空yum缓存

"减少磁盘的空间占用"
Linux:~ # yum clean all

清空历史操作

Linux:~ # history -c
  • 清空完历史操作后,关机快照,压缩当前虚拟机的数据目录做备份

打造一款属于自己的CentOS操作系统的更多相关文章

  1. 【FastDFS】如何打造一款高可用的分布式文件系统?这次我明白了!!

    写在前面 前面我们学习了如何基于两台服务器搭建FastDFS环境,而往往在生产环境中,需要FastDFS做到高可用,那如何基于FastDFS打造一款高可用的分布式文件系统呢?别急,今天,我们就一起来基 ...

  2. 【ASP.NET程序员福利】打造一款人见人爱的ORM(一)

          “很多人都不太认可以第三方ORM,因为考虑的点不够全面,没有大用户群体的ORM有保证,这点是不可否认确是事实.但是往往用户群体大的ORM又有不足之处,今天我们就来聊聊关于ORM的话题,打造 ...

  3. 【ASP.NET程序员福利】打造一款人见人爱的ORM(二)

    上一篇我已经给大家介绍AntORM的框架[ASP.NET程序员福利]打造一款人见人爱的ORM(一),今天就来着重介绍一下如何使用这套框架 1>AntORM 所有成员 如果你只想操作一种数据库,可 ...

  4. 打造一款属于自己的web服务器——开篇

    JVM总结慢慢来吧,先插播一篇水文,来介绍下最近业余一直在写的一个小项目——easy-httpserver(github).适合新手学习,大神们路过即可^_^. 一.这是个什么玩意? easy-htt ...

  5. 如何打造一款五星级的 APP ?

    移动互联网大潮来袭!据统计,2015 年平均每天有 1000 个新的应用上架,而这些应用的现状可以说是鱼龙混杂,同是每个人的眼光.品味.意识和利益都不同,因此每人眼中的应用也是不同的.在巨大的市场竞争 ...

  6. jquery+css3打造一款ajax分页插件

    原文:[原创]jquery+css3打造一款ajax分页插件 最近公司的项目将好多分页改成了ajax的前台分页以前写的分页插件就不好用了,遂重写一个 支持IE6+,但没有动画效果如果没有硬需求,个人认 ...

  7. Centos操作系统在虚拟机VMware上的安装

    1.下载centos操作系统,提供百度云盘链接:http://pan.baidu.com/s/1pLHOR03 2.打开上篇在VMware中新建好的空白虚拟机,将centos安装在此空白虚拟机上,步骤 ...

  8. 在VM虚拟机中安装Centos操作系统

    首先我们要下载  Centos https://www.centos.org/ 这个是Centos官方 最新版本 7 https://www.centos.org/download/ 提供有 DVD安 ...

  9. Tsung CentOS 操作系统下搭建tsung性能测试环境_Part 2

    CentOS 操作系统下搭建tsung性能测试环境_Part 2 by:授客 QQ:1033553122 --------------------接CentOS 操作系统下搭建tsung性能测试环境_ ...

随机推荐

  1. [未完] Linux 4.4 USB —— spiflash模拟usb大容量存储设备 调试记录 Gadget Mass Stroage

    linux 4.4 USB Gadget Mass Stroage 硬件平台: licheepi nano衍生 调试记录 驱动信息 │ This driver is a replacement for ...

  2. 从内存管理原理,窥探OS内存管理机制

    摘要:本文将从最简单的内存管理原理说起,带大家一起窥探OS的内存管理机制,由此熟悉底层的内存管理机制,写出高效的应用程序. 本文分享自华为云社区<探索OS的内存管理原理>,作者:元闰子 . ...

  3. test_3 简单密码破解

    题目描述:密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了.哇哈哈. 接下来渊子要在密码之上再加一套密码,虽然简单但也安全. 假设渊子原来一个BBS上的密码为zvbo9441987 ...

  4. 服务监控 | 彻底搞懂Dropwizard Metrics一篇就够了

    Metrics是一个提供服务性能检测工具的Java类库,它提供了功能强大的性能指标工具库用于度量生产环境中的各关键组件性能. 度量类型 Metrics提供了以下几种基本的度量类型: Gauge:用于提 ...

  5. vivo推送平台架构演进

    本文根据Li Qingxin老师在"2021 vivo开发者大会"现场演讲内容整理而成.公众号回复[2021VDC]获取互联网技术分会场议题相关资料. 一.vivo推送平台介绍 1 ...

  6. pytest文档5-参数化parametrize

    pytest.mark.parametrize装饰器可以实现测试用例参数化. parametrizing 1.这里是一个实现检查一定的输入和期望输出测试功能的典型例子 # content of tes ...

  7. node.js和vue cli脚手架下载安装配置方法

    一.node.js安装以及环境配置 1.下载vue.js 下载地址: https://nodejs.org/en/ 2.安装node.js 下载完成后,双击安装包开始安装.安装地址最好换成自己指定的地 ...

  8. java继承子类实例化过程(细节解释)

    1 package face_08; 2 class Fu{ 3 Fu(){ 4 super(); 5 show(); 6 return; 7 } 8 void show() { 9 System.o ...

  9. 获取URL中的某段字符

    1. Location 对象 Location 对象包含有关当前 URL 的信息. Location 对象是 window 对象的一部分,可通过 window.Location 属性对其进行访问. ️ ...

  10. 技巧02--Terminal Preview优化

    0x00 下载安装 可在MS应用商店安装,也可以直接百度下载安装包安装 0x01 设置默认自启 0x02 Terminal Preview美化 1.打开终端settings 2.点击这个Open JS ...