cmd&linux:linux实践操作

一、学习环境

安装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种模式

  1. 命令模式(按esc切换到命令模式):常用命令i、a、o、x、hjkl,数字+命令
  2. 编辑模式(最下方有“insert”或者“插入”提示)
  3. 末行模式(先esc进入命令模式,再输入冒号)

练习1:三种模式切换

  1. vi b.log新建文件并编辑
  2. 按“i”命令,进入编辑模式(下方出现insert或者插入)
  3. 输入“hello world”
  4. 按esc进入命令模式(下方insert或者插入提示没了)
  5. 按esc确保进入命令模式,按“o”命令,进入编辑模式,新插入1行
  6. 输入“你好,师姐!”
  7. 按esc进入命令模式
  8. 按“:”冒号,进入末行模式
  9. 输入“wq”命令,保存并退出
  10. cat命令,查看文件的全部内容:cat b.log

练习2:快速定位

  1. vi c.log
  2. 输入“i”命令,进入编辑模式
  3. 输入“Hello everyone ,my name is guoyasoft !”
  4. esc进入命令模式
  5. 输入“^”命令,移动光标到行首(也就是正则表达式的行首符号)
  6. 输入“$”命令,移动光标到行尾(同正则表达式)
  7. 输入“^”命令,回到行首,按“w”命令,一个单词一个单词的移动光标
  8. 输入“^”命令,回到行首,按“5”,再按“w”,一下移动5个单词
  9. 查询:esc进入命令模式,按“/”命令,输入要查询的字符串,回车确认,按n定位下一个

练习3:修改

  1. 手工替换:vi进入,i进入编辑模式
  2. 删字符:x(删1个字符),数字+x(删多个字符)
  3. 删行:dd(删1行),数字+x(删多行)
  4. 替换单个字符:esc命令模式,输入“r”命令,输入要替换成的字符
  5. 批量替换:输入“:”进入末行模式,输入“%s/要替换的字符/要替换成的字符/g”
将全部guoyasoft替换成GuoyaSoft
:%s/guoyasoft/GuoyaSoft/g
其中s是替换命令,/g是全局替换
(不加,每一行只会替换第一个匹配的,加了,会把一行中所有匹配的都替换)
(不管是否加/g,如果有多行,每一行都会替换第1个)

练习:撤销和反撤销

  1. 撤销:esc进入命令模式,按“u”命令,回退之前的操作
  2. 反撤销:esc进入命令模式,按“ctrl+r”,撤销刚刚的回退

练习4:保存和放弃保存

  1. 保存并退出:按“:”进入末行模式,输入“wq”
  2. 不保存并退出:按“:”进入末行模式,输入“q!”

练习5:设置

  1. 显示行号,按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文件夹下面

  1. 查找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
  1. 查找e盘下,以“catalina”开头,“.log”结尾的文件,find e -name 'catalina*.log'
  2. 统计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:


image.png

maven:


cmd&linux:linux实践操作_第1张图片
image.png

练习

  1. 将new_开头的文件夹全部打包成一个文件
tar cvf catalina.2017-11-05.log.tar new_*
  1. 删除所有的new_开头的文件夹
    rm -rf new_*

  2. 将tar包解压
    tar xvf catalina.2017-11-05.log.tar

  3. 将所有new_开头的文件夹,打包压缩成.tar.gz
    tar zcvf catalina.2017-11-05.log.tar.gz new_*

  4. 删除new_开头的文件夹,并将.tar.gz包解压
    rm -rf new_*
    tar zxvf catalina.2017-11-05.log.tar.gz

  5. 在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

重定向

作用:将获取的信息存到文件
练习:

  1. 将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

  1. 将找到的结果保存到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

  1. 查出含“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
原先的内容没了,一个>是覆盖的方式写入
  1. 追加的方式重定向>>
## 命令
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 进程号

网络

  1. ping ip:查看网络是否通
  2. traceroute ip:查看通不通,并显示网络节点,能定位到哪个节点不通

你可能感兴趣的:(cmd&linux:linux实践操作)