CentOS 介绍linuxlinuxcentoskvmlvmsystemdboot发布时间: 2014-04-05 更新时间: 2024-03-24 总字数:7137 阅读时间:15m 作者:谢先斌 IP上海 分享 网址 简单介绍centos 7的常用工具、文件系统管理、文本处理、终端、用户、组、权限、网络配置、进程管理、KVM、软件、定时任务、日志、分区、LVM、kernel管理、apache配置、systemd、boot过程、kickstart、selinux、firewall、performance command、performance tunning、bonding。安装通常最低配置:1G内存、10G硬盘centos7默认文件系统是 XFSXFS不能shrunk,只能expand;ext4可以shrunk。centos7安装的个性化localehostname语言包ntproot密码LVM/boot/swap常用工具2>&1 filehistory保留最近1000个命令(当shell关闭时,同步到~/.bash_history文件中)profile文件/etc/profile 所有用户第一次login都执行/etc/bashrc 所有用户的subshell启动时会执行~/.bash_profile 某用户第一次login时执行~/.bashrc 某用户的subshell启动时会执行总结: 通常login的步骤里都包含subshell的内容/etc/motd 用户成功登陆后显示/etc/issue 用户登陆前显示man -k 关键字执行时,会搜索mandb,显示帮助文档列表root用户执行mandb可更新man数据库文件系统管理linux file system layout 遵循 FHS 规范,man hiermount 会读 /proc/mounts ,显示 所有 已mount的devices(不仅仅是file system,而是所有挂载点)findmnt 会显示树形的所有已mount的devicesfile所有信息(除了name)都存在inode中hard link: original file被删后,不受影响soft link: original file被删后,会不可用tartvf 先显示内容,不解压-C 指定解压的目标目录文本处理less后,G到文尾tail -100 xxcut -d : -f 1 /etc/passwd :分隔,取第一列sort -n 按数字排序sort -k3 -t: /etc/passwd :分隔,按第三列排序grep -e '^#' -e '^$' file -e可多次使用正则终端text模式下,一个terminal对应一个 /dev/ttyx图形模式下,一个terminal对应一个 /dev/pts/xreboot/halt/poweroffssh -p 可指定端口ssh-keygen 创建key pairssh-copy-id 拷贝公钥到target server上screen,记住Ctrl+a ? 即可用户、组visudo 命令可直接编辑sudoer文件用户密码在 /etc/shadow 文件中useradd的默认值存在于 /etc/login.defs 和 /etc/default/useradd将用户和组存到LDAP中配置方法: authconfig/authconfig-tui/authconfig-gtknslcd 服务负责连接LDAP,可以编辑 /etc/nslcd.confsssd 服务负责把本地验证的程序redirect成LDAP的请求权限chown a /home/a 修改所属用户chown :mygroup /home/a 修改所属组chown a:mygroup /home/a 同时修改用户和组当用tar时,文件的ACL会丢失,应该用star命令代替tarumask默认值是022,其实用027比较好网络配置private地址段A类: 10.0.0.8/8B类: 172.16.0.0/12C类: 192.168.0.0/16网卡的命名规则(举例:eno1)en表示以太网,wl表示wlano表示onboard,p表示PCIss命令取代netstatss -ltun 列出所有listen的tcp和udp端口(n表示数字形式)centos7上的网络由NetworkManager服务管理,当该服务启动时,会读取网卡的配置device和connection的区别device是一个网卡connection是代表device的配置在网络没有配置好之前,查看mac地址: dmesg|grep ethip -s link 显示所有connections、packets的统计网络配置工具:NetworkManager 介绍修改主机名hostnamectl set-hostname xxxhostnamectl status 不仅显示主机名,还显示kernel版本等其他信息/etc/hosts 格式是: ip FQDN shortName 或者 ip name设置DNS的方法在/etc/sysconfig/network-scripts/ifcfg-xx配置文件中设置DNS1,DNS2不要直接修改 /etc/resolv.conf ,它会被NetworkManager覆盖进程管理fg 把最后一次后台job放到前台Ctrl+z会暂停job,并没有从内存里清除掉,一旦暂停,可以执行bg放到后台Ctrl+c会停止job,并从内存中清除Ctrl+d会发送EOFjobs 显示当前所有jobfg id 把id号job放到前台bg 把最后一次job放到后台模拟sleep 5555555555&dd if=/dev/zero of=/dev/null &sleep 777777777777 在前台执行Ctrl+z暂停当前长任务bg 放入后台jobs查看所有jobps fax 显示tree进程列表nice值区间[-20,19],默认值是0(即20),值越小,priority越大nice -n 5 dd if=/dev/zero of=/dev/null & 显示指定nice值renice -n 10 -p 12345 重新调整pid进程的nice值如果杀父进程,它的子进程也会被杀掉kill -l 显示所有signalsKVMkvm只能用在64-bit机器上qemu里有kvm没有的东西,比如image file镜像格式要进入kvm提供的vm,需要使用libvirtd,没有它,你无法管理vmvirsh命令行可以管理vmcat /proc/cpuinfo 的flags中中包含vmx (即intel支持虚拟化)virt-manager图形化新建vm,向导会产生一个xml配置文件virsh console xxx 登录vm在宿主上top命令中,一个qemu-kvm进程代表一个vm软件man yum.conf 显示.repo应该怎么写创建自己的yum repoyum install -y createrepocreatereop xxxyum list installedyum groups listyum groups info xxyum和rpm有各自的database,yum命令会同步更新rpm的database,反之则不会,所以尽量使用yumrpm -qc xxx 只显示配置文件rpm -ql xxx 显示rpm中的所有文件yum install yum-utils repoquery -l python-keystone repoquery可以做到不用安装rpm包即可查看rpm包的内容rpm -qlp xxx.rpm 如果已经有rpm包在本地,该命令也可以做到不用安装即可查看rpm包中内容定时任务man crontab/etc/crontab 不要改,应该放一个文件到/etc/cron.d目录下。/etc/anacrontab 负责hourly,daily,weekly,monthly等cron jobscrontab -l 列出当前用户的定时任务日志rsyslogd是syslogd的增强,管理着集中日志centos7中,journald提供了高级功能,它从kernel、启动过程、services中收集日志,写到journal二进制文件中,journalctl可查询journald是systemd带出来的,不是要取代rsyslogd/var/log/下的日志文件是rsyslogd负责写的systemctl status xxx时会显示xxx相关的journal日志/var/logmessages 大多数日志的集中存放地dmesg kernel日志secure 认证错误等日志boot.log 启动日志sssd 服务写的日志,是权限认证方面的logger 命令会写rsyslog日志/etc/rsyslog.conflogrotate被作为cron服务启动起来,定期按照/etc/logrotate.conf中的规定把日志归档。自己可以放文件到/etc/logrotate.d目录下分区MBR是磁盘第一个512字节扇区在MBR的情况下,最多只能创建4个主分区,如果设置其中一个为扩展分区的话,总共能达到15个分区GPT用来取代MBR,UEFI用来取代BIOS在GPT的情况下最大的分区大小是8ZiB多大128个分区不需要再区分主分区和扩展分区用128位id来标识分区默认在磁盘末尾备份,防止MBR式的单点KB和KiB不同,1KB=1000, 1KiB=1024fdisk用来创建MBR分区gdisk用来创建GPT分区cat /proc/partitionstune2fs -l /dev/sdb1 命令用来管理ext4文件系统的propertiesXFS完全不同,只能通过xfs_admin -L mylabel修改labelmkswap /xxx 把xxx作成swapswapon /xxx 激活blkid 查看当前文件系统的UUID/etc/fstab 自动mountmount -a 把/etc/fstab中的全部mount一遍LVMlvm支持snapshotlsblk 显示本机所有storagepvpvcreatepvdisplaypvsvgvgcreatevgdisplayvgextend 加storage到vg中vgslvlvcreatelvdisplaylvextendlvresizelvreduce 会导致自动短暂地被unmouted一下lvslv位于 /dev/vgname/lvnamedevice mapper(dm)是kernel寻找storage device的统一入口,被LVM、RAID等使用了。所以/dev/vgname/lvname仅仅是个linkkernel管理如何接触kernel?dmesg 显示kernel ring buffer(是kernel存放日志的一片内存区域)/procuname 显示kernel version硬件初始化boot期间,kernel探测可用的硬件,一旦发现新硬件,systemd-udevd进程负责load driver,并使硬件可用systemd-udevd会读取/usr/lib/udev/rules.d,这些rule是文件不应该被修改systemd-udevd还会读取 /etc/udev/rules.d 目录,读取自定义的rule文件kernel module被自动加载,module的状态和硬件信息被写入 /sys 目录注意:systemd-udevd不是一次性的,而是一直监控device的热插拔,可用执行 udevadm monitor 可以监控device的插拔kernel module的加载一般module都是随着device的热插拔而自动被加载或者卸载的lsmod显示已载入的modulesmodinfo xx 显示module详细信息,包括module的.ko文件信息等。modprobe xx 手动载入modulemodprobe -r xx 手动卸载modulelspci -k 显示所有PCI设备、以及对应的kernel moduleyum upgrade kernel会在旧kernel旁边安装新kernelgrub2grub2被安装在硬盘的boot sectorgrub2负责加载kernel和initramfsinitramfs包含一个小的file system,启动时会被mount,里面有一些必要的kernel modules不要改/boot/grub2/grub.cfg,可以改/etc/default/grub文件,只改GRUB_CMDLINE_LINUX,改完后,执行grub2-mkconfig > /boot/grub2/grub.cfg去掉启动选项中的rhgb和quiet,会显示多一些内容man bootparamboot过程加电BIOS,POST自检,必要的硬件被初始化从MBR中找到bootable device,加载boot loader(grub2)grub2加载initramfs和kernel,其中initramfs包含一个完整的操作系统一旦kernel载入内存,来自initramfs的systemd进程被启动,udev进程被加载用来识别以后的硬件,截止这里,都是发生在initramfs里systemd执行initrd.target中所有的units系统切换到磁盘上的root文件系统systemd找到default target,并执行其所有的unitsxx.img损坏的修复步骤kpartx -a xx.img 会分析vm img文件中的分区,并映射到device mapper下的loopxx文件上如果loop文件对应的是lvm,则需要pvscan /dev/mapper/loop02lvs 查看所有的lvvgchange -a y xx激活所有的lv开始mount,mount后,进行操作kparx -d xx.imgkickstart准备installer server找一台已手动安装好的操作系统安装apache将DVD内所有内容拷贝到httpd的DocumentRoot里准备tftp serveryum install tftp-server由于tftp service是被xinetd service管理的,需要通过修改/etc/xinetd.d/tftp中的disable=no告诉xinietd放行tftpsystemctl start xinetd && systemctl enable xinetdfirewall-cmd –permanent –add-service=tftpfirewall-cmd –reload准备DHCP serveryum install dhcp修改/etc/dhcp/dhcpd.conf,指定subnet、netmask、range、next-server(tftp地址)、filename(pxelinux/pxelinux.0)准备PXE server(作用就是把pxelinux传给client机器,取代client上grub2的工作)yum install syslinux (因为其中包含了pxelinux.0)cp pxelinux.0 /var/lib/tftpboot/pxelinuxtouch /var/lib/tftpboot/pxelinux/pxelinux.cfg/default ,并填写内容(具体内容自己查)准备kickstart文件说明:/root/anaconda-ks.cfg 文件记录了安装过程中的选项说明:图形化工具system-config-kickstart可以用来创建个性化的kickstart文件在tftp中的default文件中写上ks=xxxxx指定kickstart文件selinux如果selinux被开启,默认是deny all,需要明确指定policy才可以启动时的两种modeenforcing mode 执行所有的rulespermissive mode 仅仅记log/etc/sysconfig/selinuxgetenforce 查看当前modesetenforce 0 -> permissive modesetenforce 1 -> enforcing modesestatus -v 显示selinux的详细信息-Z 选项显示了context label,比如 ls -Z,label分三个部分user (selinux中的user和系统user不是一回事)roletypesemanage 命令用于添加selinux policy (yum provides */semanage 找出包含semanage命令的rpm,并安装)man semanage 里面有examples,毕竟命令很难记selinux的日志的类型是AVC, grep AVC /var/log/audit/audit.logfirewalllinux的firewall是由kernel里netfilter实现的,它检查每个进、出、转发的packet早期与netfilter交互的方式就是iptablescentos7引入了firewalld这种新方式来与netfilter交互,它与iptables不兼容,二选一。firewalld引入了zone的概念,一个zone就是一组rulesfirewalld中还有service的概念,这和systemd service不同。可执行 firewall-cmd --get-service/etc/firewalld 目录命令firewall-cmdfirewall-config 图形界面systemctl mask iptables 禁用iptables,否则会和firewalld搞乱man firewall-cmdtimehardware clock是保存在主板芯片里的时间,和操作系统没有关系,通常都是UTC的system time是操作系统负责的,当OS启动后,system time就和hardware clock完全独立了,就算system time被修改,hardware clock不会跟着被改,system time也是UTC的local time是针对当前时区的换算后的时间hardware clock由于是在主板上,有时不准,所以需要NTP命令hwclockhwclock -c 显示hardware和system time之间的区别hwclock --systohc 同步system time到hardware中hwclock --hctosys 同步hardware time到system中timedatectl 可以操作时间的方方面面,是统一的时间操作入口centos7中,chrony取代ntp,作为默认的时间管理服务时区的设置的方法:tzselectln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtimeperformancetop命令中的load average的含义是:等待cpu的进程数,如果大于cpu core总数,说明比较忙。top命令中的wa表示cpu等待不可中断的IO操作,例如请求磁盘。如果值很大,说明IO性能太差hi 表示cpu处理硬件中断的时间,如果很大,说明硬件有问题si 表示cpu处理软件中断的时间st=stolen time,用在vm中,表示vm从hypervisor中偷了多少cpu时间top命令中的cache表示:从磁盘中读过的file会存在该内存中,为了解决磁盘很慢的问题。当linux运行一段时间后,free值会很小,cache值会很大,这个没问题,反而性能会好。linux很容易就复用cache中的内存。top命令中的buffer和cache不一样,buffer用于保存非结构化数据,比如file system table,inode table,这个值不应该太大。 find / > /dev/null就可以看出buffer变大了(TODO,实测不是这样,执行后,反而cache变大了,buffer变小了。。)。vmstat 可分别显示buffer和cache的大小。top中的VIRT不是真的内存,而是指向虚拟内存地址空间的一组指针top默认是按cpu排序的,按>使按内存排序,按<再回来,按cpu排序如何调整top命令的列?按f显示所有的列,方向键选择后,按空格键选中,选好后,按q出去,按W会保存在~/toprc中/proc/meminfo 中重要的项(通常anon是application memory,file是buffer+cache)Active: 708084 kBInactive: 361304 kBActive(anon): 102580 kBInactive(anon): 30068 kBActive(file): 605504 kBInactive(file): 331236 kB当内存不够用时,OS可以做两件事情drop cache: 等下次需要读file时,再从disk中读即可,如果drop的是Inactive(file),短期内不会用到这些file,基本不影响性能use swap: Inactive(anon)是比较适合放到swap中去的,因为短期内用不到swapon -s 查看swap情况yum install sysstat 里面有很多有用的工具iostat 查看哪个IO设备最忙vmstat -s 很有用,显示内存使用相关的所有性能参数performance tunning/proc目录下有几个有用的/proc/cmdline 显示kernel的启动命令行/proc/partitions 显示所有存储device,和分区。/proc/modules 显示当前被载入的linux kernel modules/proc/sys/ 目录,主要用来调优/proc/sys/dev 设备调优/proc/sys/fs 虚拟文件系统调优/proc/sys/kernel 内核接口调优/proc/sys/net 网络调优/proc/sys/sunrpc NFS调优/proc/sys/vm 虚拟内存调优对/proc/sys下修改的参数都是临时的,不是持久性的sysctl系统boot时,systemd-sysctl 服务被启动,该服务读取sysctl配置文件,/usr/lib/sysctl.d目录下是默认的调优参数(用户不要修改),/etc/sysctl.d目录是给用户自定义的,用户可以新建一个.conf结尾的文件。sysctl的配置文件中用.分割,和/proc/sys路径一致。sysctl -a 显示所有可供调优的参数sysctl -w "net.ipv4.icmp_echo_ignore_all=0" 可以临时修改参数,等同于 echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all 如果想持久化,可以新建文件 /etc/sysctl.d/ping.conf ,内容是 net.ipv4.icmp_echo_ignore_all=1bondingman nmcli-examples给出了bonding的示例:nmcli con add type bond ifname mybond0 mode 802.3adnmcli con add type bond-slave ifname eth1 master mybond0nmcli con add type bond-slave ifname eth2 master mybond0bonding mode(最常用的是802.3ad)balance-rr(0) 顺序在多个slaves上发包,实现了LB和fault toleranceactive-backup(1) 只有一个slave在工作,另一个备份,只有当第一个坏了,第二个才工作,实现了fault tolerance,没实现LBbalance-xor(2) 与mode0不同的是:发往同一个地址的packet是从同一个slave发出去的。同样实现了LB和fault tolerancebroadcast(3) 在每个slave上都发,实现了fault tolerance,没实现LB802.3ad(4) 创建aggregation groups,并且分享相同的速度和双工配置。在switch上也需要配置802.3adbalance-tlb(5) 根据负载情况,出去的包分散在不同的slave上,进来的包只被当前的slave接收。这种很少用balance-alb(6) 和mode5差不多,只是进来的包也LB了。这种也很少用。cat /proc/net/bonding/bond0 监控当前bond0的状态linuxlinuxcentoskvmlvmsystemdboot最近更新Continue 开源人工智能代码助手使用cursor: AI代码编辑器Cline: vscode AI 智能编程插件介绍AI 智能体(agent)介绍golang 日志库:uber-go/zapGolang lodash 库使用Go asynq 异步任务队列Go Ent 数据库 GROM 框架Docker 运行 GUI 软件start-stop-daemon 管理后台程序相关文章CentOS/Linux Install zlib-devel RPM PackageCentos设置静态IP及修改Centos配置文件You need a C++ compiler for C++ supportsort 排序命令IP地址0.0.0.0是什么意思date 使用介绍Linux 中个目录说明init Linux 启动级别:0,1,2,3,4,5,6Apache httpd 安装使用总结配置动态路由RIP最新评论