Linux

ps axo nlwp,pid,cmd | sort -rn | head -10 #查看线程最多的10个进程
for i in $(ls /proc | grep "^[0-9]" | awk '$0>100'); do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps;done| sort -k2nr | head #查找swap占用最高的几个PID
find . -name "*ABC*" -exec grep -H 'XYZ' {} +  #查找字符串所在的文件名
iconv -f GBK -t UTF-8 file1 -o file2 #文件gbk转utf8
sed -i '1s/^\xEF\xBB\xBF//' 1.CSV #去除UTF8-BOM 格式
less 1_a.txt | awk -F "[ :,]" '{for(i=1;i<=NF;i+=2)$(i+1)="|"}1'  > aaa.txt #打印奇数列 1 3 5 7 9等
rsync -avzP --bwlimit=50000 -e "ssh -i  /data/users/shanhe/.ssh/z_id_rsa" postgres@192.168.111.111:/tmp/csv/ #断点续传,限速50M
zcat tomcat7980_*.tgz | grep --binary-files=text provOrderId #zcat 提示是二进制
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' #查看连接数
ps -p PID -o lstart #查看进程启动时间
grep -r --include="*.java" studentinfo . #根据后缀名搜索
awk '{print NF;exit}' #查看文件有多少列
grep -oP '(\d{1,3}\.?){4}' #提取文本中的ip地址
awk '!a[$0]++' file #删除重复行
unset HISTFILE #执行之后,以后的bash记录不会记录到history里面
awk 'BEGIN { cmd="cp -ir /www/web/* ."; print "n" |cmd; }' #批量复制一些文件但不覆盖已经存在的文件或者文件夹
ls | awk '{ print "tar zcvf "$0".tgz " $0|"/bin/bash" }' #将当前目录下每个文件夹和文件各自压缩
alias survey="history |awk '{a[\$2]++} END{for(i in a){printf \"%5d\t%s \n\",a[i],i}}'|sort -rn|head"
alias df="df -h -P --total --exclude-type=devtmpfs 2>/dev/null"
alias psmem='ps -eo pid,vsz,comm |sed -e 1d | sort -k2 -nr | awk '"'"'{a=$2; if ($2>0) {print $1, $2/8/1024, "MB", $3}}'"'"
ps -e -o ppid,stat | grep Z | cut -d ' ' -f1 | xargs kill -9 #杀死僵尸进程
wget -xnH -i test.txt #带目录下载文本中的链接
shopt -s extglob # 启用!命令,可以用 mv !(backup) * backup 移动当前除backup文件夹以为的文件到backup文件夹
ls | grep -v abc | xargs -i rm -rf {}   #反向删除 带abc 之外的文件
tar cvf xxx.tar -T 1.list #按照列表中的文件信息打包
jar uvf webf.jar appconfig.xml #更新jar包中的文件
du -h --max-depth=1 #统计当前目录下各目录的大小
%s/a/w/g      #vi下面批量替换 把a 批量缓存w 在:模式下
tar -tvf  #可以看tar包中的文件 不用解压.
tar czf web.tgz * --exclude old --exclude fonts #压缩当前文件和文件夹 排除 old 和fonts 文件夹
\cp rf *  /usr/local/apache/htdocs  #复制当前所有文件和文件夹到htdocs
pkill -9 -t pts/3  # 结束tty 3的 会话
ll | grep ^d |awk '{print $9}'|xargs -i rm -rf {} #删除当前目录下的文件夹
set nonu #vi 取消行号
ll -i #查询乱码文件的inode号
find . -inum 1059245|xargs -i  mv {} logo.png #改名
find . -inum 1059245 -exec mv {} 1.txt \; #上面的有时候不行,可以换换这个
vi + /etc/profile
PATH=$PATH:/usr/local/apache/bin
source /etc/profile
#把apache加入系统变量
#Error: Package: glibc-headers gcc make的装不上
vi /etc/yum.conf
把exclude=kernel*注释掉
echo ulimit -n 65535 >>/etc/profile #修改最大文件打开数 临时增加 下面的是永久增加需要重启
cat >> /etc/security/limits.conf <<EOF
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
EOF
find /data/mysql_backup/ -ctime +5 | xargs -i rm -rf {} #删除当前文件夹下5天前的文件夹和文件
watch -n 1 date #动态显示当前系统时间
arping 192.168.1.33 #检测有没有和自己ip冲突的机器.
netstat -na|grep ESTABLISHED| grep :80 | wc -l #查询已经建立连接的80端口的连接数
ls -lSh /www/web/*.jpg |head #找出目录下最大的文件
vim 下批量注释
按v 进入 可视 模式 选好要注释的行,然后按 ctrl+v 进入 可视 块 模式,然后按 大写#的 I 输入 #号 再按两下esc键 就可以了
删除注释:在 可视 块 模式下 选择第一列的 # 按d删除
:50,70 s/^/#   #vi 下面 注释50~70行
 find . -type d -perm 700 -exec ls -ld {} \;#找出当前目录下有写权限的目录.
zip -q -r laomm.zip * -x *.MP3 ./upload/* #压缩当前文件夹下面的文件但排除mp3文件和upload 文件夹.
jar -uf cctv.jar system.cfg #更新架包下面一个文件.
dstat -nf #查看网卡即时流量
echo 3 > /proc/sys/vm/drop_caches #手工释放内存
cat $i | sort -t '|'  -k4,4 -r | sort -t '|' --unique --stable -k1,1 >${i/_n/} #根据第一列去重,同时保持第四列中最大的那个值
sed -i 's/^M//g' #删除^M ^M输入方式为 ctrl+v ctrl+m
grep -F -v -f cq2.txt cqxx.txt | sort | uniq >cqrrrr.txt #取文件的差集,前面的减后面的
less 1116.txt | grep -o -P '(?<=www).*(?=com)' #提取www 和 com 字符之间的数据

awk '!a[$0]++' file #删除重复行
awk '{if (length($0) != 11) print $0}' #匹配11位手机号
awk 'BEGIN{ FS="|" } { for(fn=1;fn<=NF;fn++) {print fn" = "$fn;}; exit; }' gxlt0731.csv 查看字段列位置
ERROR:  invalid byte sequence for encoding "UTF8": 0x00
用sed 替换 sed -i.bak 's/\x0//g' 1_n.csv
sed '1s/^\xEF\xBB\xBF//' 去除开头 UEF
grep -o '[0-9]\{11\}' 1.txt  #匹配11位手机号
sed -i 's/\s\{1,\}/|/g' 2.txt  替换一个或者多个空格
sed -i 's/^M//g' 删除^M ^M输入方式为 ctrl+v ctrl+m
cut -d "|" -f1-37,39-41,43- 66_32.tsv 删除第38、42列
sed -i 's/\x01/|/g' 00000* hive 分隔符替换
cat 111.txt | sort | uniq -d 显示重复行,-D显示所有的,注意要用sort 排序下,uniq -d 只能识别相邻的行
sed '/^#/d;/^$/d;/^[\t]/d' #删除注释,空行,开头是空格的行
cat filename | tr -d '\r' > newfilename
mpstat -P ALL 2 1000 看cpu核心
curl ifconfig.me #看自己的公网ip cip.cc
grep -wf aaa.txt bbb.txt 取文件交集
grep -F -v -f cq2.txt cqxx.txt | sort | uniq >cqrrrr.txt 取差集,前面的减后面的
less 1116.txt | grep -o -P '(?<=a\\\":\\\").*(?=\\\"\,\\\"b)' 提取字符之间的数据
less 1116.txt | grep -o -P '(?<=www).*(?=com)' 提取www 和 com 字符之间的数据

ps axo nlwp,pid,cmd | sort -rn | head -10 #查看线程最多的10个进程

zcat tomcat7980_*.tgz | grep --binary-files=text provOrderId zcat 提示是二进制

rsync -avzP -e "ssh -i `pwd`/.ssh/p_rsa" postgres@192.168.111.149:/tmp/csv/ 断点续传
rsync -avzP --bwlimit=50000 -e "ssh -i  /data/users/zhouz/.ssh/ws_id_rsa" postgres@192.168.111.149:/tmp/csv/ 断点续传,限速50M

rsync -avzP --bwlimit=50000 -e "ssh -i  /data/users/zhouz/.ssh/ws_id_rsa" wangshen@192.168.111.200:/data/users/wangshen/qushu/20180113/ 断点续传,限速50M
rsync -avzP --bwlimit=50000 -e "ssh -i  /data/users/zhouz/.ssh/ws_id_rsa -p32022" wangshen@192.168.111.200:/data/users/wangshen/qushu/20180113/* .

less 1_a.txt | awk -F "[ :,]" '{for(i=1;i<=NF;i+=2)$(i+1)="|"}1'  > aaa.txt 打印奇数列 1 3 5 7 9等
awk -F "[|_=]" '{print $2}' 1.txt  awk 指定多个分隔符,[ ] 这里写要指定的分隔符,如果分隔符是[] 则用 awk -F ‘[][]’ 
cat aaa.log|awk '{print $2}'|sort |uniq -c |wc -l 统计访问量最高的几个IP地址
cat aaa.log|awk '{print $2}'|sort |uniq -c|sort -rn 
echo -e '\xf' 查看二进制文件乱码

终端乱码 可以执行 reset 命令

sed -i.bak '/pattern to match/d' ./infile sed删除文件前,自动创建一个.bak的文件。

split -l990000 xaa -d -a 2 request split 实现自增分割


iconv -f gbk -t utf8 filename gbk转utf8

sort -t '|' -k 1,1 -u 832.txt 根据第一列进行去重

实现group by功能

awk -F "," '{OFS="|"} {print $2,$12}' gx2.csv 输出指定分隔符

awk -F '|' '{arr[$1]+=1}END{for(i in arr)print i,arr[i]}' --$1 为要统计的列 分组统计 实现group by
awk -F '|' '{arr[$2"|"$32]+=1}END{for(i in arr)print i"|"arr[i]}' xxx.txt | sort -t"|" -n -r -k3


cat * | iconv -f GBK -t UTF-8  转编码

grep -o '<a href=['"'"'"][^"'"'"']*['"'"'"]'| \
  sed -e 's/^<a href=["'"'"']//'-e 's/["'"'"']$//'
替换超链接表达式
wget -c -r -nd -np -A "*.bak" http://61.155.178.247:3333/h120/script/ 指定下载格式的文件
more /etc/sysconfig/clock 查看当前时区

cat smsmobile.csv | sed 's/.$/ 0/' > sms.csv 追加一列
#批量改文件名
for var in x*; do mv "$var" "$var.txt"; done
grep -Fvf ip.txt logfile  过滤ip.txt列表里的内容
awk 列模糊匹配
cat gxdx01.txt | awk -F '|' '{ if ($2 !~ /G/)print $0}' >gxdx02.txt
# find 查找排除某个文件
find ./cache ! -name '*.html' -type f    
&& echo " " | /bin/mail -s "杭州任务执行完成了" huoxuegang@raiyi.com 执行任务监控
find -type f  -print |  xargs  grep "include" | awk '{gsub(":"," ");print $1}' | uniq -c
su 之后 无法运行 screen命令的解决方法 script /dev/null

查找文件->过滤文件名->去重
#$year$month_mm$day_dd
列出文件中出现关键字的次数和文件名

关闭/打开Linux内核dmesg中时间戳信息

关闭时间戳信息(Disable dmesg timestamp)
echo N > /sys/module/printk/parameters/time
打开时间戳信息(Enable dmesg timestamp)
echo Y > /sys/module/printk/parameters/time


时间戳转换成可读时间
alias dmesg='dmesg|perl -ne '"'"'BEGIN{$a= time()- qx!cat /proc/uptime!};s/( *)(\d+)\.\d+/localtime($2 + $a)/e; print $_;'"'"

date -d "1970-01-01 UTC `echo "$(date +%s)-$(cat /proc/uptime|cut -f 1 -d' ')+478880.926165"|bc ` seconds"

find . -name "*ABC*" -exec grep -H 'XYZ' {} +  查找字符串所在的文件名

#互信
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub root@a
ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 2022 ztsms@61.155.155.243" #带端口的互信
authorized_keys

yum install lrzsz
scp -P 2022 yc.txt ztsms@61.155.155.243:/home/backup # scp 带端口复制
scp -P 32022 -l 80000 flow_sms_sent.txt liuzhiguo@61.155.178.246:/data/liuzhiguo/ scp内网限速 10mb/s
scp -P 32022 -l 160000 flow_sms_sent.txt liuzhiguo@192.168.111.201:/data/liuzhiguo/ 复制到总库
scp -P 32022  flow_sms_sent.txt liuzhiguo@61.155.178.246:/data/liuzhiguo/
shopt -s extglob 启用 !命令
Permissions 0644 for '/root/id_rsa' are too open.
chmod 400 /root/id_rsa
scp -P 32022 -i id_rsa flow_sms_sent.txt liuzhiguo@61.155.178.246:/data/liuzhiguo/ 指定证书传送
sed -i '/2015-10-23 02:11/,/2015-10-23 08:25/d' c.out 删除时间段的日志
q9bsm3FY6ZWy ztsms 243普通
access_log off; nginx关闭访问日志
ssh -C -f -N -g -R 3388:127.0.0.1:3389 root@61.155.155.243 -p 2022 #ssh隧道

iptables -t nat -I OUTPUT -p tcp  -d 127.0.0.1 --dport 3389 -j REDIRECT --to-port 3388 #端口转发
ethtool eth0 测试网线是否插好. 看speed
sed -n '/2015-12-16 21:01/,/2015-12-16 23:01/p' 截取时间段的日志
java -jar jar包名  执行jar包
ls -l | awk '{if ($5 == 0) print $NF}' | xargs -i rm -f {} --删除空文件

curl --interface em2 http://133.193.17.201/bssframe curl 指定网卡
ping -I eth0 10.10.10.1
ping -I eth1 10.10.10.1  ping 指定网卡

sudo yum install zlib-devel readline-devel #安装postgresql所需组件
vim dos转unix  
set ff=unix
  sed -i 's/^M//g' Config.properties_bak 
iostat: command not found  yum install sysstat
iostat -x -d -k 1 查看i/o性能
mail: command not found yum install mailx

nginx 编译选项
yum -y install openssl-devel pcre-devel zlib-devel gcc automake autoconf libtool make gcc gcc-c++
./configure --prefix=/usr/local/nginx/ --user=www --group=www --with-http_stub_status_module --with-http_spdy_module --with-http_ssl_module --with-ipv6 --with-http_gzip_static_module --with-http_realip_module --with-http_flv_module

php 编译选项
yum install -y libmcrypt-devel libjpeg-devel libpng-devel freetype-devel curl-devel openssl-devel libxml2-devel
./configure --prefix=/data/app/php --with-config-file-path=/data/app/php/etc \
--with-fpm-user=www --with-fpm-group=www --enable-fpm --disable-fileinfo \
--with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd \
--with-iconv-dir=/usr --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib \
--with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-exif \
--enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-inline-optimization \
--enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl \
--with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-ftp \
--with-gettext --enable-zip --enable-soap --disable-ipv6 --disable-debug
make ZEND_EXTRA_LIBS='-liconv'
make install
unset MAILCHECK 屏蔽mail 提醒
zabbix 安装
yum install net-snmp-devel
./configure --prefix=/data/app/zabbix --enable-server \
--enable-agent--with-mysql--with-net-snmp--with-libcurl--with-libxml2
ln -s /data/app/mysql/lib/* /usr/lib
nmap -p0-65535 133.193.15.33 扫描开放端口
nmap -sP 133.192.68.0/24 扫描存活主机

time_wait 过多
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' #查看连接数

ps -p PID -o lstart #查看进程启动时间

grep -r --include="*.java" studentinfo . #根据后缀名搜索

awk '{print NF;exit}' #查看文件有多少列

grep -oP '(\d{1,3}\.?){4}' #提取文本中的ip地址

awk '!a[$0]++' file #删除重复行

unset HISTFILE'#执行之后,以后的bash记录不会记录到history里面

awk 'BEGIN { cmd="cp -ir /www/web/* ."; print "n" |cmd; }'#批量复制一些文件但不覆盖已经存在的文件或者文件夹

ls | awk '{ print "tar zcvf "$0".tgz " $0|"/bin/bash" }' #将当前目录下每个文件夹和文件各自压缩

alias survey="history |awk '{a[\$2]++} END{for(i in a){printf \"%5d\t%s \n\",a[i],i}}'|sort -rn|head"

alias df="df -h -P --total --exclude-type=devtmpfs 2>/dev/null"

alias psmem='ps -eo pid,vsz,comm |sed -e 1d | sort -k2 -nr | awk '"'"'{a=$2; if ($2>0) {print $1, $2/8/1024, "MB", $3}}'"'"

ps -e -o ppid,stat | grep Z | cut -d ' ' -f1 | xargs kill -9 #杀死僵尸进程

wget -xnH -i test.txt #带目录下载文本中的链接

shopt -s extglob # 启用!命令,可以用 mv !(backup) * backup 移动当前除backup文件夹以为的文件到backup文件夹

ls | grep -v abc | xargs -i rm -rf {}   #反向删除 带abc 之外的文件

tar cvf xxx.tar -T 1.list #按照列表中的文件信息打包

jar uvf webf.jar appconfig.xml #更新jar包中的文件

du -h --max-depth=1 #统计当前目录下各目录的大小

%s/a/w/g      #vi下面批量替换 把a 批量缓存w 在:模式下

tar -tvf  #可以看tar包中的文件 不用解压.

tar czf web.tgz * --exclude old --exclude fonts #压缩当前文件和文件夹 排除 old 和fonts 文件夹

\cp rf *  /usr/local/apache/htdocs  #复制当前所有文件和文件夹到htdocs

pkill -9 -t pts/3  # 结束tty 3的 会话

ll | grep ^d |awk '{print $9}'|xargs -i rm -rf {} #删除当前目录下的文件夹

set nonu #vi 取消行号

ll -i #查询乱码文件的inode号
find . -inum 1059245|xargs -i  mv {} logo.png #改名
find . -inum 1059245 -exec mv {} 1.txt \; #上面的有时候不行,可以换换这个

vi + /etc/profile
PATH=$PATH:/usr/local/apache/bin
source /etc/profile
#把apache加入系统变量


#Error: Package: glibc-headers gcc make的装不上
vi /etc/yum.conf
把exclude=kernel*注释掉


echo ulimit -n 65535 >>/etc/profile #修改最大文件打开数 临时增加 下面的是永久增加需要重启
cat >> /etc/security/limits.conf <<EOF
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
EOF

find /data/mysql_backup/ -ctime +5 | xargs -i rm -rf {} #删除当前文件夹下5天前的文件夹和文件

watch -n 1 date #动态显示当前系统时间

arping 192.168.1.33 #检测有没有和自己ip冲突的机器.

netstat -na|grep ESTABLISHED| grep :80 | wc -l #查询已经建立连接的80端口的连接数

ls -lSh /www/web/*.jpg |head #找出目录下最大的文件

vim 下批量注释
按v 进入 可视 模式 选好要注释的行,然后按 ctrl+v 进入 可视 块 模式,然后按 大写的 I 输入 #号 再按两下esc键 就可以了
删除注释:在 可视 块 模式下 选择第一列的# 按d删除
:50,70 s/^/#   #vi 下面 注释50~70行

 find . -type d -perm 700 -exec ls -ld {} \;#找出当前目录下有写权限的目录.

zip -q -r laomm.zip * -x *.MP3 ./upload/* #压缩当前文件夹下面的文件但排除mp3文件和upload 文件夹.

jar -uf cctv.jar system.cfg #更新架包下面一个文件.

dstat -nf #查看网卡即时流量

echo 3 > /proc/sys/vm/drop_caches #手工释放内存

#端口转发
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 31521 -j DNAT --to 远程ip:1521
iptables -t nat -A POSTROUTING -j MASQUERADE


#!/bin/bash

size=1883954if[ $size -ge 1048576]then
    size=$(awk 'BEGIN {printf "%.2f",'$size'/1048576}')M
elif[ $size -ge 1024]then
    size=$(awk 'BEGIN {printf "%.2f",'$size'/1024}')K
fi

echo $size
linux 换算大小

搜索