一、学习环境
安装linux模拟器:git-bash
二、基础命令
## 增
新建文件:touch a.log
新建文件夹:mkdir dir1
## 删
删除文件:rm -rf a.log(文件可不加-rf)
删除文件夹:rm -rf dir1(-r递归,-f强删不需要确认)
## 改
复制文件:cp a.log a.log.bak
复制文件夹:cp -r dir1 dir2
移动文件:mv a.log dir2
重命名文件:mv a.log.bak a.log(同一个文件夹下面就是重命名)
## 查
查询文件夹:ls -al dir1/ (-a所有文件,包括隐藏文件;-l列表方式显示;dir1/文件夹路径)
当前所在路径:pwd
三、文件信息
## 详情
drwxr-xr-x 1 Administrator 197121 0 十一 24 15:42 BaiduNetdisk/
-rw-r--r-- 1 Administrator 197121 415 十一 9 21:06 Hello.class
## 类型
1. d开头,是文件夹
2. -开头,是文件
## 权限
1. r:read读
2. w:write写
3. x:execute执行
## 角色
1. g:group组(每个用户都必须有一个归属群组)
2. u:user用户
3. o:其它用户
### 权限-角色
1. r-x是u用户的权限:读和执行权限
2. rwx是g群组的权限:读写执行权限,没有写的权限(-标识没有)
3. r-x是o其它用户的权限:读和执行的权限,没有写的权限(-标识没有)
## 管理权限
1. 组合因子:
chmod:命令
ugoa:3种角色(a代表所有角色)
+-=:3种运算符
rwx:3种权限
2. 使用规则
语法:chmod 角色 运算符 权限 文件名
chmod u+x test.sh
3. 使用场景
一般拷贝一个脚本到服务器,默认没有执行权限,要先赋权
四、编辑文件
vi b.log
1. 3种模式
- 命令模式(按esc切换到命令模式):常用命令i、a、o、x、hjkl,数字+命令
- 编辑模式(最下方有“insert”或者“插入”提示)
- 末行模式(先esc进入命令模式,再输入冒号)
练习1:三种模式切换
- vi b.log新建文件并编辑
- 按“i”命令,进入编辑模式(下方出现insert或者插入)
- 输入“hello world”
- 按esc进入命令模式(下方insert或者插入提示没了)
- 按esc确保进入命令模式,按“o”命令,进入编辑模式,新插入1行
- 输入“你好,师姐!”
- 按esc进入命令模式
- 按“:”冒号,进入末行模式
- 输入“wq”命令,保存并退出
- cat命令,查看文件的全部内容:cat b.log
练习2:快速定位
- vi c.log
- 输入“i”命令,进入编辑模式
- 输入“Hello everyone ,my name is guoyasoft !”
- esc进入命令模式
- 输入“^”命令,移动光标到行首(也就是正则表达式的行首符号)
- 输入“$”命令,移动光标到行尾(同正则表达式)
- 输入“^”命令,回到行首,按“w”命令,一个单词一个单词的移动光标
- 输入“^”命令,回到行首,按“5”,再按“w”,一下移动5个单词
- 查询:esc进入命令模式,按“/”命令,输入要查询的字符串,回车确认,按n定位下一个
练习3:修改
- 手工替换:vi进入,i进入编辑模式
- 删字符:x(删1个字符),数字+x(删多个字符)
- 删行:dd(删1行),数字+x(删多行)
- 替换单个字符:esc命令模式,输入“r”命令,输入要替换成的字符
- 批量替换:输入“:”进入末行模式,输入“%s/要替换的字符/要替换成的字符/g”
将全部guoyasoft替换成GuoyaSoft
:%s/guoyasoft/GuoyaSoft/g
其中s是替换命令,/g是全局替换
(不加,每一行只会替换第一个匹配的,加了,会把一行中所有匹配的都替换)
(不管是否加/g,如果有多行,每一行都会替换第1个)
练习:撤销和反撤销
- 撤销:esc进入命令模式,按“u”命令,回退之前的操作
- 反撤销:esc进入命令模式,按“ctrl+r”,撤销刚刚的回退
练习4:保存和放弃保存
- 保存并退出:按“:”进入末行模式,输入“wq”
- 不保存并退出:按“:”进入末行模式,输入“q!”
练习5:设置
- 显示行号,按esc,再按“:”,输入“set nu”。
统计文件内容
## 命令
wc catalina.2017-11-05.log
## 结果
1349 8095 108970 catalina.2017-11-05.log
## 解析
1349行
8095个单词
108970个字节
1. 定位文件
find 文件夹路径 -name '匹配的字符串'
find ./ -name 'cata*.out'
从当前目录下开始查找,含有cata开头,.out结尾的所有文件
到tomcat/logs下面找一个最大的日志文件,手工复制到test文件夹下面
- 查找c盘下,所有以“catalina”开头,“.log”结尾的文件,
find /c -name 'catalina*.log'
/c/software/apache-tomcat-7.0.79/logs/catalina.2017-11-05.log
/c/software/apache-tomcat-7.0.79/logs/catalina.2017-11-27.log
/c/software/apache-tomcat-7.0.79/logs/catalina.2017-12-11.log
- 查找e盘下,以“catalina”开头,“.log”结尾的文件,find e -name 'catalina*.log'
- 统计catalina.2017-11-05.log该文件的字节大小、单词个数、行数
2. 定位要查询的字符串所在文件位置
## 命令
grep -rn --text '18616765946' ./
## 解释
grep:全局查询打印命令
-r:递归查询,也就是遇到子文件夹,会查询子文件夹
-n:打印行号
--text:以文本的形式查询
‘18616765946’:要查询的字符串,可以写正则表达式
./:“.”当前目录,也可以指定其他目录,即:要查找的文件夹
## 结果
./test/new_aj:54:ʮһ▒▒ 1861676594605, 2017 4:56:36 ▒▒▒▒ org.apache.catalina.core.AprLifecycleListener initializeSSL
3. 进入文件,查看上下文详情
more从前往后,一页一页的往后翻
## 命令1:
more new_aj
## 最下方会显示已看百分比:
--More--(0%)
## 命令2:“/”查询,类似vi,也类似windows的ctrl f
/18616765946
4. 下载日志(太大需要拆分)
4. 将catalina.2017-11-05.log拆分成10个小文件
## 命令
split -l 100 catalina.2017-11-05.log new_
## 结果
a.log c.log new_aa new_ac new_ae new_ag new_ai new_ak new_am
b.log catalina.2017-11-05.log new_ab new_ad new_af new_ah new_aj new_al new_an
备注:要重新合并
cat new_*> new_catalina.out
第二中下载日志:
grep '18616765946' logs/* > log.bak
5. 重现日志,或者验证修复效果,看实时动态日志
## 进入c盘
cd /c
## 查找tomcat启动脚本
find ./ -name startup.sh
结果:
./software/apache-tomcat-7.0.79/bin/startup.sh
## 执行启动脚本
./software/apache-tomcat-7.0.79/bin/startup.sh
## 查找tomcat日志文件
find ./ -name cata*.out
结果:
./software/apache-tomcat-7.0.79/logs/catalina.out
## 查看日志文件最新日志
tail -200f ./software/apache-tomcat-7.0.79/logs/catalina.out
按回车加空行,便于查看
打包和压缩
常见压缩包 | 打包/压缩命令 | 解压/包命令 | 注释 |
---|---|---|---|
.tar | tar cvf FileName.tar DirName | tar xvf FileName.tar | |
.gz | gzip FileName | gunzip FileName.gz | 不用 |
.tar.gz 和 .tgz | tar zcvf FileName.tar.gz DirName | tar zxvf FileName.tar.gz | 推荐,必须掌握 |
.zip | zip FileName.zip DirName | unzip FileName.zip | 一般只用unzip解压,本地上传时打成zip包,掌握 |
.rar | 一般不用 |
tomcat:
maven:
练习
- 将new_开头的文件夹全部打包成一个文件
tar cvf catalina.2017-11-05.log.tar new_*
删除所有的new_开头的文件夹
rm -rf new_*将tar包解压
tar xvf catalina.2017-11-05.log.tar将所有new_开头的文件夹,打包压缩成.tar.gz
tar zcvf catalina.2017-11-05.log.tar.gz new_*删除new_开头的文件夹,并将.tar.gz包解压
rm -rf new_*
tar zxvf catalina.2017-11-05.log.tar.gz在windos中,将new_开头的文件压缩成.zip,再用linux命令解压
unzip catalina.2017-11-05.log.zip
查看进程
进程的含义
操作系统,将内存、cpu等资源,打包给应用使用,是分配资源的基本单元
应用启动后,通过ps命令,查看进程的状态
ps -ef查看进程信息,类似windows的进程管理器
管道符
|
使用管道符对进程信息筛选
查询进程,筛选shccs01用户下的进程,再筛选含tomcat的进程,再筛选含ux的进程
ps -ef | grep shccs01 | grep tomcat | grep ux
重定向
作用:将获取的信息存到文件
练习:
- 将test目录含g的文件找到
## 命令
ls | grep g
## 结果
a.log
b.log
c.log
catalina.2017-11-05.log
catalina.2017-11-05.log.tar
catalina.2017-11-05.log.tar.gz
- 将找到的结果保存到d.log
## 普通做法:拷贝,再建空白文件,打开文件,粘贴保存退出
## 重定向的做法:
## 命令1
ls | grep g > d.log
## 命令2
cat d.log
## 结果:
a.log
b.log
c.log
catalina.2017-11-05.log
catalina.2017-11-05.log.tar
catalina.2017-11-05.log.tar.gz
new_ag
- 查出含“cata”的文件,并重定向到d.log
## 命令
ls | grep 'cata' > d.log
cat d.log
## 结果
catalina.2017-11-05.log
catalina.2017-11-05.log.tar
catalina.2017-11-05.log.tar.gz
原先的内容没了,一个>是覆盖的方式写入
- 追加的方式重定向>>
## 命令
ls | grep g >> d.log
cat d.log
## 结果
catalina.2017-11-05.log
catalina.2017-11-05.log.tar
catalina.2017-11-05.log.tar.gz
a.log
b.log
c.log
catalina.2017-11-05.log
catalina.2017-11-05.log.tar
catalina.2017-11-05.log.tar.gz
d.log
new_ag
杀进程
kill -9 进程号
[shccs01 ~]$ps -ef | grep shccs01 | grep tomcat | grep ux
shccs01 18839
1 0 Dec11 ? 00:02:09 /usr/lib/jvm/jdk1.8.0_11/bin/java -Djava.util.logging.config.file=/unibss/users/shccs01/server/tomcat/ux/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m -classpath /unibss/users/shccs01/server/tomcat/ux/bin/bootstrap.jar:/unibss/users/shccs01/server/tomcat/ux/bin/tomcat-juli.jar -Dcatalina.base=/unibss/users/shccs01/server/tomcat/ux -Dcatalina.home=/unibss/users/shccs01/server/tomcat/ux -Djava.io.tmpdir=/unibss/users/shccs01/server/tomcat/ux/temp org.apache.catalina.startup.Bootstrap start
[shccs01 ~]$kill -9 18839
查看端口
查询8080端口对应的进程号
## 命令
netstat -ano | findstr "8080"
## 结果:进程号2656
TCP 0.0.0.0:8081 0.0.0.0:0 LISTENING ` 2656`
查看2656进程对应的应用程序
## 命令
tasklist | findstr “2656”
## 结果
java.exe 2656 Console 1 148,248 K
## 确定是一个java虚拟机,tomcat是java程序
## 按照进程号杀掉进程
taskkill /pid 4364
对比linux和cmd
对比项 | linux | cmd |
---|---|---|
查端口 | netstat | netstat |
查进程 | ps -ef | tasklist |
管道符 | 竖线 | 竖线 |
查询包含指定串的行 | grep '查询串' | findstr '查询串' |
杀进程 | kill -9 进程号 | taskkill /f /pid 进程号 |
网络
- ping ip:查看网络是否通
- traceroute ip:查看通不通,并显示网络节点,能定位到哪个节点不通