备忘
python十进制转16进制:python -c "print hex(28285)"
程序远程调试:-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address="8000"
程序运行时间:ps -eo pid,lstart,etime
硬盘io使用情况 iostat -x 1 看util列,如果持续在90以上,有问题
linux清除释放缓存(page cache) buffer/cache: echo 1 > /proc/sys/vm/drop_caches
TCP状态(连接状态数量统计): netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
网络端口消息监控:tcpdump -i any tcp port 4800 -nn -A -v
ps - 按进程消耗内存多少排序 出处信息 ps -eo rss,pmem,pcpu,vsize,args | sort -k 1 -r -n | less 解析一下: ps 都知道,是linux,unix显示进程信息的, -e 是显示所有进程, -o是定制显示信息的格式 rss: resident set size, 表示进程占用RAM(内存)的大小,单位是KB pmem: %M, 占用内存的百分比 pcpu:%C,占用cpu的百分比 vsize: 表示进程占用的虚拟内存的大小,KB args:进程名(command) sort命令对ps结果进行排序 -k 1 :按第一个参数 rss进行排序 -r:逆序 -n:numeric,按数字来排序
进程使用内存统计: usedbyte=`ps -eo pid,rss | grep -E "${process_id}" | awk -v process_id=${process_id} '{for (i = 1; i<NF; i++) {if ($1 == process_id){ print $2}}}'`
删除5天以前的日志: find /usr/local/hbase-0.94.8/logs -type f -mtime +5 -name "hbase-hdfs-*.log.*" -delete
grep或者:cat xunlei.txt | grep "\"3.A.45\"\|\"3.A.49\"" | wc -l
hive行转列:create table dld_39health_target as select uid,sp from dld_39health_3 lateral view explode(split(concat_ws(' ',ind_hx,ind_attr_hx,ind_product_hx),' ')) t as sp;
hive直接过滤文本,不走mr: set hive.fetch.task.conversion=more;
hive显示日志级别:hive -hiveconf hive.root.logger=DEBUG,console
shell添加到crontab:(crontab -l;echo '*/1 * * * * /bin/sh /usr/local/hbase-0.94.12/bin/hbase_monitor.sh >> /data/logs/hbase_monitor.log 2>&1') | crontab
用如下命令查找大于100M的大文件:find / -size +100M -exec ls -lh {} \;
全目录(含子目录)替换:find /data/work/dailidong/rbc -name "*.sh" |xargs sed -i "s/\/data\/hadoop-0.20.2/\/usr/g"
替换:hadoop fs -cat /data/work/dailidong/* | tr "\001" "\t" | head
删除文件39-59行:sed '39,59d' ../bin/hbase_monitor.sh > new (源文件没有修改)
取每行的前5列:awk '{a=$1;for(i=2;i<5;i++){a=sprintf("%s\t%s", a, $i);} print a}' t.log
在使用tail -f命令时是可以及时看到文件的变化的,但是如果再加上一个grep命令,可能看到的就不那么及时了,因为grep命令在buffer写不满时就不输出,可以通过选项 --line-buffered 来搞定,如: tail -f file.txt | grep something --line-buffered
排序:cat server-hdfs-master-hangzhou-jishuan-DDS0251.dratio.puppet_console.log | grep "there still have " | awk '{print $1,$12}' | sort +1 -2 -nr | head,+posl - pos2 指定一个或几个字段作为排序关键字,字段位置从posl开始,到pos2为止(包括posl,不包括pos2)
lzo压缩: lzop -f ${outfile}.txt -o ${outfile}.lzo
shell改变文件编码:enca -L zh_CN -x GBK shebei_oc.csv
将已经在前台运行的作业放到后台执行:
如果一个作业已经在前台执行,可以通过ctrl+z将该作业放到后台并挂起。然后通过jobs命令查看在后台执行的作业并找到对应的作业ID,执行bg %n(n为通过jobs查到的作业ID)唤醒该作业继续执行。
该方式也存在结果会输出到终端上的情况,同样可以用重定向的方法解决
相关命令:
jobs------------查看在后台执行的进程
fg %n----------将后台执行进程n调到前台执行,n表示jobnumber(通过jobs查看的进程编号,而非pid)
ctrl+z----------将在前台执行的进程,放到后台并挂起
bg %n---------将在后台挂起的进程,继续执行
ctrl+c----------前台进程终止
kill %n---------杀掉后台运行的进程,n表示jobnumber(通过jobs查看的进程编号,而非pid)
hadoop批量删除:hadoop fs -ls /flume/social*/2016-05-14/19 | grep tmp | awk '{print $8}' | xargs -i hadoop fs -rmr {};
生成10G的文件: dd if=/dev/zero of=aa bs=1G count=10