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脚本编程

编译型语言,开发效率低,执行效率高

解释型语言,开发效率高,执行效率低

执行时,找不到命令,系统会去判断,1:是不是别名2.是不是内部命令3.是不是外部命令,是外部命令,则命令的路径是否正确

字符界面浏览器

远程执行脚本

可以尝试一键安装脚本,直接下载安装

技巧1:新建脚本开头注释行设置

技巧2:在原来的path路径上,再增加命令的路径,有风险,建议别加了

会造成所有命令都必须输入绝对路径才能编辑,恢复的话参照如下方式

第三十四节 shell脚本编程基础

cat -A,查看脚本具体有没有错误

检查语法错误

bash -x 显示执行结果,每个命令的

语法错误:

2.7变量

本文标签: 入门 课程 Linux 王晓春