前言
今天是大年初二,今年新型冠状病毒肆虐,在家宅了3天了,实在无聊,索性总结下知识。今天来梳理下实用的linux命令,注意是实用!非常实用!这些命令是我处理线上问题经常用到的。
实用的linux命令
日志查询
cat tmp.log
cat filename 查询整个文件,但是有时候线上日志文件会很大,这样打开整个文件会很耗时而且无法精准定位到想要的日志信息。比如你想看下项目启动时的日志,可以使用以下命令
cat tmp.log | head -200 // 查询文件的前200行
tail -200 tmp.log // 查询文件的最后200行
大部分时间我们看日志追踪问题都会有一些关键字信息,这个时候我们就可以根据关键字过滤查询日志了
cat tmp.log | grep "API请求参数"
当过滤后的日志信息太多时可以使用以下命令查看最前面200行日志
cat tmp.log | grep "API请求参数" | head -200
当想要查看关键字日志上下文时,可以使用以下命令
cat tmp.log | grep "API请求参数" -C 10 | head -200
当想要查看后续新产生的日志,可以使用以下命令(适用复现问题)
tail -f tmp.log
当想要查询某行日志输出的总条数,可以使用以下命令(例如统计网关请求的次数)
cat tmp.log | grep "API请求参数" | wc -l
wc命令相关参数:
- c 统计字节数
- l 统计行数
- w 统计字数
这里是引用
这些选项可以组合使用。
输出列的顺序和数目不受选项的顺序和数目的影响。
总是按下述顺序显示并且每项最多一列:行数、字数、字节数、文件名
如果命令行中没有文件名,则输出中不出现文件名
对行日志进行截取并转存文件后续使用,可以使用以下命令
cat tmp.log | grep "API请求参数" | head -200 | cut -d "=" -f5 | cut -d "," -f1 > log.txt
使用以上命令我就提取出了网关请求的前200个方法名,并转存在文件log.txt上了。
cut -d “=” -f5 这段命令的意思是以“=”为分隔符分割当前行日志,-f5是代表取分割后的第五个元素,cut -d “,” -f1是再次以“,”分割取第一个元素,> log.txt是将内容转存成log.txt文件
文件传输
// 将服务器的文件传至本机电脑
sz log.txt
// 将本地文件上传至服务器
rz
// 如果没有sz或者rz命令,先下载并安装
yum install -y lrzsz
文件由root用户上传或者生成的,别的用户是无权访问文件的,我们大部分应用其实并不是以root用户启动的,所以程序会无权访问文件,看下面这个文件是root用户权限的
执行以下命令
chown devjava:devjava log.txt
刚才的文件的所有权就变成devjava了,我们的使用devjava启动的程序就可以访问到文件了
redis
服务器登陆redis命令
redis-cli -h '127.0.0.1' -p 6379-a 'password'
尽量避免线上使用keys *,因为redis是单进程单线程的,使用keys * 会阻塞线上应用,使用keys命令尽量明确key值,负责谨慎使用,实在需要模糊匹配可以使用scan命令
scan 0 match youdian1* count 800
scan命令是异步非阻塞的,缺点是无法匹配出所有数据,需要以游标的形式多次scan。
ftp
连接ftp命令
echo "==============start connect ftpi=============="
echo password
sftp -oPort=20883 username@127.0.0.1
将文件从ftp获取到服务器
get demo_20200126.txt.zip
将文件从本地服务器传到ftp
// 将ftp.sh传到当前目录下
put /root/ftp.sh
查看端口被占用
// 拿到进程id
netstat -tunlp | grep 8080
// 或者 lsof -i :8080
// 查看进程是哪个应用
ps -ef | grep 11559
// 杀死进程
kill -9 11559
总结
本文主要梳理了日常工作中经常使用的linux命令,没有系统梳理细节,全文立足于实用。
扫码关注公众号
来源:CSDN
作者:yutian_1999
链接:https://blog.csdn.net/yutian_1999/article/details/104087116