centos7新特性
centos7-docker镜像
docker pull registry.cn-hangzhou.aliyuncs.com/moensun/centos7
docker pull registry.cn-hangzhou.aliyuncs.com/benpaoz/centos7.4:1.0.3 (使用这个版本)
单用户模式
(1)在对应的内核条目上,按下e,会进入edit模式,搜寻ro那一行,以linux16开关的,按end键到最后,输入rd.break,再按ctrl+x进入。 注意:需要修改LANG=en_US_UTF-8 , 不然会是乱码 (2)进入后重新挂载/sysroot/,增加写权限 mount #查看到只有读权限 mount -o remount,rw /sysroot/ (3)切换到原始系统下 chroot /sysroot/ touch /.autorelabel #这句是为了selinux生效 passwd root (4)退出单用户的方法是 先ctrl+d退出,然后reboot
救援模式
(1)修改bios设置dvd_drive首选启动 (2)选择 troubleshoot ing 回车启动 (3) rescue a centos system 救援模式。然后两次回车 (4)选择 1) continue 两次回车 (5) chroot /mnt/sysimage touch /.autorelabel #这句是为了selinux生效,使用这个 重启不会有检测 (6) passwd root (7) exit (8) reboot
/etc/rc.local不启动
chmod a+x /etc/rc.d/rc.local #添加执行权限
设置ip
# systemctl stop NetworkManager --停止服务 # systemctl status NetworkManager --查看状态,确认为关闭了 # systemctl disable NetworkManager --设置为开机不自动启动
dhclient ip addr #ip命令是通过 iproute这个包提供的。 #如果要用ifconfig yum install -y net-tools vim /etc/sysconfig/network-scripts/ifcfg-eno16777736 #(包括克隆出来的,只需要更改网卡名和驱动名、ip) TYPE=Ethernet BOOTPROTO=static DEFROUTE=yes PEERDNS=yes PEERROUTES=yes NAME=ens33 #网卡名 DEVICE=ens33 #网卡名 ONBOOT=yes IPADDR=192.168.159.30 NETMASK=255.255.255.0 GATEWAY=192.168.159.2 DNS1=114.114.114.114
# /etc/init.d/network restart --network服务这里默认还是可以使用原来的管理方法 # chkconfig network on
时间同步
方法1: # yum install ntp ntpdate --安装ntp时间同步相关软件包 # vim /etc/ntp.conf --确认配置文件里有下列的时间同步源 server 0.rhel.pool.ntp.org iburst server 1.rhel.pool.ntp.org iburst server 2.rhel.pool.ntp.org iburst server 3.rhel.pool.ntp.org iburst # systemctl enable ntpd --设置开机自动启动ntpd # systemctl start ntpd --立即启动ntpd服务 # date --确认时间与现在时间一致 # ntpdate 0.rhel.pool.ntp.org --如果还没有同步成功,你可以用此命令手动同步一下 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #更改时区为上海 方法2: # yum install xinetd -y # vim /etc/xinet.d/time-dgram disable = no (--yes改为no) # vim /etc/xinetd.d/time-stream disable = no (--yes改为no) # systemctl restart xinetd # systemctl status xinetd # systemctl enable xinetd 方法3: yum install ntpd -y echo "30 * * * * root /usr/sbin/ntpdate ntp.api.bz" >> /etc/crontab
设置主机名和命令参数补全
设置主机名 (1)centos7 hostnamectl set-hostname test1 cat /etc/hostname #用上面的命令会直接修改这个配置文件的内容 hostnamectl status #查看hostname状态 (2)centos6 hostname test1 cat /etc/sysconfig/network #上面命令不会修改配置文件的内容 命令参数补全 yum install -y bash-completion source /etc/profile
centos7防火墙
若不想使用firewalld,继续使用iptables,可以停掉firewalld,并且安装iptables-services包 systemctl stop firewalld systemctl disable firewalld yum install -y iptables-services systemctl enable iptables systemctl start iptables
安装好centos7后忧化
https://www.cnblogs.com/benjamin77/p/8473129.html 设置hostname 命令补全 sshd加速 关闭selinux firewalld 安装yum install -y rsync openssl openssl-devel gcc gcc-c++ wget curl unzip lrzsz sysstat ntp man vim bash-completion ntpd screen expect autoconf automake bzip2 bzip2-devel openssh-clients
centos7优化脚本
#!/bin/bash ####centos 7 装好 优化初始脚本 ##运行此脚本 需要通网络 用root用户 #Auther :hanxiaohui #Date :2015-06-18 #User :Set basic environment function FAILED(){ if [ `echo $?` -ne 0 ];then exit fi } #检查用户是否为root USER=`whoami` if [ "$USER" != 'root' ];then echo "Please user root" exit fi #优化内核参数: if [ ! -f '/etc/sysctl.conf.bak' ];then \cp /etc/sysctl.conf{,.bak} cat << eof > /etc/sysctl.conf net.ipv4.tcp_syncookies = 1 #表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭; net.ipv4.tcp_tw_recycle = 1 #表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭; net.ipv4.tcp_tw_reuse = 1 #表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭; net.ipv4.tcp_fin_timeout = 3 #修改系统默认的 TIMEOUT 时间。 net.ipv4.tcp_max_tw_buckets = 20000 net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 0 kernel.core_uses_pid = 1 kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.shmmax = 68719476736 kernel.shmall = 4294967296 net.ipv4.tcp_max_tw_buckets = 10000 net.ipv4.tcp_sack = 1 net.ipv4.tcp_window_scaling = 1 net.ipv4.tcp_rmem = 4096 87380 4194304 net.ipv4.tcp_wmem = 4096 16384 4194304 net.core.wmem_default = 8388608 net.core.rmem_default = 8388608 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.core.netdev_max_backlog = 262144 net.core.somaxconn = 262144 net.ipv4.tcp_max_orphans = 3276800 net.ipv4.tcp_max_syn_backlog = 262144 net.ipv4.tcp_timestamps = 0 net.ipv4.tcp_synack_retries = 1 net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_mem = 94500000 915000000 927000000 net.ipv4.tcp_keepalive_time = 30 net.ipv4.ip_local_port_range = 1024 65000 vm.overcommit_memory = 1 eof fi #刷新系统内核参数: /sbin/sysctl -p #配置PS 环境: if [ -z `egrep -i ps1 /etc/profile |awk '{print $1}'` ];then echo "PS1='\[\e[35;1m\][\u@\h \w \t&&\#]\\$\[\e[m\]'" >> /etc/profile && source /etc/profile fi #做本机的hosts 解析: ETH=`awk '{if($2>0 && NR > 2) print substr($1, 0, index($1, ":") - 1)}' /proc/net/dev |grep -v lo |head -n 1` HOSTS=`egrep -i $(echo $HOSTNAME) /etc/hosts |awk '{print $2}'` if [ -z "$HOSTS" ];then echo $(ip ad |grep "global $ETH" |awk -F "/" '{print $1}' |awk '{print $2}' && echo $HOSTNAME) >> /etc/hosts fi #关闭selinux sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config #禁止使用DNS反向解析: sed -i 's/^#UseDNS yes/UseDNS no/' /etc/ssh/sshd_config #加快登陆速度: sed -i 's/GSSAPIAuthentication yes/GSSAPIAuthentication no/g' /etc/ssh/sshd_config #重新加载openssh service sshd restart #更改语言为en lang=`grep -i lang /etc/locale.conf |awk -F '"' '{print $2}'` if [ "$LANG" != 'en_US.UTF-8' ];then sed -i "s/${LANG}/en_US.UTF-8/" /etc/locale.conf fi #设置时区 if [ ! -f /etc/localtime.bak ];then cp /etc/localtime{,.bak} yes|cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime fi #安装必要的维护工具
yum install -y rsync openssl openssl-devel gcc gcc-c++ wget curl unzip lrzsz sysstat ntp man vim bash-completion ntpd screen expect autoconf automake bzip2 bzip2-devel openssh-clients
FAILED #修改国内源和安装epel源: [ -d /etc/yum.repos.d.bak ] && rm -rf /etc/yum.repos.d.bak cp -a /etc/yum.repos.d{,.bak} rm -rf /etc/yum.repos.d/* wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/Centos-7.repo wget -P /etc/yum.repos.d/ http://mirrors.163.com/.help/CentOS7-Base-163.repo yum clean all yum makecache
sleep 2 yum install -y epel-release wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo yum clean all yum makecache #命令补全 yum install -y bash-completion source /etc/profile #每半个小时从网络上更新一次系统时间 NTPDATE=`egrep -i ntpdate /etc/crontab |awk -F '/' '{print $4}' |awk '{print $1}'` if [ "$NTPDATE" == "" ];then echo "#每半个小时从网络上更新一次系统时间" >> /etc/crontab echo "30 * * * * root /usr/sbin/ntpdate ntp.api.bz" >> /etc/crontab fi /usr/sbin/ntpdate ntp.api.bz #或者写成: #if [ ! -z `egrep -i ntpdate /etc/crontab |awk -F '/' '{print $4}' |awk '{print $1}'` ];then # echo "#每半个小时从网络上更新一次系统时间" >> /etc/crontab # echo "30 * * * * root /usr/sbin/ntpdate time-a.nist.gov" >> /etc/crontab #fi #配置limit ulimit -SHn ,, ulimit -SHu ,, LIMIT=`egrep -i -v '^#|^$' /etc/security/limits.conf` if [ -z "$LIMIT" ] then cp /etc/security/limits.conf{,.bak} sed -i "49i *\t\thard\tnproc\t\t65535\n*\t\tsoft\tnproc\t\t65535\n*\t\thard\tnofile\t\t\65535\n*\t\tsoft\tnofile\t\t65535\n" /etc/security/limits.conf fi iptables -F ;iptables-save > /opt/sh/iptables.bak systemctl disable firewalld
systemctl disable NetworkManager #systemctl stop firewalld #重启系统 sync && reboot
centos7配置国内源和epel源
cd /etc/yum.repos.d/
mkdir repo_bak mv *.repo repo_bak/ wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/Centos-7.repo wget -P /etc/yum.repos.d/ http://mirrors.163.com/.help/CentOS7-Base-163.repo yum clean all # 清除系统所有的yum缓存 yum makecache # 生成yum缓存 yum install -y epel-release # epel源安装成功,比原来多了一个epel.repo和epel-testing.repo文件 wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo # 下载阿里开源镜像的epel源文件 多了epel-7.repo #再次重新生成yum缓存 yum clean all yum makecache yum repolist enabled #查看系统可用的yum源 yum repolist all #所有的yum源
centos7修改系统语言和设置时区
查看系当前语言包 locale 查看系统拥有语言包 locale -a (zh_CN.UTF-8是简体中文,如果没有zh_CN.UTF-8,就安装语言包,如果存在可以直接设置) 安装简体中文语言包 yum install kde-l10n-Chinese 设置为中文 临时 LANG="zh_CN.UTF-8" #修改为中文 LANG="en_US.UTF-8" #修改为英文 永久 方法(一) vi /etc/locale.conf ##加下面内容到第一行,设置中文 LANG=zh_CN.UTF8 方法(二) localectl set-locale LANG=zh_CN.UTF8 修改时区为亚洲上海 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
centos7不再有chkconfig工具了,而是使用systemd
使某服务自启动 systemctl enable httpd.service 不自启动 systemctl disable httpd.service 查看服务状态 systemctl status httpd.service 查看所有服务 systemctl list-units --type=service 启动服务 systemctl start httpd.service 停止服务 systemctl stop httpd.service 重启服务 systemctl restart httpd.service systemctl daemon-reload #改配置后需要执行这个 启动脚本路径
/usr/lib/systemd/system/ 检查一个服务是否为开机启动
systemctl is-enabled httpd
列出所有正在运行的、类型为service的Unit
systemctl list-units --type=service
systemctl list-unit-files | grep enabled | grep service #这个好用
查看启动时的默认Target:
systemctl get-default
设置启动时的默认 Target: systemctl set-default multi-user.target
切换 Target 时,默认不关闭前一个 Target 启动的进程,systemctl isolate 命令改变这种行为,关闭前一个 Target 里面所有不属于后一个 Target 的进程
systemctl isolate multi-user.target
查看运行级别:
runlevel
查看一个service属于哪个target,需要cat 具体的service文件:
cat /usr/lib/systemd/system/sshd.service #看里面[install]部分
systemd - unit
systemd管理服务的机制的特点: 支持服务并列启动,不用顺序启动,从而开机时间缩短 支持自动检测服务依赖的服务 Systemd 可以管理所有系统资源。不同的资源统称为 Unit(单位)。 Unit 一共分成12种类型 Service unit:系统服务 Target unit:多个 Unit 构成的一个组 Device Unit:硬件设备 Mount Unit:文件系统的挂载点 Automount Unit:自动挂载点 Path Unit:文件或路径 Scope Unit:不是由 Systemd 启动的外部进程 Slice Unit:进程组 Snapshot Unit:Systemd 快照,可以切回某个快照 Socket Unit:进程间通信的 socket Swap Unit:swap 文件 Timer Unit:定时器 systemd - unit相关命令: 列出正在运行的 Unit systemctl list-units 列出所有Unit,包括没有找到配置文件的或者启动失败的 systemctl list-units --all 列出所有没有运行的 Unit systemctl list-units --all --state=inactive 列出所有加载失败的 Unit systemctl list-units --failed 列出所有正在运行的、类型为 service 的 Unit systemctl list-units --type=service 显示某个 Unit 是否正在运行 systemctl is-active application.service 显示某个 Unit 是否处于启动失败状态 systemctl is-failed application.service 显示某个 Unit 服务是否建立了启动链接 systemctl is-enabled application.service
systemd target启动级别
centos7里不再有0-6启动级别,而是4个target graphical.targe 多人模式,支持图形和命令行两种登陆,对应之前的3,5级别 multi-user.target 多人模式,只支持命令行登录,对应之前的3级别 rescue.target 单人模式,对应之前的1级别 emergency.target 单人模式,不过系统进入后根目录是只读的。 target类似于centos6里面的启动级别,但target支持多个target同时启动。target其实是多个unit的组合,系统启动说白了就是启动多个unit,为了管理方便,就使用target来管理这些unit。 查看当前系统的所有 Target systemctl list-unit-files --type=target 查看一个 Target 包含的所有 Unit systemctl list-dependencies multi-user.target 查看启动时的默认 Target systemctl get-default 设置启动时的默认 Target systemctl set-default multi-user.target 切换 Target 时,默认不关闭前一个 Target 启动的进程, systemctl isolate 命令改变这种行为,关闭前一个 Target 里面所有不属于后一个 Target 的进程 systemctl isolate multi-user.target 查看运行级别 runlevel
systemd unit 关联target
主配置文件 /etc/systemd/system.conf 开机会先加载 /etc/systemd/system/default.target 所有的service和target在 /usr/lib/systemd/system/ ls -l /etc/systemd/system/defaut.target 是一个软连接,软连接到了/usr/lib/systemd/system/multi-user.target 它会加载/usr/lib/systemd/system/multi-user.target.wants下面的service 查看一个service属于哪个target,需要cat 具体的service文件 cat /usr/lib/systemd/system/sshd.service 看里面[install]部分