admin 管理员组文章数量: 1184232
第一节计算机基础知识
Linux用bc计算器:
obase =2 输出2进制,ibase=2,输入2进制
windows计算器
cmd下,输入calc,选择程序员模式,即可转换
常用的P-n
查看CPU的三级缓存
第二节 计算机知识和运维体系
计算机必须先把数据放到内存中,才能处理.
双通道,成对出现,所以channel1的先插满,再插channel2
第三节 操作系统基础
Linux查看文件格式
把Windows的执行执行程序,放在Linux无法执行,是因为ABI接口不同,ABI是操作系统提供给应用程序的二进制接口
操作系统在0层,应用程序在3层
第四节 Linux安装
windows各程序配置文件是在注册表,有问题不好修复,因为注册表是二进制文件,ubuntuxiazaiLTS版本是长期支持版
centos8下载路径
第五节 Linux基础
查看当前使用的终端
查询当前IP,可以用
who 可以查看当前那些用户正在登录
第六节 Linux基础入门
按下 ctrl+alt+F1-3 可以切换终端界面
显示图形界面是5
输入init 3 ,强制关闭,切换到命令行
关闭图形界面,节省内存
输入init 5 再次切换到图形界面
编辑/etc/motd 文件,是登录后提示文件
/etc/issue是登录前提示,惨痛教训,登录前文件不要写welcome,之前被黑客攻击.
查看当前使用的shell
查看系统支持的shell
whoami 显示当前登录用户
init 6 重启
hostname 修改主机名,在内存里,重启失效,下面命令是永久改
1代表高亮,41是颜色,33是字体颜色,
t 加上时间
第七节 执行命令过程详解
外部命令会显示出路径,在硬盘中,内部命令开机后,加载到内存中,显示builtin(内置),在/bin/bash内集成了很多内部命令,它相当于个工具箱
存放外部命令的路径以及搜索次序
既不是内部也不是外部提示
第一次,从硬盘路径里找,把路径记录到内存中过程叫hashed,第二次根据第一次记录的路径去硬盘中找
列出曾经执行过的命令记录路径hash,数字代表执行了几次,所以利用hash可以提高外部命令执行效率
列出所有内部命令:enable和help
file -a "命令" 查出该命令的内部和外部
whereis 显示该命令路径和帮助文档路径
还原文件夹
原始命令
读取命令优先级: 别名>内部>外部
别名修改后,退出就不生效了,要想永久生效,写入.bashrc文件.执行source和. 都是执行
,再执立即生效
不重启系统,扫描添加识别新扩容的磁盘.
第八节 命令格式详解
中括号表示可加可不加,参数一般就是操作的对象
ctrl+C 强行退出,ctrl+D正常退出
/proc/ 该文件夹里放置的是内存中的数据,不占磁盘空间
显示所有时区,该命令支持centos6以上版本
ubuntu是存到该文件内
第九节 常见命令和字符集
加时间参数,十分钟后关机
这个软件实现屏幕共享,可以远程操作
sleep命令休眠有些软件库里没有,需要用阿里云下载点安装,直接复制到命令行窗口执行
字符集决定了字符和二进制的对应关系,编码才决定了真正表现形式
字符数字等在磁盘上,存放的是二进制数,是通过编码,呈现给用户的是数字或字符
hexdump以十六进制查看文件,0a表示换行,汉字最少占用3字节
网页文字不让复制技巧
1.技巧
ctrl+P 打印 ,在该页面就可以复制
2.技巧2
浏览器-设置-搜索javascript(发布者一般通过javascript来禁用读者复制)-禁用该选项,
再刷新网页,就可以复制了
第十节 SHELL中特殊符号用法区别
$(命令)=`命令`
\ \转义字符,一个斜杠表示转义,第二个表示被转义的字符
单引号用于屏蔽引号里的各种特殊符号
反向单引号里,放的一定是命令` `,
范例比较:
所以反向单引号经常用来将一个命令的输出传给另一命令,让另外一个命令调用
这个命令显示今天年月日
创建带日期的文件,两种写法
$()支持嵌套,而``不支持,混着用可以
echo并没有生成文件
第十一节 命令历史和各种快捷使用技巧
先把历史文件删了,再清楚历史,不留痕迹
历史命令次数,记录在profile文件
假冒历史命令
写到文件后,需要执行才会生效
用空格隔开
第十二节 命令的帮助用法详解
中括号代表可选,...代表多个
前天是星期3
|竖线代表多选1
生成昨天日期的文件
把秒转换成时间
查询顺序
第十三节 各种帮助用法详解
运维工程师关注1/4/5/8 该文件内,有配置各种文件的用法和详解
2/9 用于开发工程师
这些数字标号,代表第几章
若不加编号,默认是章节1的文件,加上标号,指向具体功能详解
大写S,排序用
安装该包没有,用yum provides 包名,找出该包所在位置及包名
第二个网站是共享的PPT,或文档网站
第十四节 文件目录结构和文件操作基础
/bin/ 是/usr/bin/的快捷方式
先检查该服务是否启用
启用的话,进入misc目录,看不到文件,在进入cd,光驱的磁盘就会挂载上了
效果等同
sbin是系统管理员可运行的程序,bin是普通用户可运行的程序
单工:只能单向发送.BP机.
半双工:同一时刻,双方只能一方发送,发送完另一方才可发送.对讲机
全双工:通讯双方可同时发送和接受.手机
所有目录下,都有.和.. , .代表当前目录, ..代表上级目录
到家目录的几种写法
回到前一个文件夹
第十五节 文件管理基本命令
ld,看目录本身属性
文件有三个时间,mtime是指改了文件内容,ctime指改了文件属性,atime指文件是否被读了,读了的话文件时间就变了
ll查看文件,默认是mtime,想看具体时间ll --time=ctime
看文件的三个时间
windows文件和linux文件不同,
windows文件里换行,还有回车
linux文件里换行,只是换行,所以写同样的内容,win大一些.
可以利用工具把win文件转换成linux文件,也可以把linux文件转换成win文件
dos2unix unix2dos
第十六节 文件管理相关命令及创建新文件
OLDPWD查看前一个目录
只列文件夹,不列隐藏文件夹及文件
touch 不识别通配符
排序按照小写,大写顺序排,直到排到c就不在排,第一个例子
*号匹配不了隐藏文件,及点开头的文件
*无法删除隐藏文件
touch 创建文件,若文件已存在,则刷新文件时间,三个时间都刷新了.不清空和覆盖.若文件不存在,则创建.
第一次是新建该目录,第二次是在/etc/etcbakup下,在新建一个/etc/目录
拷贝链接文件时,拷贝的是文件本身,不是链接文件
注意:
1.cp -v 显示过程
2.root用户,覆盖同样的文件前会询问是否覆盖,因为管理员cp是别名,加上\cp 屏蔽别名,是cp本意
3.普通用户cp 覆盖同样的文件,不会询问,是cp本意
第十七节 文件管理基本命令
!* 执行上一个操作
rm -rf /* 删除的是硬盘中的文件,内存中缓存的还在,/boot/ 和/boot/是挂载点,删不掉,但数据已经没有了
注意:生产中建议使用mv 代替rm
改命令名字来取消
1.删除所有非隐藏文件,2.删除所有隐藏文件
第十八节 inode表结构和文件管理底层原理
以下命令可以查看节点编号,有系统自动分配
块是存放文件最小单位,一个块是4K,一个指针占用4字节,直接指针一共有12个,能存放12*4K=48K的数据,所以间接指针可以存放1024个指针,每个指针又能指向4K的数据块,可存放表达1024*4K=4M的数据,若超过48K,低于4M就用间接指针,低于48K,用直接指针.
双重间接指针可存放1024*1024*4K=4G的数据.
这些分区是虚拟分区,就是内存中运行的分区
每个分区最大的节点编号
实验,在boot下,新建65227个空文件,提示没有空间.就是节点编号用光了,
相关面试题:
该案例,虽然把日志文件删除了,但是日志文件还在用,导致磁盘空间没有彻底释放.关闭该日志文件后,即可释放.重启该服务,可释放.
生产中针对第二题的解决方法
1.新建大文件,并模拟程序正在占用
2.方法:针对生产中不能停服务的情况
1.把空文件写入该文件
2.在删除这个文件名
实验案例:
1.拿/boot分区做实验,实验前有空间
2.创建一个大文件到boot
空间太慢,导致应用程序无法往磁盘写数据,导致程序崩溃
3.删之前先打开这个大文件
4.删除该文件,空间未释放
正在使用的文件,删除是不释放的
5.判断
该命令可以看出那些文件被删除,没有完全清理掉,还在内存中
关闭vim后,空间释放
总结:
在windows里如果文件正在用,是无法删除的.原因是程序加了锁,文件就无法删除.关闭程序后,可以删除.
第十九节 硬链接和软连接
链接数代表文件有几个文件名,相当于一个人可以起多个名字
删了源文件,后创建的硬链接文件还在,没有关系.相当于删了名.
删除的原理:
删除的文件还在磁盘上,只不过会把这块空间表示为可用,将来新的文件如果使用空间,那就可能把这块空间占用了,覆盖了,文件和数据才真正没有了.
硬链接的本质含义是给一个文件起多个名字
不能跨分区创建硬链接,跨分区就不是同一个文件了
例1如:删除数据库文件
针对数据库服务器删除大文件时,会把文件的数据块标记为空闲,造成大量I/O,瞬间会带来大量的写操作.可能造成系统繁忙,崩溃.
技巧原理:
创建个硬链接,链接数2.然后在删除数据库表和文件.因为另一个链接正在使用,所以不会造成i/O,磁盘空间不会释放,待空闲时在删除磁盘数据.
软链接大小是路径文件的大小
错误的原因如上,原始文件一定要写的是相对于链接文件的相对路径
例2:生产中应用案例:
在生产中,应用程序访问一个固定文件目录,而软件版本升级,无需再更改程序访问路径.对程序来说,无感知.最近在python服务器中,因为python几个版本冲突导致无法用yum可能和这个有关.
1.应用程序放置目录
10版本创建个软连接,给应用程序用的路径是/usr/local/mysql
2.先删掉链接,在创建新版本链接
原理是:删除只是软连接本身,而不是数据
3.升级失败,回到老版本可以
重点:
删除软连接加/和不加/区别
不加/,只删除软连接,不删除源文件下内容
加/,删除软连接和源文件夹下内容
知识点:
每个文件夹链接数至少是2,因为还有个.
第二十节 标准I/O重定向和管道-1
同时标准输出和错误信息存放到文件中
合并输出
该文件相当于垃圾箱,绝对不能删除
重定向pts1
改变了输出位置
w 可以列出哪个终端执行哪些命令
文件清空2种操作
echo > 到文件,自带换行,占用1个字符,echo -n 取消换行也可以
echo -n ""也可以,echo 自带换行
-c参数是取反
之前创建字母换行
技巧1:把windows文件装换成Linux文件2中方式
方式1
方式2
程序运行时,系统给随机分配进程ID.
文件描述符就是:只要程序打开一个文件,系统会自动分配文件描述符,除了0,1,2固定分配,其余不固定,为什么都指向/dev/pts/0呢
因为由当前终端提供输入,输出.所以程序文件描述符最终指向了/dev/pts/0
案例1.生产中找具体程序的绝对路径方法
1.以tail程序运行为例
2.查找进程ID
程序没有退出,占用内存空间, 通过/proc目录,可以看到该程序对应的内存信息,可以看到该程序打开哪些文件,对应的文件描述符是什么.
这些数字就是程序运行时,分配的进程ID,即pid
执行ps aux pid是9742
3.进入pid文件
这里就是运行tail的详细信息,浅蓝色是软连接文件
用ll查看,程序的真正路径
查看当前打开的shell
查看当前shell的文件描述符,可以看到输入\输出\错误等
实验脚本
第二十一节 标准I/O重定向和管道-2
只有这个有问题: 逻辑是 先把标准错误输出重定到1里,而标准输出没有指向具体文件,所以在屏幕上显示,而后面得> 标准输出正确得内容
面试题:
小于< 可以实现功能拿文件里内容直接代替终端窗口手工输入,从而实现标准输入重定向
思想: 用程序生成数据,再用生成得数据交给程序自动执行
多行重定向
第二十二 I/O 重定向和管道实战案例 -3
rev 把文本到过来
练习:
<<EOF 多行重定向,多行重定向可以窃如命令,自动生成想要得内容
第二十三节 用户账户和组账户相关配置文件
windows中
列出用户
列出组名
添加用户,windows用户名和组名不可以同名
实验1:把普通用户UID改成0,把root UID改成2000.导致密码文件无法修改,因为无管理员用户了,通过下面命令可在无管理员权限下修改
改完后重启
getent passwd = cat /etc/passwd
只看某行的命令
!!表示账户被锁定,不能登录
生成随机密码
第二十四节 用户和组管理相关命令
创建用户加上 -r 既不会创建家目录,也不会创建对应的邮箱文件.
把用户添加到附加组,用 -G ,必须先创建附加组,否则会报错
/etc/passwd文件7个字段对应内容
用户名:密码X:用户UID:用户所属主组ID:描述:家目录:shell类型
实验1:把用户家目录删掉怎么恢复
1.先创建目录
2.把/etc/skel/目录内的隐藏文件拷贝过去
法2 用.表示当前目录所有文件
第二十五节 文件系统权限
等同于chown .或:(组名) 文件名
把马哥加到g3组里
普通用户可以改自己是所有者的文件权限,也可以把文件所属组改成自己所在的组
技巧1:
如果su - 切换,就切换到用户家目录了
用su 不完全切换,可在当前目录
技巧2:
把马哥加到g3组里
技巧3:
文件变绿,代表有执行权限
技巧4:
文件权限从左到右匹配,wang虽然在g3组内,但是先匹配所有者,无权限
易错点:切记不要进行如下操作 /data/ 后面的斜杠不要空开
一旦这么操作,无法恢复根下所有权限,只能重装,相当于一个国家所有财产重新分配了,必乱
查组里有哪些用户
尽管所有权限都无,但root还是可以操作改文件
目录如果有w权限,就可以删除目录的文件,而和该文件的权限无关
第二十六节 文件默认权限和特殊权限
尽管wang拥有删除dir2文件价的权限,但文件夹内有文件,也无法删除
用户对于目录有wx权限,没有r,无法看到目录内的文件,但可以删除目录内的文件,前提是知道文件名
如果用大写X,就会把目录内的目录和已经有x权限的文件赋予x执行权限
只要有奇数,一定有x权限,因为r和w都是偶数
面试题:
举例:wang无法查看修改/etc/passwd和/etc/shadow,却可以修改自己的密码,是因为执行passwd
而passwd 有特殊权限位s,意思就是普通用户执行时也可以拥有和root同样的权限
t权限就是只能删除自己的文件,不能删除别人的文件
sgid作用就是在该文件夹内创建的文件所属组都是目录的所属组
应用场合:suid作用在可执行文件上,sgid作用在文件上,sticy作用在文件夹上,sgid也作用在文件夹上
文件最高权限666,一般无x权限,文件夹最高777,有x去进入目录的权限
拿FAT32文件系统举例,文件和目录权限,属性等和文件系统有关和操作系统无关
用小括号括起来,只针对这一次修改,不对当前会话影响
第二十七节 文件特殊权限和FACL灵活实现
一般应用程序用系统账户来执行,所以创建不用登录的系统账户mysql,并把之前压缩包复制到/usr/local/bin 下,同时为了方便以后升级版本,做软链接
如果不加/,改的时myql的目录权限,加上/,就是目录内所有文件权限
等价于chmod -R
setfacl -x取消单独用户acl,-b,取消改文件所有acl
还原
思路: 如果chmod没有执行权限怎么恢复
第二十八节 文本编辑工具和正则表达式1
删除命令,准确的说是剪切
技巧1:想设置vim 编辑文本显示的内容
在家目录下创建这个文件
技巧2:备份或移动同样效果
同样效果
第二十九节 文本编辑工具和正则表达式2
第三十节 文本常见处理工具3
看出windows编辑文件的换行符
利用cat可以写入文件,第三个,先读取/etc/passwd内容,然后写入到f1.txt
用tr把空格转化成换行符
执行tac,输入内容,ctrl+D后,停止后一回车就会转换
显示前几个大文件,用大S,排序
和自己脚本对比:同样找出第二行的内容
B=`ifconfig -a|grep enp | awk '{print $1}' | head -2 | awk 'NR==2'`
tail -f 像日志类文件,可用这种追加方式查看
只查看最新日志,跟踪新日志
dmesg 显示最近硬件日志
tr 可以把多个空压缩成一个空
把第一行注释行过滤掉
找出分区利用率最大值
统计出访问次数最多的IP的数量 第一个sort是把重复的IP都排在一起,
技巧1:logger可以生成日志
技巧2:查找文件描述符
先执行ps aux ,找到进程ID
然后在内存中输入进程ID,就可以了
技巧3:把各版本网卡名统一改成一个名
修改如下文件:
前面的不动,就加后面红框内容
改完后,执行如下命令,然后重启机器
第三十一节 文本处理工具4三剑客之grep
ss 查看网络链接端口
面试题1:问连接数最多的前几个IP
面试题2:两个文件,取相同的行和不同的行
通配符是为了匹配文件名称里面特定符号的匹配,而文本内容用正则表达式
1.grep
并且关系
取出硬盘分区最大的数值
技巧1:echo $? 用法检测上一个命令执行是否成功的判断数字,非零表示失败
第三十二节 文本处理工具5正则表达式详解
排除#号开头的行
排除空行,'^行首,$行尾' 行首行尾都是空,就表示空行
统计该文件多少行
进一步过滤
^脱字符放到[]号外表示行首,放在里面表示排除
给UUID的行加#号
2.扩展正则表达式
第三十三节 shell脚本编程
编译型语言,开发效率低,执行效率高
解释型语言,开发效率高,执行效率低---适用于开发场景,程序执行放在内存中
最下面得方式是java,做了两次翻译,所以java开发慢,执行也慢,tomcat是运行java得容器
写程序无非就是1,顺序执行,2.条件判断,3.循环最简单三种方式,然后就是组合.
如果一个行为,出现3次以上行为,就可以考虑写成脚本
所谓shell编程,就是把命令写到一个文件里
#号在英文里sharp.!是bang,所以叫shebang
/bin/bash 不加/是文件,如果加了/表示目录。之前写入口脚本,报错就是这个问题导致。这个程序就是解释后续执行的这些命令。
编辑改文件,可设置脚本注释格式,改文件放在用户家目录
执行时,找不到命令,系统会去判断,1:是不是别名2.是不是内部命令3.是不是外部命令,是外部命令,则命令的路径是否正确,就是PATH路径是否对。而hello.sh不在那几个路径下,所以找不着。可以把脚本放在PATH变量下,这样在任何目录下就可以执行。
有两种方式:1.绝对路径写法:/root/hello.sh 2.相对路径写法:./hello.sh
写脚本符号必须是英文。想实现不用输路径就可以执行脚本。就是把当前路径加入环境变量。而刚才脚本实现是把脚本放在指定目录。
.: 表示在之前的PATH下追加新目录。王老师实验用的单引号,错误格式。导致整个命令PATH错误。要想继续执行修改回来,先用内部命令查看外部命令的绝对路径,然后输入命令的绝对路径来编辑文件,改回来。下文也有记录,见技巧2.
正确格式
也可以不给执行权限,用bash
字符界面浏览器:curl
远程执行脚本
技巧1:可以在本地直接执行远端服务器上的脚本
如果远端服务器上脚本有rm -rf 命令的话,就把本地服务器"/"删除了
wget也可以
启发:可以把系统更新得包放在服务器上,客户端只需要执行命令就可以实现安装.一键安装就是这么干得.
学习脚本:最少5000行代码起步
可以尝试一键安装脚本,直接下载安装
技巧1:新建脚本开头注释行设置
技巧2:在原来的path路径上,再增加命令的路径,有风险,建议别加了
会造成所有命令都必须输入绝对路径才能编辑,恢复的话参照如下方式
第三十四节 shell脚本编程基础
脚本常见错误:
1.语法错误
cat -n 加行号查看脚本
cat -A,查看脚本具体有没有错误
图下案例中EOF后多了个空格,导致语法错误
vim编辑器用set list查看符号
注意:语法出错将导致语法出错行的后续行不再执行
技巧1:检查语法错误:bash -n ,只是检查语法不执行
检查语法错误
2:逻辑错误,出现结果不是预期
bash -x 可以帮助逐行执行,没执行一行就会把这行的结果在屏幕上显示出来,期望是line2案例中
3.命令错误:
2.7变量
变量命名等号前后不要有空格,$符号用于申明后面根的字符串是变量名
变量赋值间接方法,单引号用于命令
把某些命令的执行结果赋给变量
可以存放文件名
逻辑关系如下:
第三十五节 shell脚本编程之变量用法详解
注意:加双引号才能把回车换行保留住,不加的话相当于空格隔开
set可以显示所有变量,unset后面加变量名,建议大家变量不用就删除了,可以释放当前会话的内存
跨脚本之间的变量是不生效的,系统的一些脚本里也有删除变量的操作,学习人家的规范
普通变量只在当前终端有效
sleep 表示休眠多长时间不退出
知识点: pstree -p 查看系统进程,左边是父进程,shell脚本是子进程,而进程是内存中给程序分配的单位,他会占用一定内存空间,并且使用CPU,一个程序要运行,最终表现为进程.通俗的说,进程就是执行中的程序.
显示当前进程 所在进程编号
执行方式的区别
子进程变量在父进程或其他终端看不到的.就相当于父亲不能继承儿子的财产.而儿子却可以继承父亲的财产,所以子进程在特殊情况下可以继承父进程的变量,默认情况下不可以.除非是环境变量.
实验1:父进程脚本里执行子进程脚本
父进程脚本内容:
子进程脚本内容:
结果:
结论:子进程不能使用父进程定义的变量
继续实验:虽然子进程不能调用父进程变量,但可以同名
打印进程自己PID,以及父进程PPID
实验2:父进程定义变量给子进程用
子进程脚本:
结果:
实验3:如果子进程自定义的变量和父进程变量冲突怎么办
结果:优先使用自己的
扩展1:那此时变量是子进程的变量值还是父进程的值
结果:
结论:父进程不能使用子进程定义的变量.
扩展2:孙子进程能否调用爷爷进程定义的变量
子进程去调用孙子进程
孙子进程内容:
结果:孙子进程继承子进程
一般Linux系统配置文件用环境变量,而脚本里很少用,自己写脚本不用
bash是后台执行命令
SHLVL是查看bash嵌套深度的变量
执行脚本结果
把\E[1;32m 用变量GREEN替代
第三十六节 shell编程变量详解
针对上节课优化脚本,把命令赋值给变量,实现动态命令结果
技巧1:把常用的目录做成一个别名
修改系统默认网卡名
然后关机重启
脚本后加参数,参数就分别传递给脚本里对应的变量
把$10当成整体,需要添加{}
只留脚本文件名
年月日加时分秒格式,下面脚本目的是每次删除一个文件都先把文件复制到一个目录下
删除脚本后所有文件
第三十七节 shell编程特殊变量
技巧1:脚本的状态值可以认为指定。以后可以不同的状态返回不同的值
命令优先级从上往下
set -e 用于再脚本中,命令错误就不再执行
内部命令
第三十八节 shell编程算术运算和逻辑运算
知识点:i++ 和++i区别
i++: 先把i赋值给j,然后再加1
++i:是i先加1,再赋值给j.
启发:可以生成随机颜色,颜色的范围是31-37,除以7取余是1-6. 单引号强引用,六亲不认,所有字母都是普通符号
expr可以做算数运算,不支持小数
古人算法
鸡兔同笼脚本
12^8=4,需要转换成二进制
第三十九节shell编程之测试语句test实现变量数字和字符串判断
1.面试题:
版权声明:本文标题:Linux入门到精通-王晓春课程-持续更新 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1767440319a3471366.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论