国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

shell自動化腳本,啟動、停止應用程序

這篇具有很好參考價值的文章主要介紹了shell自動化腳本,啟動、停止應用程序。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

編寫腳本內(nèi)容如下:

#!/usr/bin/env bash

# 常量初始化
set_runtime_vars(){
    # 日期時間
    Now_Date=`date +"%Y-%m-%d %H:%M:%S"`
    
    # 服務狀態(tài)
    Service_Status=(
        "服務已開啟"
        "服務已停止"
    )
    
    # 動作狀態(tài)
    Action_Status=(
        "服務啟動成功"
        "服務停止成功"
        "服務啟動失敗"
        "服務停止失敗"
    )
    
    # 程序名稱
    App_Name=(
        "------Java-----"
        "------.Net-----"
        "------Node-----"
        "-----Python----"
        "------Web------"
        "--Java數(shù)據(jù)模擬--"
        "--.Net數(shù)據(jù)模擬--"
    )
    
    # 線程名稱
    Thread_Name=(
        "java -javaagent:/home/ymliu/Skywalking/Agent/demo_java_linux/ShinyAPM-agent/ShinyAPM-agent.jar -jar /home/ymliu/Skywalking/Agent/demo_java_linux/spring-boot-jpa-thymeleaf-curd-3.0.0.jar"  # java程序在線程中的名稱
        "dotnet demo2.dll --environment=Development"  # .net程序在線程中的名稱
        "node web.js"  # node程序在線程中的名稱
        "python manage.py runserver"  # python程序在線程中的名稱
        "dotnet demo_web.dll"  # web程序在線程中的名稱
        "DataGenerator.sh"  # Java數(shù)據(jù)模擬程序在線程中的名稱
        "python DataGenerator.py"  # .net數(shù)據(jù)模擬程序在線程中的名稱
    )
    
    # 日志文件
    File_Name=$Script_Dir/start.log
}

# 獲取線程數(shù)量
Get_Thread_Num(){
    thread_Name=$1
    num=`ps -ef | grep "${thread_Name}" | grep -v grep | wc -l`
}

# 獲取線程ID
Get_Thread_ID(){
    thread_Name=$1
    pid=`ps -ef | grep "${thread_Name}" | grep -v grep | awk '{print $2}'`
}

# 檢查Java服務狀態(tài)
Check_Java_Status(){
    Get_Thread_Num "${Thread_Name[0]}"
    Get_Thread_ID "${Thread_Name[0]}"
    
    if [[ $num > 0 && $pid!=null ]]; then
        echo "${App_Name[0]}${Service_Status[0]}"
    else
        echo "${App_Name[0]}${Service_Status[1]}"
    fi
}

# 檢查.net服務狀態(tài)
Check_Net_Status(){
    Get_Thread_Num "${Thread_Name[1]}"
    Get_Thread_ID "${Thread_Name[1]}"
    
    if [[ $num > 0 && $pid!=null ]]; then
        echo "${App_Name[1]}${Service_Status[0]}"
    else
        echo "${App_Name[1]}${Service_Status[1]}"
    fi
}

# 檢查node服務狀態(tài)
Check_Node_Status(){
    Get_Thread_Num "${Thread_Name[2]}"
    Get_Thread_ID "${Thread_Name[2]}"
    
    if [[ $num > 0 && $pid!=null ]]; then
        echo "${App_Name[2]}${Service_Status[0]}"
    else
        echo "${App_Name[2]}${Service_Status[1]}"
    fi
}

# 檢查python服務狀態(tài)
Check_Python_Status(){
    Get_Thread_Num "${Thread_Name[3]}"
    Get_Thread_ID "${Thread_Name[3]}"
    
    if [[ $num > 0 && $pid!=null ]]; then
        echo "${App_Name[3]}${Service_Status[0]}"
    else
        echo "${App_Name[3]}${Service_Status[1]}"
    fi
}

# 檢查web服務狀態(tài)
Check_Web_Status(){
    Get_Thread_Num "${Thread_Name[4]}"
    Get_Thread_ID "${Thread_Name[4]}"
    
    if [[ $num > 0 && $pid!=null ]]; then
        echo "${App_Name[4]}${Service_Status[0]}"
    else
        echo "${App_Name[4]}${Service_Status[1]}"
    fi
}

# 檢查Java數(shù)據(jù)模擬服務狀態(tài)
Check_JavaData_Status(){
    Get_Thread_Num "${Thread_Name[5]}"
    Get_Thread_ID "${Thread_Name[5]}"
    
    if [[ $num > 0 && $pid!=null ]]; then
        echo "${App_Name[5]}${Service_Status[0]}"
    else
        echo "${App_Name[5]}${Service_Status[1]}"
    fi
}

# 檢查.net數(shù)據(jù)模擬服務狀態(tài)
Check_NetData_Status(){
    Get_Thread_Num "${Thread_Name[6]}"
    Get_Thread_ID "${Thread_Name[6]}"
    
    if [[ $num > 0 && $pid!=null ]]; then
        echo "${App_Name[6]}${Service_Status[0]}"
    else
        echo "${App_Name[6]}${Service_Status[1]}"
    fi
}

# 啟動Java程序
Start_Java_App(){
    if [[ $(Check_Java_Status) == "${App_Name[0]}${Service_Status[0]}" ]]; then
        echo "${App_Name[0]}${Service_Status[0]}"
    else
        cd $Script_Dir/demo_java_linux
        nohup ./start.sh & # 啟動程序的命令
        Get_Thread_ID "${Thread_Name[0]}"
        if [[ $(Get_Thread_ID "${Thread_Name[0]}") != null ]]; then
            echo "${App_Name[0]}${Action_Status[0]}"
            echo "${Now_Date}:${App_Name[0]}應用服務啟動成功,線程ID=${pid}" >> $File_Name # 把時間、應用名稱寫入日志
        else
            echo "${App_Name[0]}${Action_Status[2]}"
            echo "${Now_Date}:${App_Name[0]}應用服務啟動失敗" >> $File_Name # 把時間、應用名稱寫入日志
        fi
    fi
}

# 啟動net程序
Start_Net_App(){
    if [[ $(Check_Net_Status) == "${App_Name[1]}${Service_Status[0]}" ]]; then
        echo "${App_Name[1]}${Service_Status[0]}"
    else
        cd $Script_Dir/demo_net_linux
        nohup ./start.sh & # 啟動程序的命令
        if [[ $(Get_Thread_ID "${Thread_Name[1]}") != null ]]; then
            echo "${App_Name[1]}${Action_Status[0]}"
            echo "${Now_Date}:${App_Name[1]}應用服務啟動成功,線程ID=${pid}" >> $File_Name # 把時間、應用名稱寫入日志
        else
            echo "${App_Name[1]}${Action_Status[2]}"
            echo "${Now_Date}:${App_Name[1]}應用服務啟動失敗" >> $File_Name # 把時間、應用名稱寫入日志
        fi
    fi
}

# 啟動node程序
Start_Node_App(){
    if [[ $(Check_Node_Status) == "${App_Name[2]}${Service_Status[0]}" ]]; then
        echo "${App_Name[2]}${Service_Status[0]}"
    else
        cd $Script_Dir/demo_node_linux
        nohup ./start.sh & # 啟動程序的命令
        if [[ $(Get_Thread_ID "${Thread_Name[2]}") != null ]]; then
            echo "${App_Name[2]}${Action_Status[0]}"
            echo "${Now_Date}:${App_Name[2]}應用服務啟動成功,線程ID=${pid}" >> $File_Name # 把時間、應用名稱寫入日志
        else
            echo "${App_Name[2]}${Action_Status[2]}"
            echo "${Now_Date}:${App_Name[2]}應用服務啟動失敗" >> $File_Name # 把時間、應用名稱寫入日志
        fi
    fi
}

# 啟動python程序
Start_Python_App(){
    if [[ $(Check_Python_Status) == "${App_Name[3]}${Service_Status[0]}" ]]; then
        echo "${App_Name[3]}${Service_Status[0]}"
    else
        cd $Script_Dir/demo_python/mysite
        source venv/bin/activate # 啟動python虛擬環(huán)境
        nohup ./feizhuru_start.sh & # 啟動程序的命令
        if [[ $(Get_Thread_ID "${Thread_Name[3]}") != null ]]; then
            echo "${App_Name[3]}${Action_Status[0]}"
            echo "${Now_Date}:${App_Name[3]}應用服務啟動成功,線程ID=${pid}" >> $File_Name # 把時間、應用名稱寫入日志
        else
            echo "${App_Name[3]}${Action_Status[2]}"
            echo "${Now_Date}:${App_Name[3]}應用服務啟動失敗" >> $File_Name # 把時間、應用名稱寫入日志
        fi
    fi
}

# 啟動web程序
Start_Demo_Web(){
    if [[ $(Check_Web_Status) == "${App_Name[4]}${Service_Status[0]}" ]]; then
        echo "${App_Name[4]}${Service_Status[0]}"
    else
        cd $Script_Dir/demo_web
        nohup ./start.sh & #啟動程序的命令
        if [[ $(Get_Thread_ID "${Thread_Name[4]}") != null ]]; then
            echo "${App_Name[4]}${Action_Status[0]}"
            echo "${Now_Date}:${App_Name[4]}應用服務啟動成功,線程ID=${pid}" >> $File_Name # 把時間、應用名稱寫入日志
        else
            echo "${App_Name[4]}${Action_Status[2]}"
            echo "${Now_Date}:${App_Name[4]}應用服務啟動失敗" >> $File_Name # 把時間、應用名稱寫入日志
        fi
    fi
}

# 啟動Java模擬數(shù)據(jù)程序
Start_Datagenerator_Bash_App(){
    if [[ $(Check_JavaData_Status) == "${App_Name[5]}${Service_Status[0]}" ]]; then
        echo "${App_Name[5]}${Service_Status[0]}"
    else
        cd $Script_Dir/ScriptFile/bash
        nohup ./DataGenerator.sh & # 啟動程序的命令
        if [[ $(Get_Thread_ID "${Thread_Name[5]}") != null ]]; then
            echo "${App_Name[5]}${Action_Status[0]}"
            echo "${Now_Date}:${App_Name[5]}應用服務啟動成功,線程ID=${pid}" >> $File_Name # 把時間、應用名稱寫入日志
        else
            echo "${App_Name[5]}${Action_Status[2]}"
            echo "${Now_Date}:${App_Name[5]}應用服務啟動失敗" >> $File_Name # 把時間、應用名稱寫入日志
        fi
    fi
}

# 啟動net模擬數(shù)據(jù)程序
Start_Datagenerator_Python_App(){
    if [[ $(Check_NetData_Status) == "${App_Name[6]}${Service_Status[0]}" ]]; then
        echo "${App_Name[6]}${Service_Status[0]}"
    else
        cd $Script_Dir/ScriptFile/python
        source venv/bin/activate
        nohup python DataGenerator.py & # 啟動程序的命令
        if [[ $(Get_Thread_ID "${Thread_Name[6]}") != null ]]; then
            echo "${App_Name[6]}${Action_Status[0]}"
            echo "${Now_Date}:${App_Name[6]}應用服務啟動成功,線程ID=${pid}" >> $File_Name # 把時間、應用名稱寫入日志
        else
            echo "${App_Name[6]}${Action_Status[2]}"
            echo "${Now_Date}:${App_Name[6]}應用服務啟動失敗" >> $File_Name # 把時間、應用名稱寫入日志
        fi
    fi
}

# 停止Java程序
Stop_Java_App(){
    if [[ $(Check_Java_Status) == "${App_Name[0]}${Service_Status[0]}" ]]; then
        Get_Thread_ID "${Thread_Name[0]}"
        kill -9 $pid
        if [[ $(Get_Thread_Num "${Thread_Name[0]}") > 0 && $(Get_Thread_ID "${Thread_Name[0]}") != null ]]; then
            echo "${App_Name[0]}${Action_Status[3]}"
            echo "${Now_Date}:${App_Name[0]}應用服務停止失敗,線程ID=${pid}" >> $File_Name # 把時間、應用名稱寫入日志
        else
            echo "${App_Name[0]}${Action_Status[1]}"
            echo "${Now_Date}:${App_Name[0]}應用服務停止成功" >> $File_Name # 把時間、應用名稱寫入日志
        fi
    else
        echo "${App_Name[0]}${Service_Status[1]}"
    fi
}

# 停止Net程序
Stop_Net_App(){
    if [[ $(Check_Net_Status) == "${App_Name[1]}${Service_Status[0]}" ]]; then
        Get_Thread_ID "${Thread_Name[1]}"
        kill -9 $pid
        if [[ $(Get_Thread_Num "${Thread_Name[1]}") > 0 && $(Get_Thread_ID "${Thread_Name[1]}") != null ]]; then
            echo "${App_Name[1]}${Action_Status[3]}"
            echo "${Now_Date}:${App_Name[1]}應用服務停止失敗,線程ID=${pid}" >> $File_Name # 把時間、應用名稱寫入日志
        else
            echo "${App_Name[1]}${Action_Status[1]}"
            echo "${Now_Date}:${App_Name[1]}應用服務停止成功" >> $File_Name # 把時間、應用名稱寫入日志
        fi
    else
        echo "${App_Name[1]}${Service_Status[1]}"
    fi
}

# 停止node程序
Stop_Node_App(){
    if [[ $(Check_Node_Status) == "${App_Name[2]}${Service_Status[0]}" ]]; then
        Get_Thread_ID "${Thread_Name[2]}"
        kill -9 $pid
        if [[ $(Get_Thread_Num "${Thread_Name[2]}") > 0 && $(Get_Thread_ID "${Thread_Name[2]}") != null ]]; then
            echo "${App_Name[2]}${Action_Status[3]}"
            echo "${Now_Date}:${App_Name[2]}應用服務停止失敗,線程ID=${pid}" >> $File_Name # 把時間、應用名稱寫入日志
        else
            echo "${App_Name[1]}${Action_Status[1]}"
            echo "${Now_Date}:${App_Name[2]}應用服務停止成功" >> $File_Name # 把時間、應用名稱寫入日志
        fi
    else
        echo "${App_Name[2]}${Service_Status[1]}"
    fi
}

# 停止python程序
Stop_Python_App(){
    if [[ $(Check_Python_Status) == "${App_Name[3]}${Service_Status[0]}" ]]; then
        Get_Thread_ID "${Thread_Name[3]}"
        kill -9 $pid
        if [[ $(Get_Thread_Num "${Thread_Name[3]}") > 0 && $(Get_Thread_ID "${Thread_Name[3]}") != null ]]; then
            echo "${App_Name[3]}${Action_Status[3]}"
            echo "${Now_Date}:${App_Name[3]}應用服務停止失敗,線程ID=${pid}" >> $File_Name # 把時間、應用名稱寫入日志
        else
            echo "${App_Name[3]}${Action_Status[1]}"
            echo "${Now_Date}:${App_Name[3]}應用服務停止成功" >> $File_Name # 把時間、應用名稱寫入日志
        fi
    else
        echo "${App_Name[3]}${Service_Status[1]}"
    fi
}

# 停止web程序
Stop_Demo_Web(){
    if [[ $(Check_Web_Status) == "${App_Name[4]}${Service_Status[0]}" ]]; then
        Get_Thread_ID "${Thread_Name[4]}"
        kill -9 $pid
        if [[ $(Get_Thread_Num "${Thread_Name[4]}") > 0 && $(Get_Thread_ID "${Thread_Name[4]}") != null ]]; then
            echo "${App_Name[4]}${Action_Status[3]}"
            echo "${Now_Date}:${App_Name[4]}應用服務停止失敗,線程ID=${pid}" >> $File_Name # 把時間、應用名稱寫入日志
        else
            echo "${App_Name[4]}${Action_Status[1]}"
            echo "${Now_Date}:${App_Name[4]}應用服務停止成功" >> $File_Name # 把時間、應用名稱寫入日志
        fi
    else
        echo "${App_Name[4]}${Service_Status[1]}"
    fi
}

# 停止Java模擬數(shù)據(jù)程序
Stop_Datagenerator_Bash_App(){
    if [[ $(Check_JavaData_Status) == "${App_Name[5]}${Service_Status[0]}" ]]; then
        Get_Thread_ID "${Thread_Name[5]}"
        kill -9 $pid
        if [[ $(Get_Thread_Num "${Thread_Name[5]}") > 0 && $(Get_Thread_ID "${Thread_Name[5]}") != null ]]; then
            echo "${App_Name[5]}${Action_Status[3]}"
            echo "${Now_Date}:${App_Name[5]}應用服務停止失敗,線程ID=${pid}" >> $File_Name # 把時間、應用名稱寫入日志
        else
            echo "${App_Name[5]}${Action_Status[1]}"
            echo "${Now_Date}:${App_Name[5]}應用服務停止成功" >> $File_Name # 把時間、應用名稱寫入日志
        fi
    else
        echo "${App_Name[5]}${Service_Status[1]}"
    fi
}

# 停止net模擬數(shù)據(jù)程序
Stop_Datagenerator_Python_App(){
    if [[ $(Check_NetData_Status) == "${App_Name[6]}${Service_Status[0]}" ]]; then
        Get_Thread_ID "${Thread_Name[6]}"
        kill -9 $pid
        if [[ $(Get_Thread_Num "${Thread_Name[6]}") > 0 && $(Get_Thread_ID "${Thread_Name[6]}") != null ]]; then
            echo "${App_Name[6]}${Action_Status[3]}"
            echo "${Now_Date}:${App_Name[6]}應用服務停止失敗,線程ID=${pid}" >> $File_Name # 把時間、應用名稱寫入日志
        else
            echo "${App_Name[6]}${Action_Status[1]}"
            echo "${Now_Date}:${App_Name[6]}應用服務停止成功" >> $File_Name # 把時間、應用名稱寫入日志
        fi
    else
        echo "${App_Name[6]}${Service_Status[1]}"
    fi
}

# 開啟程序
Start_All(){
    Start_Java_App
    Start_Net_App
    Start_Node_App
    Start_Python_App
    Start_Demo_Web
    Start_Datagenerator_Bash_App
    Start_Datagenerator_Python_App
}

# 結束程序
Stop_All(){
    Stop_Java_App
    Stop_Net_App
    Stop_Node_App
    Stop_Python_App
    Stop_Demo_Web
    Stop_Datagenerator_Bash_App
    Stop_Datagenerator_Python_App
}

# 狀態(tài)查詢
Status_All(){
    Check_Java_Status
    Check_Net_Status
    Check_Node_Status
    Check_Python_Status
    Check_Web_Status
    Check_JavaData_Status
    Check_NetData_Status
}

# 主函數(shù)
main(){
    # 程序初始化
    Script_Dir=$(
        cd $(dirname "$0") || exit
        pwd
    )
    
    set_runtime_vars
    
    Script_Param=$1
    case ${Script_Param} in
        "start")
            Start_All
        ;;
        "stop")
            Stop_All
        ;;
        "status")
            Status_All
        ;;
        *)
            echo "用法:startup.sh [選項]"
            echo "選項:[status: 狀態(tài)查詢] [start: 開啟服務] [stop: 停止服務]"
        ;;
    esac
}

main "$@"

腳本設置開機自啟動

將腳本添加到/etc/rc.local文件中

準確的講/etc下的rc.local文件是rc.d文件中rc.local文件的軟鏈接,找到rc.d下的rc.local文件,添加可執(zhí)行選項。如果沒有該文件可以自己創(chuàng)建。

touch rc.local
chmod +x ./rc.local

在/etc下創(chuàng)建rc.d下的rc.local文件的軟鏈接

ln -s /etc/rc.d/rc.local /etc/

將你需要開機自啟的腳本文件添加到rc.local文件中

sudo vi /etc/rc.local
# 要啟動的腳本的絕對路徑
# shell.name 是你的腳本文件名
# 腳本后面的start是啟動腳本需要的參數(shù),沒有可以不寫
/.../shell.name.sh start

檢查rc-local.service服務是否啟動

要想你的腳本文件開機自啟動還需要用到rc-local.service這個服務。

systemctl status rc-local.service

shell自動化腳本,啟動、停止應用程序文章來源地址http://www.zghlxwxcb.cn/news/detail-437240.html

重啟系統(tǒng)

sudo reboot

到了這里,關于shell自動化腳本,啟動、停止應用程序的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • ansible相比shell腳本自動化有什么優(yōu)勢

    Ansible自動化與Shell腳本自動化相比,具有以下幾個顯著的優(yōu)勢: 輕量級與無需代理 :Ansible的一個關鍵優(yōu)勢在于其輕量級和無需在被控制服務器上安裝任何代理或客戶端的特點。這極大地簡化了部署和維護的流程,降低了復雜性和出錯的可能性。而Shell腳本通常需要在每臺服

    2024年04月25日
    瀏覽(32)
  • Shell腳本入門實戰(zhàn):探索自動化任務與實用場景

    引言 Shell腳本作為一種強大的自動化工具,在現(xiàn)代操作系統(tǒng)中具有廣泛的應用。無論是簡單的文件操作,還是復雜的系統(tǒng)管理,Shell腳本都能提供高效、快速的解決方案。在本文中,我們將探索Shell腳本的基礎知識,并通過實戰(zhàn)場景示例,一起深入了解Shell腳本編程。 1. Shell腳

    2024年02月02日
    瀏覽(48)
  • DevOps自動化平臺開發(fā)之 Shell腳本執(zhí)行的封裝

    DevOps自動化平臺開發(fā)之 Shell腳本執(zhí)行的封裝

    基于如下技術棧開發(fā)DevOps平臺 Spring Boot Shell Ansible Git Gitlab Docker K8S Vue ?1、spring boot starter的封裝使用 2、Shell腳本的編寫 3、Ansible 腳本的編寫 4、Docker 的使用與封裝設計 本篇介紹如何使用Java封裝Linux命令和Shell腳本的使用 將其設計成spring boot starter maven依賴pom文件 具體的封裝

    2024年02月15日
    瀏覽(21)
  • 【Linux編程Shell自動化腳本】03 shell四劍客(find、sed、grep、awk)

    語法格式 參數(shù)說明 : path 是要查找的目錄路徑,可以是一個目錄或文件名,也可以是多個路徑,多個路徑之間用空格分隔,如果未指定路徑,則默認為當前目錄。 expression 是可選參數(shù),用于指定查找的條件,可以是文件名、文件類型、文件大小等等。 1. 常用expression 以下列出

    2024年02月09日
    瀏覽(27)
  • 簡單的Shell腳本實現(xiàn)自動化構建部署-適合前后端分離的小網(wǎng)站

    簡單的Shell腳本實現(xiàn)自動化構建部署-適合前后端分離的小網(wǎng)站

    大家在生活中經(jīng)常會自己寫一點小代碼。然后部署在公有云的服務器上。但是一般像阿里,騰訊等服務商,提供的機器內(nèi)存并不是很大。如果想裝入一個jenkins之類的服務,會比較占用CPU和內(nèi)存的資源。但是人手的部署又是比較麻煩的。所以我這里提供了一個思路,使用shell腳

    2023年04月16日
    瀏覽(29)
  • 通過dockerfile創(chuàng)建jar鏡像 + 自動化腳本啟動

    通過dockerfile創(chuàng)建jar鏡像 + 自動化腳本啟動

    dockerFile(里面包含向容器添加文件,創(chuàng)建文件夾,啟動命令等關鍵,可以根據(jù)實際靈活運用): ?文件位置: ? ?命令流程: ?可根據(jù)項目進行微調(diào) ?遇到坑: linux下執(zhí)行shell腳本報錯,大概率是文本在win下編輯復制過去的,由于存在linux不支持的換行符等,導致腳本無法執(zhí)

    2024年02月07日
    瀏覽(24)
  • Latex圖表制作:關于EPS文件轉(zhuǎn)PDF文件及PDF裁剪自動化的Shell腳本制作

    Latex圖表制作:關于EPS文件轉(zhuǎn)PDF文件及PDF裁剪自動化的Shell腳本制作

    很快就要步入研二了,在寫完一篇論文以后,即將進入第二篇論文寫作時,察覺到之前的一篇論文還有許多可以改進的地方,一個方面就是繪圖,一篇論文圖畫的好不好、能否吸引審稿人的眼球并獲得其青睞是一個值得琢磨的問題,而在這種收益和付出正相關的事情上,就更

    2024年02月09日
    瀏覽(27)
  • 【python】自動化ffmpeg推rtmp流 + 進程停止

    原因:ffmpeg命令可實現(xiàn)自動化推流,一般在執(zhí)行之后,由于python的自上而下執(zhí)行,后續(xù)代碼邏輯無法執(zhí)行 場景1: 需要給兩個rtmp地址輪詢推流,但希望視頻鏈接續(xù)上,即指定視頻文件的推流時間戳。 (AWS上同一個通道,HA支持兩個rtmp、同一個m3u8) 場景2: ffmpeg實現(xiàn)屏幕錄制,

    2024年02月03日
    瀏覽(19)
  • C#【自動化測試】對Windows桌面應用程序進行UI自動化測試

    C#【自動化測試】對Windows桌面應用程序進行UI自動化測試

    本文簡述如何利用appium對Windows桌面應用程序進行UI自動化測試。 所謂UI自動化測試,就是 模擬一個用戶,對應用程序的UI進行操作,以完成特定場景的功能性集成測試 。 要對Windows桌面應用程序進行UI自動化測試,目前可選的技術主要是兩種: VS自帶的CodedUI Test和Appium+WinApp

    2024年01月15日
    瀏覽(38)
  • windows桌面應用程序UI自動化工具

    WinApp(Windows APP)是運行在Windows操作系統(tǒng)上的應用程序,通常會提供一個可視的界面,用于和用戶交互。 例如運行在Windows系統(tǒng)上的Microsoft Office、PyCharm、Visual Studio Code、Chrome,都屬于WinApp。常見的WinApp,其擴展名基本都是*.exe,運行后也都會有一個漂亮、易用的UI界面,下面

    2024年02月11日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包