shell編程代碼備忘

shell編程代碼備忘java

最近須要將服務器代碼天天定時的拷貝到遠程服務器中 因此須要寫個腳本python

filename=github-`date +%Y-%m-%d`.zip
zip -rq /git/backup/$filename /git/laborary  //將/git/laborary文件夾下的全部文件打成zip到/git/backup/目錄下
scp /git/backup/$filename root@192.168.102.201:/root/Downloads //遠程拷貝
rm -rf /git/backup/$filename
echo "開始備份文件......" `date`
filename=cdn-`date +%Y-%m-%d`.zip
zip -rq /data/backup/$filename /data/cdn

echo "文件備份成功......" `date`

 

寫一個定時任務用到crontabmysql

crontab -l;列出全部的cron job
crontab -e;進入編輯模式狀態
crontab -r;刪除當前任務

在crontab -e狀態下編輯以下:linux

20 15  * * * sh /git/backup.sh //天天下午15點20分執行backup.sh腳本
30 10  * * * sh /app1/release/startRelease.sh >>/app1/release/release.log 2>&1

#11月25日22:00分執行腳本
00 22 25 11 * sh /app1/release/startRelease.sh >>/app1/release/release.log 2>&1
crontab 表達式寫法

*  *  *  *  *
分 時 日 月 周

 

定時發佈任務git

#! /bin/sh
echo "開始拷貝文件到指定文件夾中..... 當前時間爲" `date`
cp -rf /app1/release/backup/test.war /app1/webapps

echo "文件拷貝成功..... 當前時間爲" `date`
echo "系統開始重啓..... 當前時間爲" `date`

/etc/init.d/jetty stop

ps -ef|grep jetty|grep -v grep

kill -9 $(ps -ef|grep jetty|grep -v grep|awk '{print $2}')

echo "開始發佈應用..... 當前時間爲" `date`

/etc/init.d/jetty start

echo "系統開始發佈應用中 " `date`

ps -ef|grep jetty|grep -v grep

sleep 30s

if [ $? -eq 0 ]
   then
     echo "jetty 應用重啓成功......"
fi

最終上線版本github

#! /bin/sh
echo "開始拷貝文件到指定文件夾中..... 當前時間爲" `date`
cp -rf /app1/web/mybase/release/backup/Mulberry/Mulberry.war /app1/web/mybase/webapps

echo "文件拷貝成功..... 當前時間爲" `date`
echo "系統開始重啓..... 當前時間爲" `date`

/etc/init.d/jetty stop

ps -ef|grep jetty|grep -v grep

sleep 1m

if [ $? -eq 0 ]
   then
     echo "jetty 進程未關閉......"

     echo "jetty 進程重試重啓系統中......"
     /etc/init.d/jetty stop
fi


echo "開始發佈應用..... 當前時間爲" `date`

/etc/init.d/jetty start

echo "系統開始發佈應用中 " `date`

ps -ef|grep jetty|grep -v grep

sleep 30s

if [ $? -eq 0 ]
   then
     echo "jetty 應用重啓成功......"
fi

 

備份數據庫web

import os
import time
import zipfile


db_host = "db_host"
db_user = "root"
db_passwd = "root"
db_name = "test"
db_charset = "utf8"
db_backup_name = r"/Users/Documents/documents/learning/git/backup/mysql_%s.sql" % (time.strftime("%Y%m%d%"))


zip_src = db_backup_name
zip_dest = zip_src + ".zip"


def zip_files():
    f = zipfile.ZipFile(zip_dest, 'w', zipfile.ZIP_DEFLATED)
    f.write(zip_src)
    f.close()


if __name__ == "__main__":
    print("start dump database.......");
    os.system("mysqldump -h%s -u%s -p%s %s --default_character-set=%s > %s" % (db_host, db_user, db_passwd, db_name, db_charset, db_backup_name))

    print("start zip files...")
    zip_files()
    print("success!")

 

python經常使用腳本sql

安裝軟件以下shell

import os
import sys

def installTomcat():
  os.system('rm -rf /usr/local/tomcat')
  os.system('cd /usr/local && mkdir tomcat')
  os.system('wget -q http://192.168.102.199/tools/apache-tomcat-template-9.0.0.zip -O /usr/local/tomcat/apache-tomcat-9.0.0.M1.zip')
  os.system('cd /usr/local/tomcat && unzip -q apache-tomcat-9.0.0.M1.zip')


def installZookeeper():
   result=os.popen('ls /usr/local').read()
   if result.find("zookeeper")==-1:
      os.system('cd /usr/local && mkdir zookeeper')
      os.system('wget -q http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz -O /usr/local/zookeeper/zookeeper-3.4.8.tar.gz')
      os.system('cd /usr/local/zookeeper && tar -zxvf zookeeper-3.4.8.tar.gz')

def installJdk():
    result=os.popen('ls /usr/local').read()
    if result.find("jdk")==-1:
        os.system('wget -q http://192.168.102.199/tools/jdk-8u72-linux-x64.tar.gz -O ~/jdk-8u72-linux-x64.tar.gz')
        os.system('cd /usr/local&& tar -zxf ~/jdk-8u72-linux-x64.tar.gz ')
        os.system('echo "export JAVA_HOME=/usr/local/jdk1.8.0_72" >> ~/.bashrc')
        os.system('echo "export PATH=\$JAVA_HOME/bin:\$PATH" >> ~/.bashrc')
        os.system('source ~/.bashrc')


def installActiveMQ():
   result=os.popen('ls /usr/local').read()
   if result.find("activeMQ")==-1:
      os.system('cd /usr/local && mkdir activeMQ')
      os.system('wget -q http://archive.apache.org/dist/activemq/5.14.1/apache-activemq-5.14.1-bin.zip -O /usr/local/activeMQ/apache-activemq-5.14.1-bin.zip')
      os.system('cd /usr/local/activeMQ && unzip -q apache-activemq-5.14.1-bin.zip')
      os.system('cd /usr/local/activeMQ/apache-activemq-5.14.1/bin && chmod 775 activemq')


installTomcat()
installZookeeper()
installJdk()
installActiveMQ()

 

#!/bin/env python
# coding: utf-8
import commands
import sys
import os
import re
import time

cmd=sys.argv[1]
project=sys.argv[2]


def closeTomcat():
        command = """ps -ef | grep -v grep | grep 'catalina.startup.Bootstrap start'|grep %s | awk '{print $2}'"""%project
        command_status,tomcat_pid=commands.getstatusoutput(command)
        if tomcat_pid != '':
                commands.getstatusoutput("kill -9 %s"%tomcat_pid)

def updateWar():
        os.system("rm -rf /usr/local/tomcat/%s/webapps/*"%project)
        os.system("mv /usr/local/tomcat/wars/%s.war /usr/local/tomcat/%s/webapps/ROOT.war"%(project,project))

def startTomcat():
        os.system("sh /usr/local/tomcat/%s/bin/startup.sh"%project)
        tomcat_logpath = "/usr/local/tomcat/%s/logs/catalina.out"%project
        log_tell = os.path.getsize(tomcat_logpath)
        old_time = echo_time = int(time.time())
        with open(tomcat_logpath, 'r') as fp:
                fp.seek(log_tell)
                while True:
                        line = fp.readline()
                        if not line:
                                time.sleep(0.1)
                                continue
                        print line
                        start_time = re.search(r'Server startup in (\d+) ms', line)
                        if start_time:
                                break
                        if int(time.time())-old_time>60:
                                print "time out"
                                break


if cmd=='deploy':
        closeTomcat()
        updateWar()
        startTomcat()

else:
        closeTomcat()
        startTomcat()

 

jenkins pre shell

cd $WORKSPACE/src/main/resources
rm -f application.properties
mv application_online.properties application.properties

Linux自動清理日誌文件數據庫

清理兩天前全部後綴是.log的文件

find /data/applogs/demo/logs/ -mtime +2 -name "app.log.*" -exec rm -rf {} \;
find /data/applogs/weixin-service/logs -mtime +2 -name "app.log.*" -exec rm -rf {} \;

具體參數說明:

  • find:linux的查找命令,用戶查找指定條件的文件;
  • /data/applogs/demo/logs/:想要進行清理的任意目錄;
  • -mtime:標準語句寫法;
  • +2:查找2天前的文件,這裏用數字表明天數;
  • "*.log":但願查找的數據類型,"*.jpg"表示查找擴展名爲jpg的全部文件,"*"表示查找全部文件,這個能夠靈活運用,觸類旁通;
  • -exec:固定寫法;
  • rm -rf:強制刪除文件,包括目錄;
  • {} \; :固定寫法,一對大括號+空格+\+; 
相關文章
相關標籤/搜索