类型 | 命令 | 作用 |
---|---|---|
文件操作 | ls 20161*.log ls 20160[1-9]*.log |
正则方式筛选输出 |
文件操作 | tar -zcvf target.tar.gz sourcefile | 压缩 |
文件操作 | gzip -9 xx | 会覆盖源文件 |
文件操作 | tar -zxvf target.tar.gz | 解压缩 |
文件操作 | du -hs path | 查看文件大小(Mb单位) |
文件操作 | df | 磁盘情况预览 |
文件操作 | cp -r xx yy | 递归方式拷贝(拷贝所有文件和文件夹) |
文件操作 | wget http://a.com/b.jpg -P pic/ | wget 指定文件存放的目录 |
文件操作 | chmod 755 imgcat chmod +x xx.sh chmod -x xx.sh |
imgcat是imgcat.sh 去掉了后缀名,可以直接 ./imgcat (sh imgcat.sh) |
文件操作 | scp -r username@servername:/path/filename /target/path | 拷贝别人开发机的文件(-r 拷贝所有文件和文件夹) |
文件操作 | find . -name '*.png' -depth 2 | 深度为2时查找png文件 |
hadoop | hadoop fs -getmerge /app/2016 data.txt | 2016目录下的所有文件merge到data.txt中 |
hadoop | hadoop fs -cat,-ls,-dus,-rmr | fs类型的多种操作 |
进程 | ps -ax ps -le ¦ grep node | 查看进程,加上grep进行各种过滤 |
字符处理 | iconv -f 'utf-8' -t 'gbk' a.txt > b.txt | utf8=>gbk |
字符处理 | grep -o 'xxx' data.txt ¦ wc -l grep -r 'name' ./ grep -a1 'name' ./ |
data.txt中的xxx的出现次数 查看当前目录下面的所有含有name字符串的文件 输出上下一行(a1), 下一行(A1) |
字符处理 | sed 's/\t/,/g’ data.txt | data.txt中的tab=>',' |
字符处理 | sed -n '5,10p' data.txt sed -n '10p' data.txt cat nohup.out¦ head -n 100 cat nohup.out¦ tail -n 100 |
看5-10行,看第10行,头100,尾100 |
sort | sort -n -r -k 2 -t ':' result > result_sorted | key:value形式的文件按照value进行排序 |
其他 | date +%Y-%m-%d date -d yesterday +%Y%m%d date -d tomorrow +%Y%m%d date -d '30 days ago' +%Y%m%d |
时间获取 |
其他 | tailf nohup.out | 一旦nohup.out更新就去刷新输出 |
其他 | crontab -e | 定时任务配置 |
其他 | git remote -v | git查看remote仓库地址 |
其他 | npm list --depth=1 2>/dev/null | 查看npm以及目录安装的包(过滤错误信息) |
$ cat test.data
a 1
b 2
c 99
d 0
e 91
f 3
# -r 降序 -n 升序 -k1 k2 (指定排序key)
$ cat test.data | sort -k1 -n
a 1
b 2
c 99
d 0
e 91
f 3
$ cat test.data | sort -k2 -n
d 0
a 1
b 2
f 3
c 99
# 去除重复行
$ sort -n test.data | uniq
高亮处理 --color=auto
# match 多个关键字
grep -E 'xxx|yyy|zzz' data
# invert -match 不包含的关键字
grep -v 'xxx|yyy|zzz' data
# 输出目标结果(输出 xfuck you x)
echo "asdxfuck you x1231" | grep -o 'x.*x'
# 关于正则
## 元字符 \b \w \W
## []代表范围
grep "[0-9]" data #match 数字
grep "[789]" data #match 789
grep "[^0-9]" data #match 数字取反
grep "[^a-zA-Z0-9]" data #match 特俗字符
## {}重复的次数
[0-9]\{1,3\} match 1~3位的数字
## *?+ 重复字符
*: 重复次数 n >= 0
+: 重复次数 n >= 1
?: 重复次数 n = 0 || 1
num* match "nummmm" "num" "nu"
num\+ match "nummmm" "num" 至少要有一个
\(re\)* match 'rerere' 和空行
\(re\)\+ match 'rerere' 去掉了空行
##例子
匹配 log中的tu字段
grep -oE "tu=u[0-9]{6,7}" --color=auto
#!/bin/awk -f
# FS指定列分割符 OFS列输出分隔符
BEGIN{
FS = OFS = "\t";
}
{
split($1, key, "#");
new_key = key[1]"#"key[3];
if (key[2] == 0) pv1[new_key] += $2;
pv2[new_key] += $3;
clk[new_key] += $4;
gain[new_key] += $5;
cnt[new_key] += $6;
}
END{
for (i in pv1) {
print i, pv1[i], pv2[i], clk[i], gain[i], cnt[i];
}
}
##脚本方式调用
-F 定义间隔符
awk -F ',' '{print $1,$4}' new_data
awk -F ',' '{print "name:"$1"\tbirthday"$4}' new_data
内置参数的使用
awk -F "," "{print NR,NF}" new_data
NR 行号 NF 字段数量
awk -F "," '{printf("Line:%s,Col:%s\n", NR,NF)}' new_data
# for 输出没有按照下标来的
$ awk 'BEGIN{info="this is a test";split(info,tA," ");print length(tA);for(k in tA){print k,tA[k];}}'
4
2 is
3 a
4 test
1 this
# 文件夹文件大小总计
ls -l | awk 'BEGIN{size=0} {size+=$5} END{print "size is " size}'
# stat 非空行数
awk 'BEGIN{cout=0} $1!~/^$/ {cout+=1} END{print "line number is"cout}' list_data
# stat第5行后面的数据
awk -F ',' 'BEGIN{cout=0} {if (NR > 5) name[cout++]=$1} END{for(i=0;i < cout;i++) print i,name[i] }' list_data
# 其他细节可以 curl -h 自己查看
curl -i -X POST \
-H "application/x-www-form-urlencoded; charset=UTF-8" \
-d \
'{"pageNo":"2","pageSize":"10"}' \
'http://cpu.baidu.com/1003/d77e414'
## get 请求
curl -G http://imageplus.baidu.com/ui
## curl 带上 cookie请求
curl --cookie "name=fuckyou" http://xx.com/api
# 新增了一个hadoop client
export PATH=$PATH:/home/xishengbo/hadoop_client_yq/hadoop/bin
svn commit -m “恢复到某修订版(某修订版作废)”
理解 文件、目录的权限的不同 r w x
让 xxx.sh 可执行即为 ./xxx.sh 运行
chmod 777 xxx.sh
让 xxx.cpp不可执行
chmod -x xxx.cpp
rm lu-ui
rm ../log/*log*
wget http://10.145.78.238:8114/output/bin/lu-ui
chmod 777 lu-ui
kill $(ps aux | grep 'bin/lu-ui' | awk '{print $2}')
vim界面下 ctrl + z
要回到前台
jobs 查看当前后台任务
通过 fg 1 切换回来
ls -Slgrepr
用于缓存自己的开发环境 不用每次开发的时候都重新打开环境
tmux
tmux ls
tmux kill-server
tmux kill-session -t s_name
tmux attach -t s_name
ctrl + b + n/p (next previous window)
ctrl + b + $ (rename)
mysql -uUSERNAME -pPASSWORK -P4100 -hHOST test_db
mysql -uxishengbo -pWNXhRY4L9Q -P4100 -hst01-dba-sdc-bak03.st01 cb_webdb
waptuList="111,2222,333"
select ad_param from ad_demand where ad_position_id in ($waptuList)
order by create_time
group by group_id
DATE_FORMAT(st_date, "%Y-%m-%d")
like "%xsb%" // like的用法
## 查看请求baidu.com 数据包所经过的IP节点 一般用于问题排查
traceroute baidu.com
netstat 查看本机端口的状态
ab -c 2 -n 10 http://127.0.0.1:8800?c=1&b=1
各类限制条件自己看参数吧 get post都能发的
- 通过top命令 看改程序的 cpu占用情况,一般刚开始启动 占用很高(做各种初始化工作,载入配置等等)
- tailf 观察log目录log,一般启动完成后 日志量开始讲减慢