Linux操作命令-服务端测试

服务端测试,经常要用到linux命令查看日志,查看文件,故写此博客记录一下。linux还是应该多练习,在牛客网上有SHELL编程题,可以去练一练。

牛客网在线编程_SHELL篇_SHELL篇牛客网在线编程SHELL篇-SHELL篇提供超多数据结构,系统设计,编程学习,练习题等,为技术求职者提供能力提升解决方案,同时为企业级用户提供更高效的招聘解决方案,帮助求职者与企业搭建人才招募和人才培养渠道https://www.nowcoder.com/exam/oj?page=1&pageSize=50&search=&tab=SHELL%E7%AF%87&topicId=195

目录

一、三剑客

1、grep

2、awk

3、sed

二、操作文件命令

1、目录操作命令

1.1cd命令

1.2ls命令

2、创建、移动文件命令

3、查看创建文件命令

3.1、cat命令

3.2、head命令

3.3、tail命令

3.4、more命令\less命令

3.5、sed命令

3.6、vim/vi命令

3.7、sort命令

3.8、uniq命令

三、变量表达式和函数

1、变量

2、表达式函数

四、其他常用命令

1、top命令

2、系统硬件配置查询命令

3、网络相关命令

4、查看端口号占用 杀死进程释放端口


一、三剑客

1、grep

grep "str" file

两个参数:-i和-o的用法

-i (不区分大小写)

grep -i "str" file

搜索出file这个文件里包含“str”的数据,不区分大小写

例:file文件里数据为:

hello world1

Hello shell

Or yes

搜索条件:grep -i "or" file

搜索结果为:(“or”不区分大小写,都标记红色)

hello world1

Or yes

-o (只展示搜索条件的字符)

grep -o "str" file

只能搜索出file这个文件里包含的“str“

例:file文件里数据为:

hello world1

Hello shell

Or yes

搜索条件:grep -o "Or" file

搜索结果为:(结果都标记红色)

Or

也可以先用cat命令获取文件全部内容,再用竖线+grep+条件(需要查询的字符)

cat file | grep "str"

应用正则进行匹配

cat file | grep -i "s.*"

表示将带有“s”或“S”以及后面的字符都查询出来

具体正则语法请移步:

例:file文件里数据为:

hello world1

Hello shell

Or yes

查询条件为:cat file | grep -i "o.*"

查询结果为:

hello world1(第一个o后面的字符都标记红色)

Hello shell(o后面的都标记红色)

Or yes (o后面的都标记红色)

如果要同时查询多个字符,用到参数-E,每个字符用|隔开

grep -E "a|b|c|d|e"

在多个文件中查找

grep "math_pattern" file1 file2 file3……

输出包含匹配字符串的行数:

grep -n 

统计文件中包含匹配字符串的行数:

grep -c

文件打包命令:

tar -cvf 打包文件名.tar 被打包的文件/路径

c 创建新的归档

v 详细列出处理的文件

f 使用归档文件

文件解包命令:

tar -xvf 打过包的文件.tar

压缩解压命令

压缩:tar -zcvf py.tar.gz a.txt b.txt c.txt

解压:tar -zxvf py.tar.gz -C 解压到目标路径(必须已经存在)

还可以用bzip2

tar -jcvf py.tar.bz2 a.txt b.txt c.txt

2、awk

awk命令

echo "123 456 789" | awk '{print $1,$2,$3}'

默认以空格作为切分

结果为:

123 456 789

如果打印全部,则$1,$2,$3改成$0

如果以其他字符作为切分,则用-F命令

echo "123|456|789"|awk -F '|' '{print $1}'

结果为:

123

改成以"|"作为切割符

如果需要在分开的部分添加其他字符,则写成$1"str"$2

注意,这里字符串里要用双引号,不能用单引号,避免与外面的单引号混淆

举例 echo "123|345|789"|awk -F '|' '{print $1":"$2":"$3}'

结果为:

123:456:789

限定输出条件,在print后加(),里面添加条件

例如:echo "2 345 789"|awk '{print ($1>1)$1":"$2":"$3}'

限定打印结果第一列必须大于1

每一列的数相加

awk '{A = A+$1;B=B+$2}'

表示第一列的值相加,第2列的值相加

注意这里是用分号隔开的,不是逗号

加完得到的值,可以利用占位符操作进行传递

牛客SHELL30 的题解

awk '{W=W+$5;Q=Q+$6}END{printf ("MEM TOTAL\nVSZ_SUM:%sM,RSS_SUM:%sM",W/1024,Q/1024)}'

扩展:每一行的数值相加awk命令:将某一列、行的数值相加。去除列中重复值,重复行_awk 加法_小朩的博客-CSDN博客利用awk命令awk '{print $n}' | awk '{sum+=$1}END{print sum}'例:_awk 加法https://blog.csdn.net/qq_55723966/article/details/119609980

3、sed

修改文件内容

sed -i '/s/str1/str2/g' file

将file文件中str1改成str2

sed -i -e 's/str1/str2/g' file -e 's/str3/str4/g'

同时修改file文件中的str1和str3

二、操作文件命令

1、目录操作命令

1.1cd命令

cd ..返回上一层目录

cd - 返回上一次所在的目录,可用于目录的切换

cd / 返回根目录

cd ~ 回到家目录

如果是root用户登录

cd home ---回到/root

如果是普通用户登录 

cd home ---回到/home/用户名

root用户和普通用户登录切换

普通用户切换到root用户:sudo su

root用户切换回普通用户:exit

多个普通用户切换: su 用户名

此外,pwd 显示当前所处的目录

1.2ls命令

ls 查看文件和目录

ls -a 查看当前目录下的所有文件(包含隐藏文件--文件名前含.)

ls -l 当前目录下文件的详细信息(包括文件读写权限、最后修改时间)

ls -t 按文件修改时间排序

ls -lt 当前目录下文件的详细信息+按最后修改时间拍序

ls -R 当前目录下所有子目录的内容,包括文件和文件夹

ll 查看当前目录下所有文件的详细信息

2、创建、移动文件命令

创建文件夹 mkdir

mkdir dir1 dir2

以空格隔开,创建多个文件夹

创建文件 touch

touch file1

文件的重定向

echo "hello shell" >file

将hello shell输入到文件file中

文件的追加写入

echo "hello wy" >>file

在hello shell的基础上,继续追加写入"hello wy"

按行作为分隔符查看文件(查看文件for 和 while的区别)

while read x;do echo $x;done<file

while循环:会将每行的内容读入到x变量,当while出现空行,用if判断字符=0, contiune

for line in $(cat file);do echo $line;done (这种方式查看文件,每次读取由空格分开的一部分)

for循环: 将读入的内容以IFS(shell中的环境变量,Internal Field Seperator,字段分隔符)为界分隔, 然后将各个分隔开的内容,逐一读入变量line。本质上说,for循环读取的是字段,只不过可以设置IFS为\n这样能够逐行读取。

例如:文件里:hello world

用while语句查看的结果为:hello world

用for语句查看的结果为:

hello

world

移动\更名文件命令 mv

mv dir1 dir2

将dir1文件 移动到dir2中

如果dir2不存在,则dir1改名为dir2

复制文件命令 cp

cp 源文件 目标文件

注意两个参数

cp -r 若源文件是一个目录,则将这个目录下的所有文件拷贝到目标文件中

cp -f 强制覆盖 重名时不会提示用户,直接copy

3、查看创建文件命令

3.1、cat命令

cat file

file具体文件的路径,不能是文件夹和目录

3.2、head命令

head -n -5 file

查看file这个文件前五行的内容,其中-n可写可不写

3.3、tail命令

tail -n -10 file

查看file这个文件后10行的内容,其中-n可写可不写

head和tail一起使用查询中间行的命令

文档共有100行,需要查询出第30-40行的数据

head -40 file | tail -11

先查询出前40行的数据,再从查处的数据中查处最后11行的数据,就是30-40行的数据

3.4、more命令\less命令

more file

只能用回车,一直往下翻,不能用上下键进行翻页,按q退出

less file

能用上下键进行翻页,按q退出

3.5、sed命令

查询某一行的命令

sed -n '5p' file

注意 -n不能省略

查询第5行的数据

与sed很像的seq命令:

sequence是序列的意思,取前面的seq,与sed命令区分开

seq 1 100

输出1-100的正整数

seq 0 7 100

输出0-100以内可以被7整除的正整数

3.6、vim/vi命令

编辑文件命令

按i光标停在当前的字符上

按a光标停在当前字符后面

按esc键退出编辑,按:wq! 表示保存并强制退出

按:q! 表示不保存并强制退出

当前编辑的内容标记上行号,按esc键,按:set nu再回车

3.7、sort命令

排序命令,默认按升序

-r 按降序

-n 按数字排序

3.8、uniq命令

uniq命令作用是去除重复行,但重复行不相邻时,uniq命令不起作用,故经常和sort命令一起使用

uniq -c 显示重复行出现的次数

查找文件命令:

which pwd

whereis 

locate

find

文件权限相关:

用户管理

创建用户

useradd 用户名

删除用户

userdel 用户名

用户组管理

创建用户组

删除用户组

文件权限:拥有者的权限/当前用户组的权限/其他用户的权限

r - 4读

w- 2写

x - 1执行

chmod 777 赋予拥有者、用户组、其他用户,可读可写可执行的权限

三、变量表达式和函数

1、变量

变量的赋值:

a=1

将1赋给a

变量的引用:

echo ${a} (严谨的写法)

单引号双引号的使用:

引号里有变量时,需使用双引号

echo "abc $a" --->输出 abc 变量a的值

echo 'abc $a' --->输出abc $a 

预定义变量:

PWD USER HOME PATH

可以输入来查看预定义变量

echo $PWD   ---当前路径

echo $USER  ---当前用户

echo $HOME ---当前家目录

echo $PATH ---环境变量

which语句 用于查找所在的路径

比如 which python

可展示python的路径

a=`ls` --将命令ls赋值给变量a

数组相关

({1..100})---表示从1到100的整数

a=(1 2 3 4 5 6) ---表示变量a是一个数组

屏幕上输出数组,用*和@都可以

echo ${a[*]}     echo ${a[@]}

输出数组的长度,用#

echo ${#a[@]}

输入数组的第一个元素

echo ${a[0]}

数组的遍历

for x in ${a[@]};do echo $x;done

(())表示对整数的扩展,将里面的变量当作整数去处理

a=2;b=3;echo $((a+b))

表示echo $((2+3))

参数 -e的使用

echo -e 'a\nb'

输出:

a

b

可实现换行操作,如果不加-e参数,输出a\nb,将\n当成普通字符,没有进行转义

a++ /a--

与编程语言中类似,表示a=a+1/a=a-1

字符串的切片与python中使用方法一样,同样也支持正则提取

2、表达式函数

echo $? 上一个语句执行成功则返回0,执行失败则为非0

算术判断

-eq 相等

-nq 不相等

-gt 大于

-ge 大于等于

-lt 小于

-le 小于等于

举例:

[ 3 -le 8 ];echo $?

输出0,执行结果是true

3小于等于8,成立,这里的数字可以换成表达式

简单运用:

i=0;while [ $i -lt 10 ];do echo $i;((i++));done

输出:1-9的整数

当i的值加到9时,输出9,i+1等于10,10不小于10,不会输出i的值

(())也可以进行算术运算 ((10>9)) 结果为true

逻辑运算符&&、||

看一个例子:

echo "1" && echo "2" || echo "3" && echo "4" || echo "5" || echo "6" && echo "7" && echo "8" || echo "9"

先猜想一下输出结果会是什么?

答案:1 2 4 7 8

&&的意思是前面执行了,就会去执行

||的意思是前面执行了,就不存在,不去执行

与和或的使用

系统判断符号的使用

-d file 文件是一个目录

-e file 文件存在

-f file 文件是一个普通文件

-r file 文件可读

-w file 文件可写

-x file 文件可执行

-g file 文件的set-group-id被设定

-s file 文件的长度不为0

-u file 文件的set-user-id被设定

四、其他常用命令

1、top命令

top 然后按下键盘1 可显示每个CPU核心的使用情况

具体怎么看top命令可参考以下三篇文章,介绍的非常详细。

Linux性能分析工具top命令详解_top命令内容详解_OceanSky6的博客-CSDN博客top命令是linux下常用的性能分析工具,能够实时的显示系统中各个进程的资源占用情况,常用于服务端性能分析。top命令说明:top命令的结果分为两部分: 统计信息:前五行是系统的整体统计信息。进程信息:统计信息下方类似表格的区域显示的是进程的详细信息,默认5秒刷新一次。 统计信息说明:第1行:top任务队列信息(系统运行状态及平均负载),与uptime命令结..._top命令内容详解https://blog.csdn.net/yaomingyang/article/details/78968573百度安全验证https://baijiahao.baidu.com/s?id=1745901459006156810&wfr=spider&for=pcLInux知识点(三)--- 动态监控系统_linux kib mem_EOPG的博客-CSDN博客top:top与ps命令很相似。它们都用来显示正在执行的进程。Top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的的进程。2. 基本语法:top [选项]3. 选项说明:-d:秒数 指定top命令每隔几秒更新。默认是3秒 -i:使top不显示任何闲置或者僵死进程。-p:通过指定监控进程ID来仅仅监控某个进程的状态。[root@localhost100 /]# toptop显示说明:(1)整体信息:第一行:top - 15:55:54 :当前系统时间_linux kib memhttps://blog.csdn.net/qq_40247570/article/details/124432802

2、系统硬件配置查询命令

lscpu可以查看到CPU有几个

也可以用nproc查看CPU有几个

cpu的具体信息在/proc/cpuinfo这个文件里

3、网络相关命令

ping

检测主机是否联网

ifconfig

查看本机地址

4、查看端口号占用 杀死进程释放端口

查看端口占用:netstat -apn

可以使用top命令,输入k后,输入PID,输入9

可将进程杀死

查看所有进程详写信息:ps -ef

进程查找命令,查找出火狐的进程号

ps -ef | gerp "firefox" | awk '{print $2}'

杀死进程:kill -9 pid

杀死查找出来的所有火狐的进程

可以先将查找的命令重定向到一个文件中,然后读取文件逐个删除

while read pid;do kill -9 $pid;done>firfox_pid

这样显然有点麻烦,看能不能直接删除,可以用到xargs命令

ps -ef | gerp "firefox" | awk '{print $2}'|xargs kill -9

xargs命令的详解可以参考这篇博客,xargs可以直接管道符的输出当作输入

【Linux 进阶】命令 xargs 详解_linux xargs命令详解_TakingCoding4Granted的博客-CSDN博客【Linux 进阶】命令 xargs 详解_linux xargs命令详解https://blog.csdn.net/weixin_37780776/article/details/118947353?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168862066516800186531323%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=168862066516800186531323&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-118947353-null-null.142%5Ev88%5Econtrol_2,239%5Ev2%5Einsert_chatgpt&utm_term=xargs&spm=1018.2226.3001.4187

软件安装命令

sudo apt install 软件包

软件更新

sudo apt upgrade 软件包

软件卸载

sudo apt remove 软件包

远程管理

linux开启远程连接

Linux如何开启远程连接_linux开启远程连接服务_殊荣重黎的博客-CSDN博客Linux如何远程连接_linux开启远程连接服务https://blog.csdn.net/qq_63041460/article/details/129014997用一台mac远程登录linux,确保登录成功

ssh ip地址(linux的地址)-p 22

需要新开启一个窗口,因为这个终端窗口登录的是linux,不能访问mac,找不到mac的文件位置

从linux上拷贝文件到mac上

scp 用户名@linux所在的ip:文件路径 mac本地的路径

从mac上拷贝文件到linux上

scp mac本地的路径 用户名@linux所在的ip:文件路径

如果复制目录下的所有文件,scp后面加上-r参数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MRJJ_9

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值