空間清理jenkins,linux清理空間


linux 空間清理

#發現有大量剛剛刪除文件的進程存在,kill掉進程(或者重啟進程)   OK
lsof | grep deleted


#循環檢測發現大目錄及其內的文件

du -h --max-depth=1 | sort  -gr




獲取大文件

到jenkins的家目錄

find . -type f   -size +100M
du -ah --max-depth=1
find . -type f   -size +100M  | wc  -l
find . -type f   -size +100M  -exec  rm -rf {} \;


du -sh .[!.]* * | sort -hr  #查看隱藏文件

find . -type f -size +800M  -print0 | xargs -0 du -h | sort -nr
du -hm --max-depth=2 | sort -nr | head -12  
du -h --max-depth=1




#######
###刪除操作
在jenkins工作路徑下/var/lib/jenkins
find . -type f   -size +200M   -name *.jar    -exec  rm -rf {} \;


構建工作區清理

插件 Workspace Cleanup Plugin
樣例配置:
構建前清理

構建后操作:

workspace 與job

構建工作區(workspace)

每一個構建(build)都需要一個workspace 目錄作為構建的工作區,執行job配置中指定的任務
默認情況下,構建工作區workspace是不會自動清理的,也就是說每一個job的build結束后,workspace被遺留在master或者slave對應的工作區目錄下,Jenkins的本意是為下次構建復用工作區目錄,這樣一些代碼下載,編譯等可以加速
可用Workspace Cleanup Plugin 清理

job 中保存的是項目是在 jenkins 上的配置、日志、構建結果等
workspace 就是工作目錄,一般就是 Down 下來的源代碼目錄(網頁打開的顯示工作目錄)

清理刪除job后的workspace

具體思路是:

遍歷jenkins節點的workspace,根據路徑解析獲得jenkins job name
如果該job不存在(通過python jenkinsapi實現),則刪除相應的workspace
暫不考慮自定義的workspace
需要在jenkins每個節點上進行處理(可以在jenkins上創建job,將job綁定到相應slave上;也可以在相應slave上直接運行腳本)


# -*- coding: utf-8 -*-
import os
import shutil
import logging
 
from jenkinsapi.jenkins import Jenkins
 
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__file__)
 
 
def get_jenkins_instance():
    jenkins_url = "http://jenkins.example.com"
    jenkins_username = "username"
    jenkins_password = "password"
    return Jenkins(jenkins_url, username=jenkins_username, password=jenkins_password)
 
 
def clean_workspace():
    jenkins_instance = get_jenkins_instance()
 
    jenkins_workspace_path = "/opt/JENKINS_HOME/workspace/"
 
    for dirpath, dirnames, filenames in os.walk(jenkins_workspace_path):
        if dirpath == jenkins_workspace_path:
            for dirname in dirnames:
                jenkins_job_name = dirname
                # 如果job被刪除,則清理相應的workspace
                if not jenkins_instance.has_job(jenkins_job_name):
                    logger.info("removing workspace dir of job:%s" % dirname)
                    shutil.rmtree(os.path.join(dirpath, dirname))
 
 
if __name__ == "__main__":
    clean_workspace()

未測試:來自 https://blog.csdn.net/weixin_34034261/article/details/91766530


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM