网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
- Shell 把我们输入的指令,传递给操作系统去执 行,所以 Shell 是一个命令行的用户界面。
- bash(Bourne Again Shell),它是用 Shell 组成的程序。这里的 Bourne 是一个人名,Steve Bourne 是 bash 的发明者。
Linux 对文件目录的抽象
Linux 对文件进行了一个树状的抽象。/代表根目录,每一节目录也用/分开,所以在上图所展示 的/usr/bin/rm中,第一级目录是/根目录,第二级目录是usr目录,第三级是bin目录。最后的rm 是一个文件。
路径
- 目标文件的绝对路径(Absolute path),也叫作完全路径(full path),是从/开始,接下来每一层 都是一级子目录,直到定位到目标文件为止。
- 相对路径(Relative path)是以工作目录为基点的路径
几种常见的文件类型
ls -F
查看当前目录下的文件和他的类型:1. * 结尾的是可执行文件; 2. = 结尾的是 Socket 文件; 3. @ 结尾的是软链接; 4. | 结尾的管道文件; 5. 没有符号结尾的是普通文件; 6. / 结尾的是目录。pwd
指令查看工作目录。cd
指令切换工作目录。which
指令查找一个执行文件所在的路径。 例如which rmls
显示文件信息。(list)rm
删除文件。(remove)rm hello
删除目录hellotouch
修改一个文件的时间戳,如果文件不存在会触发创建文件。vi
和nano
可以用来编辑文件。cat
查看完成的文件的内容适合小型文件。 大文件可以搭配 | moremore | less
查看一个文件但是只读取用户看到的内容到内存,因此消耗资源较少,适合在服务器上看日志。head
|tail
可以用来看文件的头和尾。grep
指令搜索文件内容。g 就是 global,全局;re 就是- ,正则表达式; p 就是 pattern,模式。
find
指令全局查找文件。find / -iname "*.txt"
查找所有的txt文件,-iname这个参数是用来匹配查找的,i 字母代表忽略大小写,这里也可以 用-name替代。
进程
ps
查看当前进程 p :processes 进程 s :snapshotps -ef
查看所有进程-f
可以带上更多的描述字段.
UID 指进程的所有者;
PID 是进程的唯一标识;
PPID 是进程的父进程 ID;
C 是 CPU 的利用率(就是 CPU 占用);
STIME 是开始时间;
TTY 是进程所在的 TTY,如果没有 TTY 就是 ?号;
TIME;执行的时间
CMD 是进程启动时的命令,如果不是一个 Shell 命令,而是用方括号括起来,那就是系统进程或者 内核过程。
-
TTY是指终端设备,是计算机系统中用于输入和输出数据的设备,如终端、控制台、串口等。在进程中,TTY指的是与该进程相关联的终端设备。当进程需要输入或输出数据时,它会通过TTY与终端设备进行交互。TTY也可以被用于控制进程的行为,如在TTY上发送信号或者中断进程。
-
输入输出流:
- 标准输入流(用 0 表示)可以作为进程执行的上下文(进程执行可以从输入流中获取数据)。
- 标准输出流(用 1 表示)中写入的结果会被打印到屏幕上。
- 进程在执行过程中发生异常,那么异常信息会被记录到标准错误流(用 2 表示)中。
-
>
符号叫作覆盖重定向;>>
叫作追加重定向。>每次 eg.ls -l > out- 假如
ls1
是错误指令,输出错误流, 单纯使用 > 无法 写到文件out 需要ls1 &> out
- 假如
-
管道的作用和分类 : 管道和重定向很像,但是管道是一个连接一个进行计算,重定向是将一个文件的内容定向到另一个文 件,这二者经常会结合使用。
-
TIME;执行的时间
CMD 是进程启动时的命令,如果不是一个 Shell 命令,而是用方括号括起来,那就是系统进程或者 内核过程。 -
管道: 的作用是在命令和命令 之间,传递数据。
-
Linux 中的管道也是文件,有两种类型的管道:1.
匿名管道(Unnamed Pipeline)| ,在文件系统中,只是一个存储节点,不属于任何一个目录,没有路径。
- 命名管道(Named Pipeline),这种管道就是一个文件,有自己的路径。
- 管道具有 FIFO(First In First Out),FIFO 和排队场景一样,先排到的先获得。所以先流入管道文件的数据,也会先流出去传递给管道下游的进程。 从左向右执行
- 排序 sort -r倒序
- 去重 需要先sort 在 uniq eg.
sort a.txt| uniq
- wc -l
cat xx.cpp
orls
统计行数 xargs
从标准数据流中构造并执行一行行的指令。
- 命名管道文件:
mkfifo pipe1
- 先
cat pipe1 & 然后 echo "xx" > pipe1
&符号代表指令在后台 执行,不会阻塞用户继续输入。
权限
- group 组 里面的每个用户拥有一样的权限 。
- root 超级管理员
- 1.读权限(r):控制读取文件。 2. 写权限(w):控制写入文件。 3. 执行权限(x):控制将文件执行,比如脚本、应用程序等。
- 问题一:初始权限问题。
文件被创建后的权限通常是: rw-rw-r-也就是用户、组维度不可以执行,所有用户可读
- 问题二:公共执行文件的权限
ls -l /usr/bin/ls
组维度不可读写 所有用户可读写
- 问题三:执行文件
可以通过输入路径的方式执行文件 但是必须要在系统配置的路径下执行
echo $PATH
查看系统配置路径
- 问题四:可不可以都 root
不行,看内核态的总结
权限架构思想
- 优秀的权限架构主要目标是让系统安全、稳定且用户、程序之间相互制约、相互隔离。这要求权限系统 中的权限划分足够清晰,分配权限的成本足够低。
- 优秀的架构,应该遵循最小权限原则(Least Privilege)。权限设计需要保证系统的安全和稳 定。 如果执行最小权限原则,那么黑客即便攻破我们的 MySQL 服务,他 也只能获得最小的权限。
- 如果使用root用户执行程序的时候,被黑客攻破, 那么后果是很严重的。
分级保护
Linux 提供了权限包围的能力。比如一个应用,临时需要高级权限,可以利用交互界面(比如让用户输 入 root 账户密码)验证身份,然后执行需要高级权限的操作,然后马上恢复到普通权限工作。这样做可 以减少应用在高级权限的时间,并做到专权专用,防止被恶意程序利用。
- 因为内核可以直接操作内存和 CPU,因此非常危险。
- 用户权限管理指令文章
网络 (待补)
- 远程登录的 ssh 指令;
- 远程拷贝文件的 scp 指令;
- 查看网络接口的 ifconfig 指令;
- 查看网络状态的 netstat 指令;
- 测试网络延迟的 ping 指令;
- 可以交互式调试和服务端的 telnet 指令;
- 两个 DNS 查询指令 host 和 dig;
- 可以发送各种请求包括 HTTPS 的 curl 指令。
软件的安装 (安装Nginx 待补充)
分析web 日志 (看pdf)
查看用 less 因为太多了 比如nginx的access_lo日志
左到右依次是: IP 地址;时间;HTTP 请求的方法、路径和协议版本、返回的状态码;User Agent
根据今天的 access_log 分析出有哪些终端访问了这个网站,并给出分组统计结果。
根据今天的 access_log 分析出访问量 Top 前三的网页
问题
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!