vim 全局替换
:%s/7001/7003/g
杀死同名的所有进程
ps -ef|grep redis-server|awk '{print $2}'|xargs kill -9
删除除某个文件外的所有文件
ls | grep -v "redis.conf" | xargs rm -rf
查看CPU物理个数
grep 'physical id' /proc/cpuinfo | sort -u
查看每个物理CPU的核数
grep 'core id' /proc/cpuinfo | sort -u | wc -l
如何查看总的逻辑CPU个数
grep 'processor' /proc/cpuinfo | sort -u | wc -l
如何查看CPU的型号
dmidecode -s processor-version
echo -n 不换行输出
echo -n "123" > test
进入脚本文件目录
cd `dirname $0`
jar打包
jar -cf test.tar test
jar解包
tar -xf test.tar
jar压缩打包
jar -czf test.tar.gz test
jar解包解压
tar -xzf test.tar.gz
*.gz解压
gzip -d test.gz
*.zip 解压
unzip test.zip
递归查找内容
grep -rn 'test'
查看目录大小
du -sh *
文件大小/时间排序降序
ls -lShr
ls -ltr
访问时间 atime: 查看内容
修改时间 mtime: 修改内容
改变时间 ctime: 文件属性,比如权限
删除时间 dtime: 文件被删除的时间
curl 命令发送请求
curl -H "Content-Type: application/json" -X POST -d '{"user_id": "123", "coin":100, "success":1, "msg":"OK!" }' "https://google.com/json" 发送json请求
curl -H "Content-Type: application/x-www-form-urlencoded" -X POST -d 'login=emma&password=123' "https://google.com/urlencoded" 发送x-www-form-urlencoded格式请求
curl -H "Content-Type: multipart/form-data" -F "file=@baikeid" -X POST "https://google.com/form-data" 上传文件请求
-H参数可以不写
curl -o example.html https://www.example.com
curl -s -o example.html https://www.example.com 不输出错误和进度信息
wget -O example.html https://www.example.com
curl -b 'foo1=bar;foo2=bar2' https://google.com 带cookie
curl -e 'https://google.com?q=example' https://www.example.com 带refer
curl -H 'Referer: https://google.com?q=example' https://www.example.com 带refer
cpu负载
1. w
20:15:09 up 64 days, 2:19, 1 user, load average: 0.40, 0.42, 0.46
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
snswenwe pts/1 10.130.10.100 20:06 5.00s 0.11s 0.01s sshd: snswenwen [priv]
2. uptime
20:15:29 up 64 days, 2:20, 1 user, load average: 0.29, 0.40, 0.45
3. top
4. vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 355116 92032 30915272 0 0 48 91 0 0 6 2 93 0 0
解释说明:
--------------------------------------------------------------------------------
procs部分的解释
r 列表示运行和等待cpu时间片的进程数,如果长期大于1,说明cpu不足,需要增加cpu。
b列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。
--------------------------------------------------------------------------------
cpu部分的解释
us 列显示了用户方式下所花费 CPU 时间的百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,需要考虑优化用户的程序。
sy 列显示了内核进程所花费的cpu时间的百分比。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足。
wa 列显示了等待CPU时间的百分比。这里wa的参考值为5%,如果wa超过5%,说明CPU等待严重
id 列显示了cpu处在空闲状态的时间百分比
--------------------------------------------------------------------------------
system部分的解释
in 列表示在某一时间间隔中观测到的每秒设备中断数。
cs列表示每秒产生的上下文切换次数,如当 cs 比磁盘 I/O 和网络信息包速率高得多,都应进行进一步调查。
--------------------------------------------------------------------------------
memory部分的解释
swpd 切换到内存交换区的内存数量(k表示)。如果swpd的值不为0,或者比较大,比如超过了100m,只要si、so的值长期为0,系统性能还是正常
free 当前的空闲页面列表中内存数量(k表示)
buff 作为buffer cache的内存数量,一般对块设备的读写才需要缓冲。
cache: 作为page cache的内存数量,一般作为文件系统的cache,如果cache较大,说明用到cache的文件较多,如果此时IO中bi比较小,说明文件系统效率比较好。
--------------------------------------------------------------------------------
swap部分的解释
si 由内存进入内存交换区数量。
so由内存交换区进入内存数量。
--------------------------------------------------------------------------------
IO部分的解释
bi 从块设备读入数据的总量(读磁盘)(每秒kb)。
bo 块设备写入数据的总量(写磁盘)(每秒kb)
--------------------------------------------------------------------------------
5. dstat
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read writ| recv send| in out | int csw
6 2 93 0 0 0| 384k 721k| 0 0 | 0 0 |8229 7974
6 1 92 0 0 0| 0 0 |1529k 775k| 0 0 | 11k 13k
6. iostat 1 1 隔1s显示,共1次 -c只显示cpu
Linux 3.10.0-957.el7.x86_64 (hbhly_SG11_131_118) 10/23/2020 _x86_64_ (8 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
5.59 0.01 1.73 0.01 0.00 92.67
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 1.90 2.79 18.29 15429769 101321168
vdb 42.06 381.18 702.78 2111129030 3892260493
解释说明:
avg-cpu: 总体cpu使用情况统计信息,对于多核cpu,这里为所有cpu的平均值
%user: 在用户级别运行所使用的CPU的百分比.
%nice: nice操作所使用的CPU的百分比.
%sys: 在系统级别(kernel)运行所使用CPU的百分比.
%iowait: CPU等待硬件I/O时,所占用CPU百分比.
%idle: CPU空闲时间的百分比.
Device段:各磁盘设备的IO统计信息
tps: 每秒钟发送到的I/O请求数.
Blk_read /s: 每秒读取的block数.
Blk_wrtn/s: 每秒写入的block数.
Blk_read: 读入的block总数.
Blk_wrtn: 写入的block总数.
7. iostat -x -k -d 1
Linux 3.10.0-957.el7.x86_64 (hbhly_SG11_131_118) 10/23/2020 _x86_64_ (8 CPU)
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
vda 0.00 2.37 0.17 1.73 2.79 18.29 22.18 0.00 0.34 2.02 0.17 0.08 0.02
vdb 0.00 0.06 38.58 3.48 381.18 702.77 51.54 0.10 3.99 4.07 3.18 0.04 0.16
解释说明:
rrqm/s: 每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并
wrqm/s: 每秒对该设备的写请求被合并次数
r/s: 每秒完成的读次数
w/s: 每秒完成的写次数
rkB/s: 每秒读数据量(kB为单位)
wkB/s: 每秒写数据量(kB为单位)
avgrq-sz:平均每次IO操作的数据量(扇区数为单位)
avgqu-sz: 平均等待处理的IO请求队列长度
await: 平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位)
svctm: 平均每次IO请求的处理时间(毫秒为单位)
%util: 采用周期内用于IO操作的时间比率,即IO队列非空的时间比率
如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
idle小于70% IO压力就较大了,一般读取速度有较多的wait。
同时可以结合vmstat 查看查看b参数(等待资源的进程数)和wa参数(IO等待所占用的CPU时间的百分比,高过30%时IO压力高)
sort命令
数字进行排序,可以使用-n参数
sort num.txt -n
sort排序的时候,可以按字段分割的数据进行排序。-t参数表示行的分割字符,-k表示第几列。当然,可以进行降序排序,-r参数可以实现。下面是对passwd文件,以冒号(:)进行分割,然后对第三列以数字方式进行降序排序。
sort -t ':' -k 3 -nr passwd
如果文件内容有很多重复的,需要进行去重。sort也是支持的,可以通过-u参数使用
sort -u word.txt
sort test.txt | uniq -d 只显示重复行
sort test.txt | uniq -u 显示文件中不重复的各行
sort a.txt | uniq > aa.txt
sort b.txt | uniq > bb.txt
sort aa.txt bb.txt | sort | uniq -d 交集
sort file1 file2 | uniq 并集
sort file1 file2 file2 | uniq -u 差集 file1有但file2没有的数据
sort file2 file1 file1 | uniq -u 差集 file2有但file1没有的数据