Linux的一些骚操作
这些其实都是司空见惯的命令,也是比较基本和常用的命令!
一:文本输出命令:cat
1:指定文件搜索某个内容,在index.html搜索body
cat index.html | grep 'body'
2:cat的 -A,-B,-C,-v操作
cat index.html | grep 'body' -A 5 #输出body前5行 cat index.html | grep 'body' -B 5 #输出body前5行 cat index.html | grep 'body' -C 5 #输出body前后5行 cat index.html | grep -v 'body' #不输出body行
3:还可以把指定的数据提出来输出到某个文件,比如日志文件很大,我要找用户ID为10086的数据,那么就可以先把该数据找出来,单独保存一个文件,这样,该文件就小的多,便于操作。我们搜索2020.txt,搜索10086的数据,然后保存在当前目录下为10086.txt
cat 2020.txt | grep '10086' > ./10086.txt
二:tail操作,和cat差不多,也是文本输出命令,一般用于输出文件尾部内容
tail -n -5 1.txt #输出文件后5行 tail -n +5 1.txt #从第5行开始输出,包括第5行
tail还有个功能很常用,加-f,实时显示数据
tail -fn -5 1.txt #实时输出文件后5行 tail -fn 1.txt #实时输出全部内容
我们验证一下:创建一个文件text.txt.
touch -f 1.txt #创建1.txt文件 tail -f 1.txt #实时输出全部内容现在窗口处于阻塞状态,当有文件追加的时候,就会实时输出,记住一定是追加,修改不算,所以用vi或者vim编辑无效
我们打开另外一个窗口:因为现在1.txt是空的,所以我们直接添加,其实这也是追加。在空的基础上添加就是追加。
echo "123" > 1.txt可以看到 我们添加的 123 实时输出来了
我们再添加一个:
echo "456" > 1.txt发现tail这边并没有变,什么情况?因为这个算修改了,而不是追加,我们追加一下看看
echo "789" >> 1.txt再看:又出来了,注意:echo 后面的符号:> 添加覆盖;>> 追加
三:find和grep搜索
1:find 搜索文件,这个命令很简单,在当前目录下搜索 index目录,. 为当前目录
root@ubuntu:~# find . -name index ./.sdrcoin/blocks/index ./.litecoin/blocks/index
2:搜索内容,用cat命令,我们是指定文件中搜索,现在我不知道文件在哪里,但知道文件里面的一些内容,那么就可以这样粗暴的操作。
这里在www目录下搜索 内容为body的文件 -r :递归;-i:忽略大小写;-n:显示查找到的行数
root@ubuntu:/home# grep -rin 'body' www/ www/index.html:7: body { www/index.html:25: www/index.html:51:
四:历史命令
history 查看系统中最近执行过了哪些命令,可以带一个条件,精确搜索,比如搜索下最近有没有使用nginx命令
history | grep nginx
五:后台运行
常用的有两种方式后台运行:两则都是后台运行,不同之处在于关闭终端
1. command & 关掉终端停止运行
2. nohup command & 关掉终端继续运行
比如:我们要后台执行test.php
nohup php test.php & #后台运行,关闭终端不停止 php test.php & #后台运行,退出终端停止
六:端口
运维工作查看端口比较频繁,程序起不来?查看性能,进程等等都需要用到端口。
netstat和ss两个命令,建议用ss,netstat已经在淘汰的路上了。低版本linux可能没有ss
netstat -a #查看所有端口 netstat -tnlp | grep :80 #查看80端口,也可以-tnap
用ss
ss -s #查看网络连接统计 ss -pl #查看所有的端口以及应用程序名称 ss -lntpd | grep :80 #查看80端口
七:查看磁盘空间
df -h #统计磁盘使用情况
du -lh --max-depth=1 #查看当前目录下一级子文件和子目录占用的磁盘容量这个命令其实更使用,可以精确知道哪个目录占用了多少空间
du -h --max-depth=1 |grep 'G' |sort -nr #只统计容量超过G的目录,且按照从大到小排序
八:统计文件和目录
# 查看当前目录下的文件数量(不包含子目录中的文件) ls -l|grep "^-"| wc -l # 查看当前目录下的文件数量(包含子目录中的文件) 注意:R,代表子目录 ls -lR|grep "^-"| wc -l # 查看当前目录下的文件夹目录个数(不包含子目录中的目录),同上述理,如果需要查看子目录的,加上R ls -l|grep "^d"| wc -l # 查询当前路径下的指定前缀名的目录下的所有文件数量 # 例如:统计所有以“20161124”开头的目录下的全部文件数量 ls -lR 20161124*/|grep "^-"| wc -l