工作中用到的sh脚本(持续更新)

shell脚本是一条执行完再执行下一条的。

for i in $(seq 10) for循环

for i in $(seq 10);do
 sh ./test.sh
if [ $? -eq 0 ];then
  echo "ok"
else
  echo "flase"
fi
 sh ./testt.sh

done

shell产生测试数据

#/bin/bash     
   rm -rf ./data1.txt
   touch data1.txt

   for((i=0;i<400000000;i++))
       do
          str1=',name';
          str2=',addr';
          str3=',phone';
          str4=',tel';
          str5=',mail_addr';
          str6=',bank_card_num';
          str7=',unit_num';
          str8=',over_due';
          str9=',flag';
          name=${i}${str1}${i}${str2}${i}${str3}${i}${str4}${i}${str5}${i}${str6}${i}${str7}${i}${str8}${i}${str9}${i}
          echo $name>>data1.txt
      done

   echo 'success!'

shell连接hive

#!/bin/bin
source /etc/profile

#/opt/cloudera/parcels/CDH-5.4.3-1.cdh5.4.3.p0.6/lib/hive<<EOF
hive<<EOF 
use testdp; #就是hive语句,该怎么写就怎么写。
show tables;
EOF
exit;

day=(dated‘−0day′‘+echo“(date−d‘−0day′‘+echo“(date -d ‘-0 day’ ‘+%Y-%m-%d’) echo “day” day1=$(date -d ‘-0 day’ ‘+%Y’) echo “**$day1”

shell连hive可以得到hive执行语句返回的结果

#/usr/bin
hive -e 'SHOW DATABASES'
d=$?
echo "$d"
if [ $d -eq 0 ];then
echo "echo"
fi

查询hadoop中hive表的大小 hadoop fs -dus /user/hive/warehouse/raw_datas.db/*20151009|awk ‘{sum+= $1};END{print sum}’ byte/1024 =kb

查询某文件中包括某个字段的行数:

grep -r ugi=hue hadoop-cmf-hive-HIVEMETASTORE-slave4.log.out|grep 2015-10-16|wc -l

shell产生一定大小的测试数据

      #!/bin/sh
       a="$(date +%s)"
       echo "开始时间:$a"
       if [ -e /root/test111 ]
              then
              while [ true ]
                 do
                                     {
                  size=`ls -l /root/test11|awk '{print $5}'`
                                      # echo "$size"
                                      if [ $size -lt 10737418240 ]
                                       then
                     {
                        echo "Hello wolrd!" >>/root/test11
                                               }        
                            else {
                                               echo "完成"
                                               break;
                           }
                                       fi
                            }&#特别是要注意:无限循环的产生线程,会占满cpu
                                     done

      fi
      b="$(date +%s)" 
      echo "结束时间:$b"
      #let d=$b-$a
      #echo "时间:$d"
      exit 0

模拟多个线程:

for i in $(seq 100);do
{ hadoop fs -put ./test /test
  if [ $? -eq 0 ];then
         echo "ok"
  else
         echo "flase"
  fi
}&
done
wait
echo "全部上传完毕!"
exit 0

删除后台一直在运行的shell(删掉之后就不能再重启了) ps -ef |grep test.sh ps axu|grep test.sh

shell之while日期

      a="$(date +%s)"
       echo "$a"
       n=0
       while [ $n -lt 1000 ]
       do
            n=`expr $n + 1`
            echo "$n"
       done
       b="$(date +%s)"
      echo "$b"
      let c=$b-$a
      echo "$c"ongoing

shell中拼接字符串:

#!/bin/sh
for i in $(seq 10);do
{
        hadoop fs -mkdir /"test""$i"

}
done
exit 0
#!/bin/sh
for i in $(seq 100);do
{
        hadoop fs -put ./test /"test""$i"
         echo "$i"
}&
done
exit 0

比较两个数不相等 特别是在判断上一个程序的执行状况时,要用不等于0,因为非正常退出是不等于0。

#/usr/bin
a=0
if [ 1 -ne 0 ];then
echo 's'
fi

查找某个字段: grep -i “2015-11-30 17:36:05.343” ./000000_0

对比两个文件,将相同的部分重定向到另外一个文件

#!/bin/bash
file=$1
sourcefile=$2
outPath=$3

while read line
do
   echo $line
   grep "$line"  $2 >>$3
done < $file

每天跑批从hdfs上将数据重定向到一文件

#!/bin/bash
source /etc/profile
#存放文件的目录
path1=/home/datacenter/txanyihua/
#get表的目录
path=/home/datacenter/txanyihua/blacklist/
rm -rf "$path1"/blacklist*
hadoop fs -get /user/hive/warehouse/appq.db/blacklist  "$path1"
i=0
for file2 in `ls -a $path`
    do
       if [ x"$file2" != x"." -a x"$file2" != x".." ];then
           if [ -f "$path$file2" ];then
                                let i=$i+1
                echo "$path$file2"
                mv  "$path$file2"  "$path1"/blacklist_tmp$i
                cat  "$path$file2" >>  "$path1"/blacklist_tmp
           fi
       fi
    done
if [ $? -ne 0 ];then
 exit 1
fi

时间操作:

#!/bin/bash
if [ $# -eq 1 ];then
  n_date=`date -d $1 +"%Y%m%d"`
  echo "$n_date +o"
else
  n_date=`date -d yesterday +"%Y%m%d"`
   echo "$n_date +o0"
fi

遍历文件

for file in ./*
do
    if test -f $file
    then
        echo $file 是文件
    else
        echo $file 是目录
    fi
done

是否包含某个字符串

if [[ $file =~ $strA ]]
    then
   echo  `hadoop fs -ls "$file"/chain_status=active`
   fi

将数据上传至hdfs

for i in {19978..432000};
do
  cp date\=2016-11/part  date\=2016-11/part-00000$i
  echo $i
  hadoop fs -put date\=2016-11/part-00000$i /user/hive/warehouse/scan_details/ecodeid=xmht01/date=2016-11 &
 # rm -rf date\=2016-11/part-00000*
  sleep 2s  
done

获取当前目录

FWDIR="$(cd `dirname $0`/..; pwd)"
nohup sh $FWDIR/bin/scanSpark.sh   >>$FWDIR/log/scanSpark.log>&1 &(>/dev/null 2>&1 &
)

history显示时间

export HISTTIMEFORMAT="%F %T `whoami` "  

某条命令的执行时间及耗时

/usr/bin 
export HADOOP_USER_NAME=hdfs 
startTime=$(date +%s)
sleep 2
endTime=$(date +%s)
time=$(($endTime-$startTime))
echo $time
echo "$(date +%Y-%m-%d%t%H:%M:%S)  ----> tbl_tc_tmpfileassign --->$time s" >>./sqoop.log
echo over

远程ssh执行命令并退出

for kylinIp in cdh02 cdh03 cdh04
do 
  echo $kylinIp
  ssh $kylinIp > /dev/null 2>&1 << eeooff
   touch abcdefg.txt
   echo `/sbin/ifconfig|sed -n '/inet addr/s/^[^:]*:\([0-9.]\{7,15\}\) .*/\1/p'|awk 'NR==1{print}'`
   exit
eeooff
   echo done!
 # echo `/sbin/ifconfig|sed -n '/inet addr/s/^[^:]*:\([0-9.]\{7,15\}\) .*/\1/p'|awk 'NR==1{print}'`
done 

后台启动

nohup spark2-submit   --master yarn-client  --jars $(echo sparklib/*.jar | tr ' ' ',') --class com.ishansong.bigdata.Infos ./dynamic-premium-1.0-SNAPSHOT.jar > /dev/null 2>&1 &

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏简书专栏

基于Scrapy爬取伯乐在线网站

标题中的英文首字母大写比较规范,但在python实际使用中均为小写。 2018年7月20日笔记 Scrapy官方文档网址:https://doc.scrap...

3965
来自专栏腾讯IVWEB团队的专栏

前端 fetch 通信

随着前端异步的发展, XHR 这种耦合方式的书写不利于前端异步的 Promise 回调。而且,写起来也是很复杂.。fetch API 本来是在 SW(Servi...

1.4K0
来自专栏Python小屋

Python使用Scrapy爬虫框架爬取天涯社区小说“大宗师”全文

大宗师是著名网络小说作家蛇从革的系列作品“宜昌鬼事”之一,在天涯论坛具有超级高的访问量。这个长篇小说于2015年3月17日开篇,并于2016年12月29日大结局...

3455
来自专栏静晴轩

浅谈android中的目录结构

之前在android游戏开发中就遇到本地数据存储的问题:一般情形之下就将动态数据写入SD中存储,在没有SD卡的手机上就需另作处理了;再有在开发android应用...

34510
来自专栏崔庆才的专栏

分布式爬虫原理之Scrapy分布式实现

4146
来自专栏Java帮帮-微信公众号-技术文章全总结

day07.HDFS学习【大数据教程】

分而治之:将大文件、大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析;

1584
来自专栏葡萄城控件技术团队

Winform文件下载之WinINet

在C#中,除了webclient我们还可以使用一组WindowsAPI来完成下载任务。这就是Windows Internet,简称 WinINet。本文通过一个...

2158
来自专栏aoho求索

基于可靠消息方案的分布式事务(四):接入Lottor服务

在上一篇文章中,通过Lottor Sample介绍了快速体验分布式事务Lottor。本文将会介绍如何将微服务中的生产方和消费方服务接入Lottor。

2411
来自专栏云飞学编程

Python爬虫框架scrapy抓取旅行家网所有游记!从此出游不发愁!

安装scrapy,pip可以解决你的问题: pip install scrapy。

711
来自专栏FreeBuf

Firefox信息泄漏漏洞的技术分析(CVE-2018-12387)

研究发现,JavaScript JIT编辑器中的Array.prototype.push有多个存在安全问题的参数,而这些参数共同导致了这个信息泄漏漏洞的出现。这...

1333

扫码关注云+社区