一、linux文件系统目录结构 Filesystem Hierarchy Standard(FHS)
/:根目录,所有的目录、文件、设备都在/之下,/就是Linux文件系统的组织者,也是最上级的领导者。
/bin:bin 就是二进制(binary)英文缩写。在一般的系统当中,都可以在这个目录下找到linux常用的命令。系统所需要的那些命令位于此目录。
/boot:Linux的内核及引导系统程序所需要的文件目录,比如 vmlinuz initrd.img 文件都位于这个目录中。在一般情况下,GRUB或LILO系统引导管理器也位于这个目录。
/cdrom:这个目录在刚刚安装系统的时候是空的。可以将光驱文件系统挂在这个目录下。例如:mount /dev/cdrom /cdrom linux 7已无此目录
/dev:dev 是设备(device)的英文缩写。这个目录对所有的用户都十分重要。因为在这个目录中包含了所有linux系统中使用的外部设备。但是这里并不是放的外部设备的驱动程序。这一点和常用的windows,dos操作系统不一样。它实际上是一个访问这些外部设备的端口。可以非常方便地去访问这些外部设备,和访问一个文件,一个目录没有任何区别。
/etc:etc这个目录是linux系统中最重要的目录之一。在这个目录下存放了系统管理时要用到的各种配置文件和子目录。要用到的网络配置文件,文件系统,x系统配置文件,设备配置信息,设置用户信息等都在这个目录下。
/home:如果建立一个用户,用户名是"xx",那么在/home目录下就有一个对应的/home/xx路径,用来存放用户的主目录。
/lib:lib是库(library)英文缩写。这个目录是用来存放系统动态连接共享库的。几乎所有的应用程序都会用到这个目录下的共享库。因此,千万不要轻易对这个目录进行什么操作,一旦发生问题,系统就不能工作了。
/lost+found:在ext2或ext3文件系统中,当系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里。当系统启动的过程中fsck工具会检查这里,并修复已经损坏的文件系统。有时系统发生问题,有很多的文件被移到这个目录中,可能会用手工的方式来修复,或移到文件到原来的位置上。 linux 7已无此目录
/mnt:这个目录一般是用于存放挂载储存设备的挂载目录的,比如有cdrom等目录。可以参看/etc/fstab的定义。
/media:有些linux的发行版使用这个目录来挂载那些usb接口的移动硬盘(包括U盘)、CD/DVD驱动器等等。
/opt:这里主要存放那些可选的程序。
/proc:可以在这个目录下获取系统信息。这些信息是在内存中,由系统自己产生的。
/root:Linux超级权限用户root的家目录。
/sbin:这个目录是用来存放系统管理员的系统管理程序 System Binary。大多是涉及系统管理的命令的存放,是超级权限用户root的可执行命令存放地,普通用户无权限执行这个目录下的命令,这个目录和/usr/sbin; /usr/X11R6/sbin或/usr/local/sbin目录是相似的,凡是目录sbin中包含的都是root权限才能执行的。
/selinux :对SElinux的一些配置文件目录,SElinux可以让linux更加安全。 linux 7已无此目录
/srv 服务启动后,所需访问的数据目录,举个例子来说,www服务启动读取的网页数据就可以放在/srv/www中
/sys :Linux 内核中设计较新的一种虚拟的基于内存的文件系统,它的作用与 proc 有些类似,但除了与 proc 相同的具有查看和设定内核参数功能之外,还有为 Linux 统一设备模型作为管理之用。
/tmp:临时文件目录,用来存放不同程序执行时产生的临时文件。有时用户运行程序的时候,会产生临时文件。/tmp就用来存放临时文件的。/var/tmp目录和这个目录相似。
/usr: (Unix System Resource) 这是linux系统中占用硬盘空间最大的目录。用户的很多应用程序和文件都存放在这个目录下。在这个目录下,可以找到那些不适合放在/bin或/etc目录下的额外的工具
/usr/local:这里主要存放那些手动安装的软件,即不是通过“新立得”或apt-get安装的软件。它和/usr目录具有相类似的目录结构。让软件包管理器来管理/usr目录,而把自定义的脚本(scripts)放到/usr/local目录下面。
/usr/share :系统共用的东西存放地,比如 /usr/share/fonts 是字体目录,/usr/share/doc和/usr/share/man帮助文件。
/var:这个目录的内容是经常变动的,看名字就知道,可以理解为vary的缩写,/var下有/var/log 这是用来存放系统日志的目录。/var/ www目录是定义Apache服务器站点存放目录;/var/lib 用来存放一些库文件,比如MySQL的,以及MySQL数据库的的存放地。[30]
二、linux常用命令全称
cal = CALendar calendar日历, 历法
cat = CATenate 连接, 使连续
cd = Change Directory
chgrp = CHange GRouP
chmod = CHange MODe
chown = CHange OWNer
chsh = CHange SHell
cmp = compare
cobra = Common Object Request Broker Architecture
comm = common
cp = CoPy
cpio = CoPy In and Out
cpp = C Pre Processor
cron = Chronos 希腊文时间
cups = Common Unix Printing System
cvs = Current Version System
daemon = Disk And Execution MONitor 这个词应该出现在计算机之前吧,挺有人缘的
dc = Desk Calculator
dd = Disk Dump
df = Disk Free
diff = DIFFerence
dmesg = diagnostic message
du = Disk Usage
ed = editor
egrep = Extended GREP
elf = Extensible Linking Format
elm = ELectronic Mail
emacs = Editor MACroS
eval = EVALuate
ex = EXtended
exec = EXECute
fd = file descriptors
fg = ForeGround
fgrep = Fixed GREP
Fish = the Friendly Interactive SHell
file = file 查看文件类型,是否是二进制等
fmt = format
fsck = File System ChecK
fstab = FileSystem TABle
fvwm = F*** Virtual Window Manager
gawk = GNU AWK
gcc = general public licence (GNU) compiler collection 编译程序会产生二进制a.out文件
gpg = GNU Privacy Guard
grep = Global search regular expression and print out line
groff = GNU troff
hal = Hardware Abstraction Layer
joe = Joe's Own Editor
ksh = Korn SHell
lame = Lame Ain't an MP3 Encoder
lex = LEXical analyser
lisp = LISt Processing = Lots of Irritating Superfluous Parentheses
ln = LiNk
lpr = Line PRint
ls = list
lsof = LiSt Open Files
m4 = Macro processor Version 4
make = make
man = MANual pages 之前曾困惑过一段时间,被人笑话:多看man,少看woman
mawk = Mike Brennan's AWK
mc = Midnight Commander
MIME = Multipurpose Internet Mail Extensions
mkfs = MaKe FileSystem
mknod = MaKe NODe
motd = Message of The Day
mozilla = MOsaic GodZILLa
mtab = Mount TABle
mv = MoVe
nano = Nano's ANOther editor
nawk = New AWK
nl = Number of Lines
nm = names
nohup = No HangUP
nroff = New ROFF
od = Octal Dump
passwd = PASSWorD
pg = pager
pico = PIne's message COmposition editor
pine = "Program for Internet News & Email" = "Pine is not Elm"
ping = Packet InterNet Groper
pirntcap = PRINTer CAPability
popd = POP Directory
pr = pre
printf = PRINT Formatted
ps = Processes Status
pty = pseudo tty
pushd = PUSH Directory
pwd = Print Working Directory
rc = runcom = run command, rc还是plan9的shell
rev = REVerse
rm = ReMove
rn = Read News
roff = RunOFF
rpm = RPM Package Manager = RedHat Package Manager
rsh, rlogin, rvim中的r = Remote
rxvt = ouR XVT
seamoneky = 我
sed = Stream EDitor
seq = SEQuence
shar = SHell ARchive
slrn = S-Lang rn
ssh = Secure SHell
ssl = Secure Sockets Layer
stty = Set TTY
su = Substitute User 或 Switch User(前者较常见)
sudo = superuser / substitue user do 在ubuntu下更倾向于superuser,因为它代表了root权限
svn = SubVersioN
tar = Tape ARchive
tcsh = TENEX C shell
tee = T (T形水管接口)
telnet = TEminaL over Network
termcap = terminal capability
terminfo = terminal information
tex = τέχνη的缩写,希腊文art
tr = traslate
troff = Typesetter new ROFF
tsort = Topological SORT
tty = TeleTypewriter 电传打字机?没用过。不知道与ubuntu的text界面是怎么联系起来的。
twm = Tom's Window Manager
tz = TimeZone
udev = Userspace DEV
ulimit = User's LIMIT
umask = User's MASK
uniq = UNIQue
vi = VIsual = Very Inconvenient 后面的那个是别人附会的吧,不方便为什么会有那么多人用。不过像我等初学者确实用不惯,vim 稍微好一点。
vim = Vi IMproved
wall = write all
wc = Word Count
wine = WINE Is Not an Emulator 太搞了,和GNU's Not Unix有得一拼
xargs = eXtended ARGuments
xdm = X Display Manager
xlfd = X Logical Font Description
xmms = X Multimedia System
xrdb = X Resources DataBase
xwd = X Window Dump
yacc = yet another compiler compiler
pwd = Print work diretory
三、Linux系统部分重要信息
env:可以查看所有系统环境变量
/etc/passwd:用户配置文件;结果为 root:x:0:0:root:/root:/bin/bash 列解析为 注册名:口令:用户标识号:组标识号:用户名:用户主目录:命令解释程序
/etc/shadow:用户口令配置文件;结果为 root:$6$1IAGwDKJoLmOUQcQ$a.nmQSXjchkABuSwttZyzKjWN.DUmvsfa22DPdJSmV4rnSgrmX5trOrTB9qz9UctV4ok6F2Dh/z2zE/At.Sp51::0:99999:7:::
1、账户名称
2、加密后的密码,如果这一栏的第一个字符为!或者*的话,说明这是一个不能登录的账户,从上面可以看出,ubuntu默认的就不启用root账户。
3、最近改动密码的日期(这个是从1970年1月1日算起的总的天数)。
4、密码不可被变更的天数:设置了这个值,则表示从变更密码的日期算起,多少天内无法再次修改密码,如果是0的话,则没有限制
5、密码需要重新变更的天数:如果为99999则没有限制
6、密码过期预警天数
7、密码过期的宽恕时间:如果在5中设置的日期过后,用户仍然没有修改密码,则该用户还可以继续使用的天数
8、账号失效日期,过了这个日期账号就无法使用
9、保留的
/etc/group:组配置文件;结果为 root:x:0: 列解析为 组名:口令:组标识号:组内用户列表
/etc/inittab:系统运行级别配置文件;
0:关机
1:服务器出问题(单用户状态)
2:无网络服务(NFS)的多用户模式
3:完整的多用户模式
4:无保留无使用
5:桌面模式
6:重新启动
runlevel 和 systemctl get-default 都可查看当前运行级别;
systemctl set-default multi-user.target:设置为3,多用户级别,重启后生效
systemctl set-default graphical.target:设置为5,图形化桌面模式,重启后生效
chkconfig --level 4 network off/on # 将network这个服务在(4:无保留无使用)级别关系自启动 #linux7.0之后,不再关心启动级别,chkconfig也将废除,systemctl默认控制就是3和5级别
/etc/profile:改变会涉及到系统的环境,里修改会对所有用户起作用。
/etc/fstab:磁盘挂载表,如果新增加磁盘,需要在此增加然后每次机器重启磁盘会自动挂载
/etc/sysconfig/network-scripts/ifcfg-ens33 #网卡配置文件 systemctl restart/status networks
TYPE=Ethernet # 网卡类型:为以太网
PROXY_METHOD=none # 代理方式:关闭状态
BROWSER_ONLY=no # 只是浏览器:否
BOOTPROTO=static # 网卡协议 DHCP 动态获取ip,static固定ip
DEFROUTE=yes # 默认路由:是
IPV4_FAILURE_FATAL=no # 是否开启IPV4致命错误检测:否
IPV6INIT=yes # IPV6是否自动初始化: 是
IPV6_AUTOCONF=yes #IPV6是否自动配置:是
IPV6_DEFROUTE=yes #IPV6是否可以为默认路由:是(现在还未用到IPV6,不会有任何影响)
IPV6_FAILURE_FATAL=no #是否开启IPV6致命错误检测
IPV6_ADDR_GEN_MODE=stable-privacy #IPV6地址生成模型
NAME=ens33 # 网卡名字(与DEVICE一致)
UUID=238b3ec3-abc6-4f37-8750-9a157302c480 #唯一标识码
DEVICE=ens33 #网卡设备名称,必须和‘NAME’值一样
ONBOOT=yes # 是否开机自动启动
IPADDR=192.168.100.101 #ip地址(static设置)
NETMASK=255.255.255.0 #子网掩码(static设置) 子网掩码,是为了掩盖住“网络号net_id”,暴露出“主机号host_id”
GATEWAY=192.168.100.2 #网关(static设置)
DNS1=8.8.8.8 #dns地址解析1
DNS2=8.8.8.4 #dns地址解析2
/etc/hostname #机器的主机名(修改后需重启) hostnamectl set-hostname master(命令修改后不需重启即生效) #linux6使用vim /etc/sysconfig/network修改主机名称;linux7使用vim /etc/hostname修改主机名称;
/etc/hosts #配置主机名和ip地址对应关系, ssh 或者ping 主机名时可以解析到对应的ip地址。 其实就是DNS解析
/etc/selinux/config #生产环境一般都关闭此安全策略 SELINUX=enforcing 改为 disabled
/etc/firewalld/firewalld.conf #防火墙配置文件
四、Linux安装 (生产都选择最小安装,然后再安装其它工具)
1.一般安装时需要对 /boot(启动分区) /SWAP(交换分区) /(跟目录分区) 三个进行单独分区
2.建议前期安装网络查看工具 yum -y install net-tools (可以生成ifconfig、netstat、route、arp等命令,可以使用rpm -qail net-tools查看具体包含哪些命令)
3.建议前期安装vim工具 yum -y install vim
五、vi和vim的使用
yy:拷贝当前行,5yy拷贝5行
dd:删除当前行,5dd删除5行
/str:查找匹配str字符,n查找下一个,N查找上一个
?str:查找匹配str字符,n查找上一个,N查找下一个
set nu:在前面加行号
set nonu:在前面取消行号
gg:跳转到首行;5gg跳转到第5行
G:跳转到尾行;
u:撤销上一次更改
:q:推出
:wq:保存推出
:q!:强制推出
六、linux某些重要命令
less 和 more 建议使用less ,因为less每次只读当前屏幕数据,more读取所有数据(大文件会卡死)
cal:查看当前日历
cal 2021:显示2021年日历
date '+%Y%m%d %H%M%S':查看当前日期和时间
date -s '20210208 15:21:00' #设置当前时间
find /root/ -name 'anac*' :在/root/下查找anac开头的文件名
find /root/ -size +500M :查找大于 500M的文件
find /root/ -atime +10 :查找十天前的文件
which ls:查看ls指令在哪个目录
gzip,gunzip:只能压缩文件 , 不能压缩目录 ,后缀名为.gz , 而且不保留原文件 。 请都使用tar处理
bzip2,bunzip2:压缩(解压)文件,压缩文件后缀为.bz2 。 请都使用tar处理
zip,unzip:压缩(解压)文件,压缩文件后缀为.zip 。 请都使用tar处理
tar:压缩后格式为.gz; -c创建打包文件,-v显示详细信息,-f指定压缩后文件名,-z打包同时以.gz压缩,-j打包同时以.bz2压缩,-J打包同时以.xz压缩,-x解压,-C解压到哪个目录 (man tar 里面有lzip,lzma,lzop等多种压缩)
tar -czvf /root/test.tar.gz /root/anaconda-ks.cfg /root/anaconda-ks.cfg.20210208 /root/jdk1.8.0_271/*
tar -xzvf /root/test.tar.gz -C /opt/test #解压到指定目录中
[root@s2 ~]# du -ha --max-depth=1 /root #展示/root目录下,当前深度为1所有目录占用大小情况,加-a不仅展示文件夹,还展示文件
20K /root/.ssh
343M /root/jdk1.8.0_271
980M /root/hadoop-2.10.1
933M /root/HA
38M /root/zookeeper-3.6.2
70M /root/kafka_2.13-2.7.0
353M /root/hbase-2.4.0
261M /root/spark-2.4.7
3.1G /root
[root@s2 ~]# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 1.5 0.6 128028 6624 ? Ss 10:29 0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S 10:29 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 10:29 0:00 [kworker/0:0]
VSZ:占用虚拟内存大小(kb)
RSS:占用物理内存大小(kb)
TTY:使用的终端的名称
STAT:进程运行状态; S:sleep;s:改进程是会话的先导进程;R:run;N:进程执行优先级很低;D短期等待;Z:僵死进程;T:被跟踪或者被停止
[root@s2 ~]# ps -ef #可以查看进程的父进程。
PID:当前进程的ID;
PPID:父进程id;
[root@s2 ~]# top #可以实时动态查询进程情况 -d 每隔10秒显式所有进程的资源占用情况,-c 带命令的参数,-p 只查看指定进程id,-i忽略闲置和僵死进程
top - 15:32:24 up 5:45, 1 user, load average: 0.00, 0.01, 0.05 #系统时间,运行时间,终端登录数,系统负载情况,如果 (0.00 + 0.01 + 0.05) >= 0.7 则系统负载过大,要查看原因
Tasks: 97 total, 1 running, 96 sleeping, 0 stopped, 0 zombie #僵死进程要注意定期清理
%Cpu(s): 0.0 us, 6.2 sy, 0.0 ni, 93.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st #cpu使用情况;us用户占用,sy系统占用,ni用户进程空间内改变过优先级的进程占用,id空闲cpu,wa等待输入输出的CPU时间,如果此值过大,说明io太大,hi硬件中断,si软件中断,st实时情况
KiB Mem : 864600 total, 520708 free, 193332 used, 150560 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 531600 avail Mem
PID USER PR优先级 NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND #NI:负值表示高优先级,正值表示低优先级; VIRT:进程使用的虚拟内存总量; RES:进程使用的、未被换出的物理内存大小,单位kb; SHR:共享内存大小,单位kb; S:进程状态(D=不可中断的睡眠状态;R=运行;S=睡眠;T=跟踪/停止;Z=僵尸进程)
2293 root 20 0 162100 2192 1528 R 5.9 0.3 0:00.03 top
1 root 20 0 128164 6760 4180 S 0.0 0.8 0:01.96 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
# P:cpu占用比排序显示;M:内存占用比排序显示;u:然后输入用户如mysql,此时只显示这个用户的进程;k:然后输入要杀死的进程pid,再输入9强制杀死
[root@s2 ~]# netstat -anpo #此命令最小安装没有
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name Timer #Proto:协议名;recv-Q:网络接收队列;send-Q:网路发送队列;State:LISTEN打开一个socket进行监听,ESTABLISHED打开的连接
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 941/sshd off (0.00/0/0)
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1193/master off (0.00/0/0)
tcp 0 36 192.168.100.103:22 192.168.100.100:52923 ESTABLISHED 1460/sshd: root@pts on (0.22/0/0)
crontab 定时任务的基本格式为
* * * * * [user-name] [command to be executed]
第一个*表示分钟,用0~59表示,用*或者*/1表示每分钟;
第二个*表示小时,用0~23表示,0表示0点,也即24点;
第三个*表示日期,用0~31表示;
第四个*表示月份,用1~12表示;
第五个*表示星期,用0~6表示,0表示星期日;
上面的五个参数中,都可以使用*表示每分钟、每小时、每天,每周。
user-name 表示执行该命令的用户
command表示要定时执行的内容
killall gedit #可以杀死进程名称,支持正则表达式;最小安装没有此指令
pstree -up #查看进程树, -u 显示进程对应用户 -p显示进程号 最小安装没有此指令
systemctl list-unit-files #查看linux有哪些服务; 根据 systemd的Unit放在目录/usr/lib/systemd/system 目录内的文件列出所有的 unit。
systemctl list-unit-files |grep enable #查看开机启动项
rm /etc/init.d/mysql.server #删除开机启动项配置的服务
systemctl daemon-reload #没有的服务拿掉刷新
每次修改/lib/systemd/system/jetty.service服务后,都需要执行systemctl daemon-reload来重载服务
chkconfig --list #部分开机启动可能在老版本中
systemctl list-units #和systemctl不加任务参数一样,列出当前已经启动的 unit,如果添加 -all 选项会同时列出没有启动的 unit
systemctl --type=service #列出有哪些对外的服务
systemctl --failed #查看加载失败的服务, 管理员要定期检查
systemctl list-dependencies #查看服务之间依赖关系
systemctl list-dependencies multi-user.target --reverse # 查看multi-user.target被谁使用,如果不加--reverse则代表multi-user.target需要依赖哪些
setup # 以图形界面展示服务, 最小安装没有此指令
#在RHEL7系列中,默认使用firewalld作为防火墙,iptables默认是关闭的 systemctl list-unit-files | grep -E 'iptables|ip6tables|ebtables'
firewall-cmd --permanent --add-port=111/tcp 端口号/协议 #打开端口 可以使用 netstat -anp 查看端口对应协议
firewall-cmd --permanent --remove-port=端口号/协议 #关闭端口
firewall-cmd --reload #重新载入才能生效
firewall-cmd --query-port=端口号/协议 #查询端口号是否开放
firewall-cmd --zone=public --list-ports # 展示哪些打开的端口
rpm -qail net-tools #查看软件安装包的信息, i:详细安装信息,时间大小等;l:包含了哪些指令及文档等
rpm -qf /etc/passwd #查询文件归属于哪个软件包
rpm -e --nodeps firefox #卸载软件包 erase,nodeps强制删除,使依赖的软件包可以失效
rpm -ivh xxxxx.rpm #安装rpm软件包 i:install,v:verbose提示,h:hash进度条
rpm -Uvh xxxxx.rpm #升级rpm软件包 U:update
yum list | grep firefox #查询yum服务器是否有需要安装的软件包
yum install firefox #安装软件 加-y 依赖包不提示直接安装
yum remove firefox #卸载软件
journalctl #查看内存中的日志
七、如何给linux增加 和 卸载磁盘
1.将磁盘插入到机柜的机器上,然后reboot重启机器(如果不重启可通过如下方法,只能是SCSI磁盘) 分区 ==》 格式化 ==》 挂载
2.查看主机总线号
[root@s2 ~]# ls /sys/class/scsi_host/
host0 host1 host2
3.重新扫描SCSI总线来添加设备(仅执行如下其中一条即可)
echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan
4.查看磁盘是否挂载上
fdisk -l
5.给新挂载磁盘分区
fdisk /dev/sdb # n新增 p主分区 w保存推出
6.查看分区是否成功
fdisk -l
7.格式化新分区,生成uuid #总结,后期应该只使用 xfs(大数据,大文件) 和 ext4 文件格式
mkfs -t xfs /dev/sdb1
8.查看格式化后的分区情况
[root@s2 ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 346bed53-1596-49d7-bb41-6fadd6072ff0 /boot
└─sda2 LVM2_member uUANC0-VzO8-kUPx-aqGc-kSYO-C3YE-tsoTNl
├─centos-root xfs baede7d5-d5a9-44cb-8c65-97026a7ede24 /
└─centos-swap swap c3d7f702-0493-4024-84a5-8b50d9c2845c [SWAP]
sdb
└─sdb1 xfs 5cbf384f-ece1-4f03-b301-a7ee7ec2dd3e /mnt/xxx #mount后此处会有值
sr0 iso9660 CentOS 7 x86_64 2020-11-04-11-36-43-00
9.挂载磁盘到系统
mount /dev/sdb1 /mnt/newdisk #重启后挂载会丢失
10.永久磁盘自动挂载
vi /etc/fstab
/dev/mapper/centos-root / xfs defaults 0 0
UUID=346bed53-1596-49d7-bb41-6fadd6072ff0 /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/sdb1 /mnt/newdisk xfs defaults 0 0
卸载磁盘
1. umount /dev/sdb1
2.vi /etc/fstab 删除要挂载磁盘
3.fdisk -/dev/sdb # d删除磁盘分区
4.移除磁盘
5.查看分区挂载情况 lsblk -f
6.查看磁盘是否移除 fdisk -l
八、shell编程
set 用来显示本地变量, 环境变量,可以设置变量,unset取消设置的变量
env 用来显示环境变量
export 用来显示和设置环境变量
echo $SHELL:当前系统默认使用的shell语言
bash /root/study/test.sh #不需要执行权限,bash或者sh(默认使用的shell语言)帮你执行
./root/study/test.sh #需要执行人权限
\cp anaconda-ks.cfg anaconda-ks.cfg.20210208:在cp前加反斜杠,复制时如果文件存在则不提示是否覆盖,而直接覆盖
VAR1=`date` #将执行返回结构给var1, 和 VAR1=$(date) 等价
位置参数变量
$n:n为数字,$0代表命令本身,$1-$9代表带一个到第九个参数,十以上的参数需要使用大括号表示,比如${10}
$*:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体
$@:这个变量也代表命令行中所有的参数,是把每个参数却分对待
$#:这个变量代表命令行中所有参数的个数
$$: 脚本执行的进程id
$?: 上一条命令执行后的状态,结果为0表示执行正常,结果为1表示执行异常;
$!: Shell最后运行的后台Process的PID(后台运行的最后一个进程的 进程ID号)
for语句、while语句、if语句、case语句
read (选项) (参数)
选项:-p:给出提示符。-s:静默模式。输入的内容不会回显在屏幕上。-t:给出超时时间,在达到超时时间时,read退出并返回错误。
参数:去读的变量名
while read line
do
eval export $line
done < $WORKDIR/cjzq.cfg
常用函数
basename:返回路径信息中的文件名部分
dirname:返回路径信息中的路径信息部分
九、系统日志每天定期检查
系统服务进程 rsyslogd 通过配置文件 /etc/rsyslog.conf 来输出指定的日志
自定义所有输出日志到某个固定文件
*.* /var/log/myall.log #其中第一个*代表日志类型,第二个*代表日志级别
日志类型:
auth ##pam产生的日志
authpriv ##ssh、ftp等登录信息的验证信息
corn ##时间任务相关
kern ##内核
lpr ##打印
mail ##邮件
mark(syslog)-rsyslog ##服务内部的信息,时间标识
news ##新闻组
user ##用户程序产生的相关信息
uucp ##unix to nuix copy主机之间相关的通信
local 1-7 ##自定义的日志设备
日志级别分为:注意:从上到下,级别从低到高,记录信息越来越少
debug ##有调试信息的,日志通信最多
info ##一般信息日志,最常用
notice ##最具有重要性的普通条件的信息
warning ##警告级别
err ##错误级别,阻止某个功能或者模块不能正常工作的信息
crit ##严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert ##需要立刻修改的信息
emerg ##内核崩溃等重要信息
none ##什么都不记录
/var/log/messages 包括整体系统信息,其中也包含系统启动期间的日志。此外,mail,cron,daemon,sftp,kern和auth等内容也记录在var/log/messages日志中。
/var/log/yum.log 包含使用yum安装的软件包信息。
/var/log/cron 每当cron进程开始一个工作时,就会将相关信息记录在这个文件中。
/var/log/dmesg 包含内核缓冲信息(kernel ring buffer)。在系统启动时,会在屏幕上显示许多与硬件有关的信息。可以用dmesg查看它们。
/var/log/auth.log 包含系统授权信息,包括用户登录和使用的权限机制等。
/var/log/boot.log 包含系统启动时的日志。
/var/log/daemon.log 包含各种系统后台守护进程日志信息。
/var/log/dpkg.log 包括安装或dpkg命令清除软件包的日志。
/var/log/kern.log 包含内核产生的日志,有助于在定制内核时解决问题。
/var/log/lastlog 记录所有用户的最近信息。这不是一个ASCII文件,因此需要用lastlog命令查看内容。
/var/log/maillog /var/log/mail.log 包含来着系统运行电子邮件服务器的日志信息。例如,sendmail日志信息就全部送到这个文件中。
/var/log/user.log 记录所有等级用户信息的日志。
/var/log/Xorg.x.log 来自X的日志信息。
/var/log/alternatives.log 更新替代信息都记录在这个文件中。
/var/log/btmp 记录所有失败登录信息。使用last命令可以查看btmp文件。例如,”last -f /var/log/btmp
/var/log/cups 涉及所有打印信息的日志。
/var/log/anaconda.log 在安装Linux时,所有安装信息都储存在这个文件中。
/var/log/secure 包含验证和授权方面信息。例如,sshd会将所有信息记录(其中包括失败登录)在这里。
/var/log/wtmp或/var/log/utmp 包含登录信息。使用wtmp可以找出谁正在登陆进入系统,w/who/users等命令显示这个文件或信息等。
/var/log/faillog 包含用户登录失败信息。此外,错误登录命令也会记录在本文件中。
每天写日志,当上述日志太大后,通过 /etc/logrotate.conf 配置文件 或者 单独对某个文件进行轮替规则/etc/logrotated 目录下所有日志轮替配置文件,使日志论题进行删除
配置参数 功能说明
compress #通过gzip,压缩转储以后的日志
nocompress #不需要压缩时,用这个参数
copytruncate #用于还在打开中的日志文件,把当前日志备份并截断
nocopytruncate #备份日志文件但是不截断
create mode owner group #转储文件,使用指定的文件模式创建新的日志文件
nocreate #不建立新的日志文件
delaycompress 和 compress #一起使用时,转储的日志文件到下一次转储时才压缩
nodelaycompress #覆盖delaycompress 选项,转储同时压缩。
errors address #专储时的错误信息发送到指定的Email 地址
ifempty #即使是空文件也转储,这个是 logrotate 的缺省选项。
notifempty #如果是空文件的话,不转储
mail address #把转储的日志文件发送到指定的E-mail 地址
nomail #转储时不发送日志文件
olddir directory #转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
noolddir #转储后的日志文件和当前日志文件放在同一个目录下
prerotate/endscript #在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
postrotate/endscript #在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行
daily #指定转储周期为每天
weekly #指定转储周期为每周
monthly #指定转储周期为每月
rotate count #指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
size(或minsize) #size当日志文件到达指定的大小时才转储,Size 可以指定 bytes (缺省)以及KB (sizek)或者MB (sizem)
案例
weekly #默认每周执行一次日志轮询
rotate 4 #默认保留4个日志文件
create #自动创建新的日志文件,新的文件和原来的文件具有相同的权限
dateext #日志切割后,文件以当前日志为结尾,例如:messages-20181125
include /etc/logrotate.d #将/etc/logrotate.d目录中的配置文件加载进来
/var/log/wtmp { #针对wtmp日志的配置参数
monthly #每月切割一次
create 0664 root utmp #新建日志的权限为0644,属主为root,属组为utmp
minsize 1M #文件大小超过1M后才会切割
rotate 1 #只保留1个日志文件
}
十、备份与恢复
yum -y install dump #安装后就包含 dump 和restore ,只能对ext2,ext3,ext4文件系统的备份,可将目录或整个文件系统备份至指定的设备,或备份成一个大文件
yum -y install xfsdump #安装后就包含 xfsdump 和xfsrestore ,只能对 xfs文件系统的备份,且只能备份dh -TH 展示的整个分区
十一、其它
1.可视化管理工具: webmin和bt宝塔
2.cat test.txt | cut -d '/' -f 3 | sort | uniq -c | sort -nr
3.netstat -an | grep -E 'LISTEN|ESTABLISHED' | grep -Ev 'LISTENING' | awk -F ' ' '{print $4}' | cut -d ':' -f 1 | grep -v '^$' | sort | uniq -c | head -2
r:读 + 目录可查看ls
w: 写 + 目录内可增删
x: 执行+ 目录可进入cd
iotop #需要安装,查看系统io情况
cat t2.txt | awk -F ' ' '{sum+=$2; print $2} END {print sum}'
grep -r "hadoop" /root/zookeeper-3.6.2/ #查看此目录下哪些文件中有hadoop内容
find /home/test -name '*.*' | wc -l #统计目录下文件的个数
find /home/test -name '*.*' | xargs wc -l #统计目录下每个文件的行数
ntp nptdate服务器时间同步规则,新使用chronyd来同步时间
chronyc sources #查看同步时间源
chronyc tracking #校准时间器情况
yum源的配置
vim /etc/yum.repos.d/local.repo #新建一个源
[RHEL6] //仓库名称,可随意
name=all rhel6 packages //名称,可随意
baseurl=file:///mnt/dvd //源路径,很重要,根据你的实际情况进行填写
gpgcheck=0 //不开启检查
enable=1 //启用本yum源
/etc/pam.d/login
session required /lib64/security/pam_limits.so #增加此语句是对 /etc/security/limits.conf 配置生效
/etc/security/limits.conf # 可以使用 ulimit -u 查看限制
#<domain> <type> <item> <value>
#* soft core 0
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
第一列表示用户和组(@开头)。第二列表示软限制还是硬限制,第三列表示限制的资源类型,第四列表示限制的最大值
hard和soft的区别: soft是一个警告值,而hard则是一个真正意义的阀值,超过就会报错。
core是内核文件,nofile是文件描述符(nofile数量不能设置大于/proc/sys/fs/nr_open的值,否则无法登录),noproc是进程(sysctl kernel.pid_max全局proc最大值),一般情况下只限制文件描述符数和进程数就够了
[root@master security]# cat /proc/sys/fs/file-nr
1088(已打开文件数) 0(已不再使用) 91643(最大可打开数)
/etc/sysctl.conf 内核参数优化 sysctl –p 使其生效,具体修改参数请百度。 网上有如何设置最优参数按理,依靠自己机器性能设置
linux 资源监控配置 内存,cpu,io,网络 nmon安装与使用
配置重要文件备份策略
完全备份
优点:备份的数据最全面、最完整。恢复快,当发生数据丢失的灾难时,只要用一盘磁带就可以恢复全部的数据。
缺点:数据量非常大,占用备份的磁带设备比较多,备份时间比较长。
增量备份
优点:备份速度快,没有重复的备份数据,节省磁带空间,又缩短了备份时间。
缺点:恢复时间长。如果系统在星期四的早晨发生故障,管理员需要找出从星期一到星期三的备份磁带进行系统恢复。各磁带间的关系就像链子一样,一环套一环,其中任何一盘磁带出了问题,都会导致整条链子脱节。
差分备份:合成完全备份从物理资源(磁带、磁带驱动器和带宽)和时间来看消耗很大,但是简化了恢复过程。
• /etc 包含所有核心配置文件。这其中包括网络配置、系统名称、防火墙规则、用户、组,以及其他全局系统项。
• /var 包含系统守护进程(服务)所使用的信息,包括 DNS 配置、DHCP 租期、邮件缓冲文件、HTTP 服务器文件、db2 实例配置,等等。
• /home 包含所有用户的默认用户主目录。这包括他们的个人设置、已下载的文件和用户不希望失去的其他信息。
• /root 是根(root)用户的主目录。
• /opt 是安装许多非系统文件的地方。IBM 软件就安装在这里。OpenOffice、JDK 和其他软件在默认情况下也安装在这里。
问题1
● kdump.service loaded failed failed Crash recovery kernel arming
vi /etc/default/grub 增加如下内容
GRUB_CMDLINE_LINUX_DEFAULT="crashkernel=64M"
生成新的grub.cfg
grub2-mkconfig -o /boot/grub2/grub.cfg
重启 reboot
此服务测试环境可以直接禁用
应用层:app应用http,ssh,sftp,dns等生态应用
传输层:建立端口到端口的通信。端口范围0-65535,0-1023为系统占用。tcp,udp等传输协议(三次握手连接:开辟资源 + 发送数据 + 四次分手:释放资源),其中有socket字节套(ip+端口)防止不同app服务之间传输不受干扰
网络层:由ip找路由,找目标机器。可区分不同广播域/子网 路由器、三层交换机
链路层:由mac找机器,对二进制数据进行分组,帧头head和数据data 网卡、以太网交换机
物理层:01010101开头 + 电压(ip+端口 + mac + 内容) + 0101010101 传输二进制数据。 双绞线、集线器、中继器
raid原理及配置
RAID级别 硬盘数量 磁盘利用率 是否有校验 保护能力 读写性能
RAID0 N 100% 无 无 单个硬盘的N倍(最好)
RAID1 N(偶数) 50% 无 允许一个设备故障 读和单个硬盘无分别,写则要写两边
RAID5 N>=3 (N-1)/N 有 允许一个设备故障 读和RAID0近似,写<单个硬盘
RAID6 N>=4 (N-2)/N 有 允许两个设备故障 读写都近似与RAID5,写入<RAID5
RAID10 N>=4(偶数)50% 无 允许两个基组中各坏一个 读=RAID0,写=RAID1
LVM是 Logical Volume Manager(逻辑卷管理)的简写, LVM是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理
PE(Physical Extend) 物理拓展
PV(Physical Volume) 物理卷
VG(Volume Group) 卷组
LV(Logical Volume) 逻辑卷
mysql集群模式安装 + mysql_router
oracle RAC安装 + oracle goldengate安装 + oracle 19c data guard尝试
docker