作者:fbysss
QQ:溜酒酒吧酒吧吾散
blog:blog.youkuaiyun.com/fbysss
声明:本文由fbysss原创,转载请注明出处
前言:
linux基本命令就不在这里列出。本文记录的主要是
1.容易忘记的知识点
2.常用的、需求强烈的技巧
3.疑难杂症
旨在备忘、提高工作效率。希望我的总结对你有所帮助
一、vi技巧:
vi的时候,如果内容里面有注释,在某些终端里面,贴进去就是格式错乱的。
解决:vi中输入:set paste回车,然后粘贴就可以了。
vi
大文件,半天打不开,而且如果是在线的服务器,几个G的大文件可能直接撑爆服务器,影响服务。
解决:用less替代。v进入编辑模式。
有时候使用普通用户身份编辑了一个需要
root权限读写的文件,无法保存。使用 :w !sudo tee %可保存——保存后,然后q!退出。
vi中复制:(n)yy复制n行,p粘贴,d$删除当前光标到行尾y$复制到行尾
特殊字符处理:遇到一个奇怪的问题。在sublime中,或者apple的文本编辑中,制作纯文本,也同样会有问题,后来用vi发现文本中包含了一大堆怪异的字符,显示为<200b>
查找200是查不到的。这是一个字符。原来是unicode字符。使用
/\%u200b可以查到。
清除::%s/\%u200b//g
查找200是查不到的。这是一个字符。原来是unicode字符。使用
/\%u200b可以查到。
清除::%s/\%u200b//g
二、压缩相关:
tar zxvf 解压 gz文件 tar xvf解压tar文件
tar cvf 加压
tar tvf 不解压查看文件列表
unzip解压 zip文件
unzip -l 不解压查看文件列表
解压单独的文件,并覆盖现有文件。unzip -j -o test.zip “WEB-INF/classes/validator.xml”
unzip -j test.zip "WEB-INF/classes/validator.xml"
加压并排除某些文件,用-x
cd test && zip -o ../../test.zip -r ./* -x ./WEB-INF/lib/*.*
注意:曾经出现过,感觉排除总是无效,原因是原来的zip没有删除,结果写进去只是更新,原来的东西不会被删掉。
注意这个 -o 参数,并不是覆盖的意思,而是:-o make zipfile as old as latest entry,
将压缩文件内的所有文件的最新变动时间设为压缩时候的时间
gzip [filename]会直接把源文件变成一个gz文件,比较不符合一般人的习惯。gzip -k可以解决这个问题,k就是keep的意思,保留源文件
类似的,解压命令gunzip [filename]会把gz文件直接变成源文件,-k可保留原来的gz文件。
三、进程及端口相关
查找某个进程参数并杀死。假设进程参数中包含 -a schedule ,kill:kill -9 $(pgrep -f " -a schedule")
其中,-f 是从进程的参数中找关键字。因为往往我们需要的是精确的匹配,比如如果不加-f,就是只查找进程名称。java可能有多个。
那就相当于killall
=======================
附windows下常用命令
=======================
netstat -ano |findstr "端口号" 查看端口号占用进程信息
tasklist |findstr "任务编号" 查看任务名称
tskill 程序名 杀掉进程
ntsd -c p -q pid 杀掉进程
=======================
netstat -tlnp |grep 8080 查看进程号
netstat -tlnpa |grep 22|grep 公网IP 查看哪些外网机器连接了本服务器
netstat -A inet -p |grep 8080 可以用host显示ip地址。sudo
netstat -ano
lsof -i:8080查看端口号所在进程
top按内存消耗排序:按大写M
有时候一个端口,希望多个ip都能绑定它。则么办呢,比如内网和外网都想绑定。
解决:直接使用0.0.0.0地址。
当然,真正在生产环境的时候,要注意安全性,反而要缩小其绑定范围。
当然,真正在生产环境的时候,要注意安全性,反而要缩小其绑定范围。
四、查找相关
grep 有时候需要打印出前后几行,怎么办?使用-C参数即可。
grep Exception -C 10 logs/catalina.out
grep -v 不包括某个keyword 非常实用。
如果有很多的结果,只想看前n个,用
grep Exception -C 10 logs/catalina.out|head -n
统计的话,自然是加上 |wc -l
查找,并逐条进行处理的例子
find ./ -name "*.c" | awk -F "." '{print $2}' | xargs -i -t mv ./{}.c ./{}.h
find / -iname "*.log" |xargs grep "keyword"
find / -iname "*.log" |xargs grep "keyword"
如果是要查找某个目录下的
所有文件,用*.*是不行的。用空格" "即可,但这样的问题还会查出来子目录,并总提示xxx is a directory,很烦人。
解决:指定文件类型为普通文件而不是子目录。find . -type f |xargs grep hello 查找子目录的名字,则find . -type d -iname dirname
查找时排除某些目录
find . -type f -name "*config*" ! -path "./tmp/*" ! -path "./scripts/*" ! -path "./node_modules/*"
Explanation:
find . - Start find from current working directory (recursi
解决:指定文件类型为普通文件而不是子目录。find . -type f |xargs grep hello 查找子目录的名字,则find . -type d -iname dirname
查找时排除某些目录
find . -type f -name "*config*" ! -path "./tmp/*" ! -path "./scripts/*" ! -path "./node_modules/*"
Explanation:
find . - Start find from current working directory (recursi