日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/20 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 工作中用到的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.shdone

shell產生測試數據

#/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"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=$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脚本(持续更新)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。