一Linux结构体系
Linux从结构体系上看,可以分为二大部分,用户态和内核态,用户态主要是用户上层的活动,内核态本质上是一段计算机硬件设备的程序,这个程序直接管理硬件,包括CPU,内存空间,硬盘接口,网络接口等,所有的计算机操作都要经过内核传递给硬件,用户态及上层应用,程序的活动空间,应用程序的执行,必须要依托内核提供的资源,包括CPU资源,存储资源,IO资源等,为了是上层应用可以访问到这些资源,内核必须为上层应用提供访问的接口,即系统调用,系统调用是一种不能在简化的操作,即原子操作。
![](https://img.haomeiwen.com/i14404345/d787b122b9abef5a.png)
二.Shell
shell是一个特殊的应用程序,实际上就是一个命令行,本质上是一个命令解释器,下通系统调用,上通各种应用,在没有图形化界面之前,shell充当了图形化界面的功能。当用户要运行某些命令的时候,要通过shell输入命令,来运行程序,同时shell是可以编程的。他可以执行符合shell语法的文本,这个文本称为shell脚本。
这个shell语句,通常都对系统调用做了一层封装,为了方便和系统和用户进行交互,一般一个shell对应一个终端,终端是一个硬件设备,呈现给用户的是我们可以看到的图形化的窗口,我们可以通过这个窗口输入或者输出文本,这个文本直接传递给shell,进行分析解释执行,
三.Linux常用命令
1.查找命令find
1.查询目录下的文件指令---ls
2.查看文件内容--- cat nohup.out
3.查看o2odb的SQL文件里面的内容--- less/more o2odb.sql
4.对文件进行增删改查---vi/vim employ.sql
5.查看本机使用的shell版本---echo $SHELL
6.查看本机支持的shell版本---cat /etc/shells
7.切换到指定的shell版本---chsh -s 版本
查看已开启端口对应的进程号
1、lsof -i:端口号
2、netstat -tunlp|grep 端口号
1.终止进程---kill -9
2.备份--- cp -rf seas seas2019
3.查看java进程的端口号---ps -ef |grep java
5.查看进程打开了哪些文件--- lsof -p PID
6.cpu使用率---top
7.实时查看正在更新的日志--- tail -f log
4.查看指定的端口被哪个进程所占用 lsof -i:端口号
![](https://img.haomeiwen.com/i14404345/679601549ed00f2b.png)
![](https://img.haomeiwen.com/i14404345/87fa73db3b1a2c51.png)
find -name “target.java”和 find ~ -name “target.java”都是在当前目录下查找target.java文件。
find / -name “target.java”表示在根目录下查找 target.java,在Linux当中,”/”表示根目录
grep -v “target”---过滤掉有target的字符串。
grep -o “正则”--- 获取到我们想要的字符串
2.检索指定字符串grep
grep 查找文件里符合条件的字符串,如果在某个类里面查找的话,会将整个类都查询出来。如果是文本的话,只会查询出带有关键字的哪一行.
grep “imooc” test*
---在以test开头的文件当中,查找出有imooc字段的行或者类。注意要查询的文件是不用双括号的。
如果我们不指定要查询的文本,即grep “imooc”,此时终端就会等待我们输入文本,只有当我们输入的文本当中包含“imooc”时,他才会给我们返回我们输入的,否则没有反应.
![](https://img.haomeiwen.com/i14404345/4dd1299213638b60.png)
3.管道操作符|
![](https://img.haomeiwen.com/i14404345/d8a42c712e15bd22.png)
将左边指令标准输出内容作为标准输入,传出到右边,使用管道操作符可以将shell指令组合起来。
4.对文件内容做统计awk
![](https://img.haomeiwen.com/i14404345/38c469eb0612488d.png)
![](https://img.haomeiwen.com/i14404345/a286e4b22a8a8cf1.png)
awk默认使用空格作为分隔符,可以使用 -F “?”来定义使用什么符号作为分隔符
![](https://img.haomeiwen.com/i14404345/78874ecfbc1afa37.png)
5.批量替换sed
![](https://img.haomeiwen.com/i14404345/4fd9529cf077d140.png)
![](https://img.haomeiwen.com/i14404345/634b9939e6aa46dd.png)
--将全文当中的Jack替换成me,若不加/g,只会替换每一行的第一个Jack
sed -i 's/Jack/me/g' replace.java
-- 将所有的Str替换成String
sed -i 's/^Str/String/' replace.java
-- 将“.”结尾的替换为“;”结尾的
sed -i 's/\.$/\;/' replace.java
网友评论