## ====================================================## ## auth:wonter ## ## date:2014-06-12 ## ## to :trust.sh ## ## ====================================================## #!/bin/sh trust(){ { echo -e "\n" } | ssh-keygen -t rsa -P '' #參數 echo "請輸入信任機ip:(提示:需輸入三次密碼!)" read ip #創建信任關係 cd ~/.ssh scp -r id_rsa.pub $ip:/root/.ssh/$ip ssh $ip 'touch ~/.ssh/authorized_keys && chmod 644 ~/.ssh/authorized_keys' ssh $ip "cat ~/.ssh/$ip >> ~/.ssh/authorized_keys" } trust
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 更新時間java
echo 3 > /proc/sys/vm/drop_caches 清理緩存python
python -m SimpleHTTPServer 啓動python頁面cgi訪問mysql
time=`date "+%Y-%m-%d"`
mysqldump -uroot -p123456 javame > /usr/local/mysql/data/bak/javame-${time}.sqllinux
mysql -u abc -p abc < abc.sqlweb
注意sql文件必須在當前目錄下,若是不在當前目錄下須要在< 以後加上具體sql文件路徑sql
jenkins項目發佈腳本shell
預安裝:yum instal sshpass -y數據庫
ip="192.168.20.200" jenkinsurl="http://ip:port/job/portal" port="22" passwd="123456" tomcatpath="/root/tomcat-8.0" war_name="web-portal" get_war="${jenkinsurl}/ws/target/${war_name}.war" pid=`sshpass -p $passwd ssh $ip -p ${port} -o StrictHostKeychecking=no "ps -ef | grep $tomcatpath | grep -v grep | awk '{print \$2}'"` if [ "X${pid}" = "X" ] then sshpass -p $passwd ssh $ip -p ${port} -o StrictHostKeychecking=no "rm -rf $tomcatpath/webapps/*" sshpass -p $passwd ssh $ip -p ${port} -o StrictHostKeychecking=no "curl $get_war -o $tomcatpath/webapps/${war_name}.war" sshpass -p $passwd ssh $ip -p ${port} -o StrictHostKeychecking=no "unzip $tomcatpath/webapps/${war_name}.war -d $tomcatpath/webapps/ROOT" sshpass -p $passwd ssh $ip -p ${port} -o StrictHostKeychecking=no "rm -rf $tomcatpath/webapps/${war_name}.war" sshpass -p $passwd ssh $ip -p ${port} -o StrictHostKeychecking=no "rm -rf $tomcatpath/webapps/ROOT/WEB-INF/classes/properties/*" sshpass -p $passwd ssh $ip -p ${port} -o StrictHostKeychecking=no "$tomcatpath/bin/startup.sh" else sshpass -p $passwd ssh $ip -p ${port} -o StrictHostKeychecking=no "kill -9 \$(ps -ef | grep $tomcatpath | grep -v grep | awk '{print \$2}')" sshpass -p $passwd ssh $ip -p ${port} -o StrictHostKeychecking=no "rm -rf $tomcatpath/webapps/*" sshpass -p $passwd ssh $ip -p ${port} -o StrictHostKeychecking=no "curl $get_war -o $tomcatpath/webapps/${war_name}.war" sshpass -p $passwd ssh $ip -p ${port} -o StrictHostKeychecking=no "unzip $tomcatpath/webapps/${war_name}.war -d $tomcatpath/webapps/ROOT" sshpass -p $passwd ssh $ip -p ${port} -o StrictHostKeychecking=no "rm -rf $tomcatpath/webapps/${war_name}.war" sshpass -p $passwd ssh $ip -p ${port} -o StrictHostKeychecking=no "rm -rf $tomcatpath/webapps/ROOT/WEB-INF/classes/properties/*" sshpass -p $passwd ssh $ip -p ${port} -o StrictHostKeychecking=no "$tomcatpath/bin/startup.sh" fi
刪除空行、 刪除第四行和第二行、刪除第三行到尾行apache
sed -e '/^$/d' sed -e '4d' -e '2d' sed -e '3,$d' (sed '/info/,$d') #匹配
輸出模式匹配1和模式匹配行2
$sed -n -e '/Storage/p' -e /Software/p thegeekstuff.txt
5. Storage
9. Software Development
清除linux緩存
一、在兩個文件中找出相同的號碼vim
diff -y xx.txt oo.txt | egrep -v "<|>" | awk '{print $2}'
二、打印第幾行到第幾行之間
cat 1 | awk 'NR==2,NR==4{print}'
一、刪除Linux遠程用戶鏈接會話
[root@tradx24 logs]# w 10:45:28 up 15 days, 16:23, 4 users, load average: 0.00, 0.00, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 - Sun21 4days 0.00s 0.00s -bash root pts/0 192.168.1.2 09:11 0.00s 0.07s 0.00s w root pts/2 192.168.1.2 09:45 30:53 0.07s 0.07s -bash root pts/3 192.168.1.8 10:20 22:05 0.02s 0.00s vi operation.log [root@tradx24 logs]# skill -KILL -v pts/3 pts/3 root 21217 vi pts/3 root 24331 bash
二、經過ssh遠程執行命令
[root@tradx24 bin]# iip="192.168.1.10" [root@tradx24 bin]# ssh $iip w 10:54:13 up 125 days, 20:17, 1 user, load average: 0.00, 0.00, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 - 21Mar14 4days 0.09s 0.09s -bash
三、經過ssh遠程批量執行MySQL腳本
#ip list1=(`cat ../tools/dblist | grep -v \# | awk '{print $1}' | sed "1,1d"`) #user list2=(`cat ../tools/dblist | grep -v \# | awk '{print $2}' | sed "1,1d"`) #password list3=(`cat ../tools/dblist | grep -v \# | awk '{print $3}' | sed "1,1d"`) for((i=0;i<=${#list1[@]};i++)); do iip=`echo ${list1[i]} | awk -F "." '{print $4}'` ssh ${list1[i]} mkdir /home/sqlScrip/ ssh ${list1[i]} mkdir /home/sqlScrip/$iip clear scp ../sqlScrip/$iip/* ${list1[i]}:/home/sqlScrip/$iip clear #path list4=(`ls ../sqlScrip/$iip`) for((w=0;w<=${#list4[@]};w++)); do if [ "117" == "$iip" ] then ssh ${list1[i]} "mysql -h ${list1[i]} -u ${list2[i]} -p${list3[i]} < /home/sqlScrip/${iip}/${list4[w]};" clear fi done ssh ${list1[i]} 'rm -rf /home/sqlScrip' done
四、經過svn下載war包
#list第五行爲下載地址 list=(`cat ../tools/list | awk '{print $5}' | sed "1,1d"`) for((i=0;i<${#list[@]};i++)); do curl -u wangyong:Abcd1234 -O ${list[i]} war=`echo ${list[i]} | awk -F "/" '{print $NF}'` mv $war ../workapp/ done
五、解壓war包到指定目錄
ssh ${ip} unzip ${tomcat目錄}/webapps/${war包名稱}.war -d ${tomcat目錄}/webapps/${指定目錄}
六、多Linux服務器創建信任關係
ssh-keygen -t rsa cd ~/.ssh scp -r id_rsa.pub $ip:/root/.ssh/$ip ssh $ip 'touch ~/.ssh/authorized_keys && chmod 644 ~/.ssh/authorized_keys' ssh $ip "cat ~/.ssh/$ip >> ~/.ssh/authorized_keys"
七、刪除某目錄下空文件
find ../new/$serve/properties -type f -size 0 -exec rm -f {} \;
八、刪除某目錄下小於10b的文件
#Delete the files smaller than 10B for i in `ls -l ../new/$serve/properties/ | sed -e '1d' | awk '$5 < 10 {print$NF}'` do rm -rf ../new/$serve/properties/$i done
九、Linux經過alias設置快捷命令
command(){ list1=(`cat ~/.bashrc | grep custom`) for((i=0;i<=${#list1[@]};i++)); do if [[ "${list1[i]}" = "#custom" ]] then echo "[warn] The command has already been initialized,there's no need to repeat the operation, thank you!" break else path=`pwd` #初始命令 #Initialization commands. echo "#custom" >> ~/.bashrc echo "alias l='ll -al'" >> ~/.bashrc echo "alias conf='cd `echo $path`/../conf'" >> ~/.bashrc echo "alias bin='cd `echo $path`/../bin'" >> ~/.bashrc echo "alias new='cd `echo $path`/../new'" >> ~/.bashrc echo "alias too='cd `echo $path`/../tools'" >> ~/.bashrc echo "alias hostlist='cat `echo $path`/../tools/.hostlist'" >> ~/.bashrc echo "alias un='cd `echo $path`/../'" >> ~/.bashrc echo "alias bak='cd `echo $path`/../bak'" >> ~/.bashrc echo "alias app='cd `echo $path`/../workapp'" >> ~/.bashrc echo "alias ..='cd ../'" >> ~/.bashrc source ~/.bashrc fi done }
十、引用其餘shell腳本方法
## ====================================================## ## auth:wonter ## ## date:2014-06-12 ## ## path:javame.cnblogs.com ## ## ====================================================## #!/bin/sh #引用tool.sh腳本中方法 . ../tools/tool.sh #Parameters par #Capture ip #Capture path config
十一、獲取腳本自身名稱
#Automatically obtain configuration files name=`echo $0` uname=`echo $name | awk -F "/" '{print $2}' | awk -F "." '{print $1}'` #Uniform configuration serve="$uname"
十二、檢查是否存在文件夾,沒有則新建文件夾
bak_mk="../bak/$serve" new_mk="../new/$serve" if [ ! -d $bak_mk ]; then mkdir $bak_mk fi if [ ! -d $new_mk ]; then mkdir $new_mk fi
判斷文件是否爲空
if [[ -s $file ]]; then
1三、統計腳本執行時間
st=`date +"%Y-%m-%d %H:%M:%S"`
#執行方法 start en=`date +"%Y-%m-%d %H:%M:%S"` st_c=`date -d "$st" +%s` en_c=`date -d "$en" +%s` interval=`expr $en_c - $st_c` echo "Start start-up time :${st}" echo "Start end time :${en}" echo "total consuming time :${interval} 秒"
1四、shell定義集合
#name list1=(`cat ../tools/list | grep -v \# | awk '{print $1}' | sed "1,1d"`) #ip list2=(`cat ../tools/list | grep -v \# | awk '{print $2}' | sed "1,1d"`) #serve list3=(`cat ../tools/list | grep -v \# | awk '{print $3}' | sed "1,1d"`) for((i=0;i<=${#list1[@]};i++)); do cp ../conf/.model ../conf/${list1[i]}.conf cp ../bin/.model.wy ../bin/${list1[i]}.wy cp ../bin/.model.yw ../bin/${list1[i]}.yw done
1五、記錄腳本執行者用戶與IP
#Perform operation echo "operator:" read me a=`tty | awk -F "/dev/" '{print $2}'` date "+%Y-%m-%d %H:%M:%S" >> ../logs/operation.log echo `w | grep $a | awk '{print $3}'` "${me} > Perform operation: one" >> ../logs/operation.log
1六、shell中的正則語句
for i in `cat ../conf/$confs | grep start | awk -F ">>" '{print $2}' | awk -F "_" '{print $1}'` do if [[ "${i}" == "shiro" ]] then sed -n -e '/>>shiro/,/>>shiro/p' $confs |grep -v '>>shiro' > $pro_shi cat $pro_shi | col -b > ../temp/m1 cat ../temp/m1 > $pro_shi elif [[ "${i}" == "jdbc" ]] then sed -n -e '/>>jdbc/,/>>jdbc/p' $confs |grep -v '>>jdbc' > $pro_jdbc cat $pro_jdbc | col -b > ../temp/m1 cat ../temp/m1 > $pro_jdbc fi
done
1七、shell寫個定時進程(不推薦我這個寫法,應該有更好!)
## ====================================================## ## auth:wonter ## ## date:2014-06-12 ## ## to :timing.sh ## ## ====================================================## #!/bin/sh echo "請輸入定時閥值(格式:`date +"%Y-%m-%d %H:%M"` )" read timing echo "定時任務設置完畢,請安心等待..." ti(){ while true do time=`date +"%Y-%m-%d %H:%M"` if [[ "${time}" == "${timing}" ]] then echo "定時任務:" #定時清理日誌 rm -rf ../logs/* #定時備份日誌 #定時執行腳本 break fi done } ti&
1八、經過參數方式執行腳本 tools.sh
#!/bin/sh trust(){ #創建信任 echo "請輸入信任機ip:(提示:需輸入三次密碼!)" read ip trusts } command(){ #初始化命令 command } case "$*" in trust) trust ;; command) command ;; *) echo "----------------------------------------" echo "pls : http://javame.cnblogs.com welcome" echo "----------------------------------------" echo " 主機信任 | or | 初始化命令(初始) " echo "tools.sh trust | or | tools.sh command" echo "----------------------------------------" ;; esac
1九、終端發送回會話給其餘用戶 限root用戶
echo "輸入您想說的話吧:"
read spk echo $spk >/dev/stdin >/dev/pts/2
20、某目錄下全部文件統一批量修改ip
sed -i "s/10.0.0.1/10.0.1.2/g" `grep "10.0.0.1" -rl /opt/uer/wy`
2一、連接數與進程數
#連接數 netstat -n | awk '/^tcp/ {++y[$NF]} END {for(w in y) print w, y[w]}' #統計httpd協議鏈接數進程數 ps -ef|grep httpd|wc -l ps aux|grep httpd|wc -l #句柄數 lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more #查看進程佔用內存 ps aux |awk '($1 ~apache) && ($6>50) {print $0}'
2二、Linux查看線程的三種方法
1、top -H 手冊中說:-H : Threads toggle 加上這個選項啓動top,top一行顯示一個線程。不然,它一行顯示一個進程。 2、ps xH 手冊中說:H Show threads as if they were processes 這樣能夠查看全部存在的線程。 3、ps -mp <PID> 手冊中說:m Show threads after processes 這樣能夠查看一個進程起的線程數。
2三、查看鏈接某服務端口最多的的IP地址
netstat -nat | grep "192.168.1.20:8443" |awk '{print $5}'|awk -F: '{print $4}'|sort|uniq -c|sort -nr|head -20
2四、常見壓縮解壓命名
.tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是壓縮!) .gz 解壓1:gunzip FileName.gz 解壓2:gzip -d FileName.gz 壓縮:gzip FileName .tar.gz 和 .tgz 解壓:tar zxvf FileName.tar.gz 壓縮:tar zcvf FileName.tar.gz DirName .bz2 解壓1:bzip2 -d FileName.bz2 解壓2:bunzip2 FileName.bz2 壓縮: bzip2 -z FileName .tar.bz2 解壓:tar jxvf FileName.tar.bz2 壓縮:tar jcvf FileName.tar.bz2 DirName .bz 解壓1:bzip2 -d FileName.bz 解壓2:bunzip2 FileName.bz 壓縮:未知 .tar.bz 解壓:tar jxvf FileName.tar.bz 壓縮:未知 .Z 解壓:uncompress FileName.Z 壓縮:compress FileName .tar.Z 解壓:tar Zxvf FileName.tar.Z 壓縮:tar Zcvf FileName.tar.Z DirName .zip 解壓:unzip FileName.zip 壓縮:zip FileName.zip DirName .rar 解壓:rar x FileName.rar 壓縮:rar a FileName.rar DirName
2五、厚積薄發,持續更新積累,請關注javame.cnblogs.com
1.gzexe -d 解密
2.Address 192.168.3.202 maps to bogon, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!
解決方法:vim /etc/ssh/ssh_config 修改GSSAPIAuthentication 值爲 no
3.打印指定行一下
sed -n -i '/PID/,+600000000 p' file
4.sed用法
在第一行插入數據 sed -i 1"i\\$icare_ip" file 只打印第三行 sed -n '3p' datafile 只查看文件的第100行到第200行 sed -n '100,200p' file 刪除第二到第五行 sed '2,5d' datafile 刪除包含"2014-10-19"的行到包含"2014-10-29"的行之間的行 sed '/2014-10-19/,/2014-10-29/d' datafile 刪除包含"My"的行到第十行的內容 sed '/My/,10d' datafile
sed選項-e用於進行多重編輯
sed -e '1,10d' -e 's/My/Your/g' datafile
5.交互式輸入
{ echo "who" } | ssh 192.168.48.73
6.shell中的集合
list1=(`cat ../tools/list | grep -v \# | awk '{print $1}' | sed "1,1d"`) for((i=0;i<${#list1[@]};i++)); do sh ./${list1[i]}.wy done
7.判斷是否存在
if [ ! -d $bak_mk ]; then mkdir $bak_mk fi
8.針對^M
dos2unix
9.獲取最後登陸系統的ip
last -n 5
10.AWK統計某個文件夾下的文件佔用的字節數
ls -l |awk 'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ", size}' [end]size is 8657198 ls -l |awk 'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ", size/1024/1024,"M"}' [end]size is 8.25889 M
關於find搜索定位:
11.文件名 搜索文件
locate one.sh
12.查找後執行
find ./ -name 192.168.48.154 -exec cat > 1 {} \;
13.刪除空文件
find ./ -type f -size 0 -exec rm -rf {} \;
14.查找大小爲0的文件或空目錄
find ./ -empty -type f / d
15.查大於512k的文件
find /home -size +512k
16.將多個文件打印到一個文件中
find ./ -name "[1-9].sh" -exec cat > 3 {} \;
17.目錄下過濾文件夾
find ./ ! -type f
18.批量修改
find ./ -name "[1-9].sh" -exec sed -i s/0/9/g {} \;
19.-o 至關於且
find ./ -name "1.sh" -o -name "2.sh"
20.兩天內改動
find /home -mtime -2
21.兩分鐘內改動
find /home -mmin -2
22.10分鐘內訪問的文件
find /home -amin -10
23.2小時內訪問的文件
find /home -atime -2
24.將find出來的東西拷到另外一個地方
find *.c -exec cp '{}' /tmp ';'
25.檢查/root目錄掛載在那個磁盤分區上
df -h /root
26.軟鏈接、硬連接
ln -s /home /root/home
ln -b /home/run.sh /root/run.sh
27.解壓到指定目錄
tar zxvf /filename.tar.zip -C /home
28.vi文書
gg第一行G最後一行
d1G刪除光標所在行到第一行
dG刪除光標所在行到最後一行
yy複製光標所在一行
A在光標所在最後字符處開始插入
ZZ保存退出
29.^M 亂碼
yum install dos2unix
30.修改linux登陸後信息
vi /etc/motd
31.定時任務腳本
cmd="cd /root/polling/bin/ && /root/polling/bin/run.sh" echo -n "* " >> /var/spool/cron/root echo -n "6 " >> /var/spool/cron/root echo -n "* " >> /var/spool/cron/root echo -n "* " >> /var/spool/cron/root echo -n "* " >> /var/spool/cron/root echo $cmd >> /var/spool/cron/root
32.組網信任
{ echo -e "\n" } | ssh-keygen -t rsa -P '' cp -r ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys cd ~/.ssh scp -r id_rsa.pub $ip:/root/.ssh/$ip ssh $ip 'touch ~/.ssh/authorized_keys && chmod 644 ~/.ssh/authorized_keys' ssh $ip "cat ~/.ssh/$ip >> ~/.ssh/authorized_keys"
33.關於shell入參處理
$0 腳本名字 $1 位置參數 #1 $2 - $9 位置參數 #2 - #9 ${10} 位置參數 #10 $# 位置參數的個數 "$*" 全部的位置參數(做爲單個字符串) * "$@" 全部的位置參數(每一個都做爲獨立的字符串) ${#*} 傳遞到腳本中的命令行參數的個數 ${#@} 傳遞到腳本中的命令行參數的個數 $? 返回值 $$ 腳本的進程ID(PID) $- 傳遞到腳本中的標誌(使用set) $_ 以前命令的最後一個參數 $! 運行在後臺的最後一個做業的進程ID(PID)
34.使用cut切分
echo 1:2:3 | cut -d ':' -f 2 echo 1:2:3 | awk -F ':' {'print $2'}
35.egrep擴展
cat 1.sh | grep -v 5 | grep -v 8 cat 1.sh | egrep -v '5|8' ls | egrep 'lsit1.sh|tools.sh' #能夠同時查找多個 egrep "go?d" tools.sh #?一個字符 * 多個字符
36.read命令帶描述
read -p "uname:" name
37.test命令
#判斷是否存在目錄/文件 test -e /home && echo ok || echo no [ "a" == "ad" ] && echo yes || echo no #判斷參數是否相等 test $a -eq $b && echo yes || echo no test $a != $b && echo yes || echo no -eq 相等 -ne 不相等 test "d" = "d" -o "a" = "d" && echo yes || echo no -o 並 -a 且
38.進程樹
ps -axjf
注:轉載請添加出處