工作中用到的sh脚本(持续更新)
shell腳本是一條執行完再執行下一條的。
for i in $(seq 10) for循環
for i in $(seq 10);dosh ./test.sh if [ $? -eq 0 ];thenecho "ok" elseecho "flase" fish ./testt.shdoneshell產生測試數據
#/bin/bash rm -rf ./data1.txttouch data1.txtfor((i=0;i<400000000;i++))dostr1=',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.txtdoneecho '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=KaTeX parse error: Double superscript at position 19: …te -d '-0 day' '?+%Y-%m-%d') ech…day"
day1=KaTeX parse error: Double superscript at position 19: …te -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/sha="$(date +%s)"echo "開始時間:$a"if [ -e /root/test111 ]thenwhile [ 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}&#特別是要注意:無限循環的產生線程,會占滿cpudonefib="$(date +%s)" echo "結束時間:$b"#let d=$b-$a#echo "時間:$d"exit 0模擬多個線程:
for i in $(seq 100);do { hadoop fs -put ./test /testif [ $? -eq 0 ];thenecho "ok"elseecho "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=0while [ $n -lt 1000 ]don=`expr $n + 1`echo "$n"doneb="$(date +%s)"echo "$b"let c=$b-$aecho "$c"ongoingshell中拼接字符串:
#!/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=$3while read line doecho $linegrep "$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`doif [ x"$file2" != x"." -a x"$file2" != x".." ];thenif [ -f "$path$file2" ];thenlet i=$i+1echo "$path$file2"mv "$path$file2" "$path1"/blacklist_tmp$icat "$path$file2" >> "$path1"/blacklist_tmpfifidone if [ $? -ne 0 ];thenexit 1 fi時間操作:
#!/bin/bash if [ $# -eq 1 ];thenn_date=`date -d $1 +"%Y%m%d"`echo "$n_date +o" elsen_date=`date -d yesterday +"%Y%m%d"`echo "$n_date +o0" fi遍歷文件
for file in ./* doif test -f $filethenecho $file 是文件elseecho $file 是目錄fi done是否包含某個字符串
if [[ $file =~ $strA ]]thenecho `hadoop fs -ls "$file"/chain_status=active`fi將數據上傳至hdfs
for i in {19978..432000}; docp date\=2016-11/part date\=2016-11/part-00000$iecho $ihadoop 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 $kylinIpssh $kylinIp > /dev/null 2>&1 << eeoofftouch abcdefg.txtecho `/sbin/ifconfig|sed -n '/inet addr/s/^[^:]*:\([0-9.]\{7,15\}\) .*/\1/p'|awk 'NR==1{print}'`exit eeooffecho 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 &刪除指定天的數據
export HADOOP_USER_NAME=hdfstime=$(date -d "-7 day" "+%Y%m%d") bb= rm -rf /mnt/rexec/crawler_shunfeng/crawler-shunfeng-timer-${time}.txt echo $bbtime=$(date -d "-0 day" "+%Y%m%d")echo $timehadoop fs -rmr /user/hive/warehouse/crawler/crawler-shunfeng-timer-${time}.txt #echo $cc hadoop fs -put /mnt/rexec/crawler_shunfeng/crawler-shunfeng-timer-${time}.txt /user/hive/warehouse/crawler/總結
以上是生活随笔為你收集整理的工作中用到的sh脚本(持续更新)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaScript中的定时器
- 下一篇: 百度干净云2.0无限速加速破解版(附怎么