个人可以做商城网站吗平台推广文案

张小明 2025/12/31 12:46:10
个人可以做商城网站吗,平台推广文案,网站制作优化全包,谷歌浏览器安卓版下载spring boot中#xff0c;这是日志配置#xff1a; # spring 日志管理 logging:# 日志级别level:root: INFO# 日志文件file:name: logs/lims-server.log# 日志滚动策略#xff08;防止日志文件过大#xff09;logback:rollingpolicy:# 单个文件最大空间max-file-size: 10MB…spring boot中这是日志配置 # spring 日志管理 logging: # 日志级别 level: root: INFO # 日志文件 file: name: logs/lims-server.log # 日志滚动策略防止日志文件过大 logback: rollingpolicy: # 单个文件最大空间 max-file-size: 10MB # 日志文件保留天数 max-history: 300 # 限制日志文件包括历史归档文件的总存储容量当所有日志文件总大小超过设定值时自动删除最旧的归档日志 total-size-cap: 10GB 这是运行jar包的命令 REM 使用简单命令运行应用单行排版 start lims-server javaw -jar D:\LimsDeploy\lims-server\lims-server-1.0-SNAPSHOT.jar --server.port8085 运行环境是windows 11为什么程序运行后没有在对应目录中生成日志文件呢根据您提供的信息日志文件没有生成可能有以下几个原因1.相对路径问题最常见在Windows中使用start命令时工作目录可能不是您期望的目录。解决方案明确指定工作目录batcd /d D:\LimsDeploy\lims-server start lims-server javaw -jar lims-server-1.0-SNAPSHOT.jar --server.port8085或者直接指定完整日志路径yamllogging: file: name: D:/LimsDeploy/logs/lims-server.log # 使用绝对路径2.目录权限问题确保程序有在目标目录创建文件的权限。检查步骤手动创建D:\LimsDeploy\logs目录检查该目录是否有写入权限3.使用绝对路径启动推荐batREM 方案1先切换目录再启动 cd /d D:\LimsDeploy\lims-server start lims-server javaw -jar lims-server-1.0-SNAPSHOT.jar --server.port8085 REM 方案2在start命令中指定工作目录 start lims-server /D D:\LimsDeploy\lims-server javaw -jar lims-server-1.0-SNAPSHOT.jar --server.port80854.调试建议方案A添加调试信息查看当前目录在Spring Boot启动类中添加javaimport org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import javax.annotation.PostConstruct; import java.io.File; SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } PostConstruct public void init() { System.out.println(当前工作目录: System.getProperty(user.dir)); System.out.println(日志文件路径: new File(logs/lims-server.log).getAbsolutePath()); } }方案B临时改用控制台可见的方式运行batREM 去掉javaw和start直接运行查看日志 cd /d D:\LimsDeploy\lims-server java -jar lims-server-1.0-SNAPSHOT.jar --server.port8085方案C检查日志配置是否生效在application.yml中添加完整配置yamllogging: level: root: INFO org.springframework.web: INFO file: name: D:/LimsDeploy/logs/lims-server.log # 绝对路径 pattern: console: %d{yyyy-MM-dd HH:mm:ss} - %msg%n file: %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n logback: rollingpolicy: max-file-size: 10MB max-history: 300 total-size-cap: 10GB5.快速验证脚本创建一个run.bat文件batecho off echo 当前目录: %cd% echo 正在启动应用... REM 确保日志目录存在 if not exist logs mkdir logs REM 切换到jar包所在目录 cd /d D:\LimsDeploy\lims-server echo 工作目录已切换到: %cd% echo 日志将生成在: %cd%\logs\lims-server.log REM 启动应用 start lims-server javaw -jar lims-server-1.0-SNAPSHOT.jar --server.port8085 echo 应用已启动请检查日志文件 pause最可能的解决方案直接将您的启动命令改为batcd /d D:\LimsDeploy\lims-server start lims-server javaw -jar lims-server-1.0-SNAPSHOT.jar --server.port8085或者在配置文件中使用绝对路径yamllogging: file: name: D:/LimsDeploy/lims-server/logs/lims-server.log请尝试上述方案通常相对路径问题是最常见的原因。start lims-server javaw -jar D:\LimsDeploy\lims-server\lims-server-1.0-SNAPSHOT.jar --server.port8085 我不是已经指定绝对路径了吗您说得对您确实在启动命令中指定了jar包的绝对路径但这里有个关键区别需要理解核心问题工作目录 vs 可执行文件路径当您使用start lims-server javaw -jar D:\LimsDeploy\lims-server\lims-server-1.0-SNAPSHOT.jar时jar包的路径是绝对路径- 没错但工作目录Current Working Directory没有指定- 这是问题所在日志文件路径logs/lims-server.log是相对路径它相对于工作目录而不是jar包所在目录实际发生的情况text# 假设您在 C:\Users\YourName 目录下执行命令 当前工作目录: C:\Users\YourName # 您的命令 start lims-server javaw -jar D:\LimsDeploy\lims-server\lims-server-1.0-SNAPSHOT.jar # 结果 # 1. Java进程从 D:\LimsDeploy\lims-server\lims-server-1.0-SNAPSHOT.jar 启动 # 2. 但工作目录仍是 C:\Users\YourName # 3. 日志文件将创建在C:\Users\YourName\logs\lims-server.log验证方法方法1查看日志文件可能在哪里在命令提示符中运行batchecho %cd%查看当前目录然后去这个目录的logs子文件夹中找。方法2使用PowerShell查找日志文件powershell# 在整个D盘搜索日志文件 Get-ChildItem -Path D:\ -Filter lims-server.log -Recurse -ErrorAction SilentlyContinue # 或者在C盘搜索 Get-ChildItem -Path C:\ -Filter lims-server.log -Recurse -ErrorAction SilentlyContinue -Depth 3解决方案任选其一方案1指定工作目录推荐batchstart lims-server /D D:\LimsDeploy\lims-server javaw -jar lims-server-1.0-SNAPSHOT.jar --server.port8085注意这里jar包路径改为了相对路径因为工作目录已经切换到jar所在目录。方案2先切换目录再启动batchcd /d D:\LimsDeploy\lims-server start lims-server javaw -jar lims-server-1.0-SNAPSHOT.jar --server.port8085方案3在配置文件中使用绝对路径yamllogging: file: name: D:/LimsDeploy/lims-server/logs/lims-server.log # 绝对路径方案4修改启动脚本显式设置工作目录batchecho off REM 保存为 run.bat REM 切换到jar包目录 pushd D:\LimsDeploy\lims-server REM 启动应用 start lims-server javaw -jar lims-server-1.0-SNAPSHOT.jar --server.port8085 REM 返回原目录 popd快速测试命令要立即验证可以运行这个命令查看当前工作目录batchstart test javaw -version然后在任务管理器中找到javaw.exe进程右键查看属性可以看到起始位置工作目录。总结根本原因您指定了jar包的绝对路径但日志文件的相对路径logs/lims-server.log是相对于进程启动时的工作目录而这个工作目录默认是执行start命令时的当前目录不是jar包所在目录。最简单的修复使用/D参数指定工作目录batchstart lims-server /D D:\LimsDeploy\lims-server javaw -jar lims-server-1.0-SNAPSHOT.jar --server.port8085这样日志文件就会生成在D:\LimsDeploy\lims-server\logs\lims-server.log。终于找到我的日志文件了Get-ChildItem -Path C:\ -Filter lims-server.log -Recurse -ErrorAction SilentlyContinue -Depth 3修改后运行脚本果然日志就出来了那这条命令又如何修改指定工作目录呢 start lims-server javaw -Djdk.tls.client.protocolsTLSv1 -Djsse.enableSNIExtensionfalse -Djdk.tls.allowUnsafeServerCertChangetrue -jar D:\LimsDeploy\lims-server\lims-server-1.0-SNAPSHOT.jar --server.port8085您可以在start命令中使用/D参数来指定工作目录修改后的命令如下修改后的命令batchstart lims-server /D D:\LimsDeploy\lims-server javaw -Djdk.tls.client.protocolsTLSv1 -Djsse.enableSNIExtensionfalse -Djdk.tls.allowUnsafeServerCertChangetrue -jar lims-server-1.0-SNAPSHOT.jar --server.port8085说明添加了/D D:\LimsDeploy\lims-server这个参数指定了Java进程的工作目录工作目录会被设置为D:\LimsDeploy\lims-server简化了jar包路径因为工作目录已经切换到jar包所在目录所以可以使用相对路径lims-server-1.0-SNAPSHOT.jar当然您也可以继续使用绝对路径batchstart lims-server /D D:\LimsDeploy\lims-server javaw -Djdk.tls.client.protocolsTLSv1 -Djsse.enableSNIExtensionfalse -Djdk.tls.allowUnsafeServerCertChangetrue -jar D:\LimsDeploy\lims-server\lims-server-1.0-SNAPSHOT.jar --server.port8085完整命令结构说明textstart 窗口标题 /D 工作目录路径 可执行文件 [参数...]应用到您的命令lims-server- 窗口标题对javaw无窗口应用来说只是个标识/D D:\LimsDeploy\lims-server- 指定工作目录javaw- 可执行程序-Djdk.tls.client.protocolsTLSv1 ...- JVM参数-jar lims-server-1.0-SNAPSHOT.jar- 运行jar包--server.port8085- Spring Boot应用参数创建批处理文件推荐为了避免每次手动输入长命令建议创建一个批处理文件start-lims.batbatchecho off echo 正在启动LIMS服务器... echo 工作目录: D:\LimsDeploy\lims-server echo 日志文件: D:\LimsDeploy\lims-server\logs\lims-server.log start lims-server /D D:\LimsDeploy\lims-server javaw ^ -Djdk.tls.client.protocolsTLSv1 ^ -Djsse.enableSNIExtensionfalse ^ -Djdk.tls.allowUnsafeServerCertChangetrue ^ -jar lims-server-1.0-SNAPSHOT.jar ^ --server.port8085 echo 应用已启动请检查日志文件 pause验证工作目录是否生效您可以在Spring Boot应用中添加一个简单的验证javaimport org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; import java.io.File; Component public class StartupCheck implements CommandLineRunner { Override public void run(String... args) throws Exception { System.out.println(当前工作目录: new File(.).getAbsolutePath()); System.out.println(期望日志路径: new File(logs/lims-server.log).getAbsolutePath()); } }备选方案设置日志绝对路径如果您不想修改启动命令也可以在application.yml中配置绝对路径yamllogging: file: name: D:/LimsDeploy/lims-server/logs/lims-server.log这样无论工作目录是什么日志都会生成在指定位置。最终建议使用这个修改后的命令日志文件就会生成在正确的位置batchstart lims-server /D D:\LimsDeploy\lims-server javaw -Djdk.tls.client.protocolsTLSv1 -Djsse.enableSNIExtensionfalse -Djdk.tls.allowUnsafeServerCertChangetrue -jar lims-server-1.0-SNAPSHOT.jar --server.port8085那这条命令又如何修改指定工作目录 :: 使用 JVM 参数运行应用多行排版 :: 1、使用 ^ 符号将长命令分解为多行提高易读性 :: 2、增加防御性编程路径使用引号包裹避免空格或特殊字符问题 start lims-server javaw ^ -Djdk.tls.client.protocolsTLSv1 ^ -Djsse.enableSNIExtensionfalse ^ -Djdk.tls.allowUnsafeServerCertChangetrue ^ -jar D:\LimsDeploy\lims-server\lims-server-1.0-SNAPSHOT.jar ^ --server.port8085修改后的命令batch:: 使用 JVM 参数运行应用多行排版 :: 1、使用 ^ 符号将长命令分解为多行提高易读性 :: 2、增加防御性编程路径使用引号包裹避免空格或特殊字符问题 start lims-server /D D:\LimsDeploy\lims-server javaw ^ -Djdk.tls.client.protocolsTLSv1 ^ -Djsse.enableSNIExtensionfalse ^ -Djdk.tls.allowUnsafeServerCertChangetrue ^ -jar lims-server-1.0-SNAPSHOT.jar ^ --server.port8085关键修改点添加了/D D:\LimsDeploy\lims-server在lims-server窗口标题之后在javaw命令之前简化了jar包路径由于工作目录已经切换到D:\LimsDeploy\lims-serverjar包路径可以改为相对路径lims-server-1.0-SNAPSHOT.jar如果仍想使用绝对路径batch:: 使用 JVM 参数运行应用多行排版 :: 1、使用 ^ 符号将长命令分解为多行提高易读性 :: 2、增加防御性编程路径使用引号包裹避免空格或特殊字符问题 start lims-server /D D:\LimsDeploy\lims-server javaw ^ -Djdk.tls.client.protocolsTLSv1 ^ -Djsse.enableSNIExtensionfalse ^ -Djdk.tls.allowUnsafeServerCertChangetrue ^ -jar D:\LimsDeploy\lims-server\lims-server-1.0-SNAPSHOT.jar ^ --server.port8085最佳实践创建批处理文件建议创建一个专门的启动脚本start-server.batbatchecho off chcp 65001 nul echo echo LIMS Server 启动脚本 echo echo. REM 设置工作目录和JAR路径 set WORK_DIRD:\LimsDeploy\lims-server set JAR_NAMElims-server-1.0-SNAPSHOT.jar set PORT8085 REM 检查JAR文件是否存在 if not exist %WORK_DIR%\%JAR_NAME% ( echo [错误] 未找到JAR文件: %WORK_DIR%\%JAR_NAME% pause exit /b 1 ) REM 检查是否已存在该进程 tasklist /FI WINDOWTITLE eq lims-server* 2nul | find /I javaw.exe nul if not errorlevel 1 ( echo [警告] 检测到LIMS Server已在运行 echo 是否要强制重启(Y/N) set /p choice if /i %choice%Y ( echo 正在停止现有进程... taskkill /FI WINDOWTITLE eq lims-server* /F nul 21 timeout /t 3 /nobreak nul ) else ( echo 启动已取消 pause exit /b 0 ) ) REM 确保日志目录存在 if not exist %WORK_DIR%\logs mkdir %WORK_DIR%\logs echo [信息] 工作目录: %WORK_DIR% echo [信息] JAR文件: %JAR_NAME% echo [信息] 服务端口: %PORT% echo [信息] 日志文件: %WORK_DIR%\logs\lims-server.log echo. REM 启动服务 echo 正在启动LIMS Server... start lims-server /D %WORK_DIR% javaw ^ -Djdk.tls.client.protocolsTLSv1 ^ -Djsse.enableSNIExtensionfalse ^ -Djdk.tls.allowUnsafeServerCertChangetrue ^ -jar %JAR_NAME% ^ --server.port%PORT% echo. echo echo LIMS Server 启动成功 echo 请检查日志文件 echo %WORK_DIR%\logs\lims-server.log echo echo. echo 按任意键退出此窗口... pause nul命令结构说明textstart 窗口标题 /D 工作目录 可执行程序 [参数]在您的多行排版命令中start- 启动新进程的命令lims-server- 进程窗口的标题/D D:\LimsDeploy\lims-server- 指定工作目录javaw- Java无控制台窗口版本-D...- JVM系统属性参数-jar lims-server-1.0-SNAPSHOT.jar- 要运行的jar文件--server.port8085- Spring Boot应用参数验证修改是否生效您可以在Spring Boot应用中添加以下代码来验证工作目录javaimport org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; import java.io.File; Component public class WorkDirChecker implements ApplicationRunner { Override public void run(ApplicationArguments args) { File currentDir new File(.); File logFile new File(logs/lims-server.log); System.out.println( 工作目录检查 ); System.out.println(当前工作目录: currentDir.getAbsolutePath()); System.out.println(期望的日志文件路径: logFile.getAbsolutePath()); System.out.println(工作目录是否存在: currentDir.exists()); System.out.println(日志文件是否存在: logFile.exists()); System.out.println(); } }使用修改后的命令日志文件一定会生成在D:\LimsDeploy\lims-server\logs\lims-server.log。请参考这个 建议创建一个专门的启动脚本 start-server.bat batch echo off chcp 65001 nul echo echo LIMS Server 启动脚本 echo echo. REM 设置工作目录和JAR路径 set WORK_DIRD:\LimsDeploy\lims-server set JAR_NAMElims-server-1.0-SNAPSHOT.jar set PORT8085 REM 检查JAR文件是否存在 if not exist %WORK_DIR%\%JAR_NAME% ( echo [错误] 未找到JAR文件: %WORK_DIR%\%JAR_NAME% pause exit /b 1 ) REM 检查是否已存在该进程 tasklist /FI WINDOWTITLE eq lims-server* 2nul | find /I javaw.exe nul if not errorlevel 1 ( echo [警告] 检测到LIMS Server已在运行 echo 是否要强制重启(Y/N) set /p choice if /i %choice%Y ( echo 正在停止现有进程... taskkill /FI WINDOWTITLE eq lims-server* /F nul 21 timeout /t 3 /nobreak nul ) else ( echo 启动已取消 pause exit /b 0 ) ) REM 确保日志目录存在 if not exist %WORK_DIR%\logs mkdir %WORK_DIR%\logs echo [信息] 工作目录: %WORK_DIR% echo [信息] JAR文件: %JAR_NAME% echo [信息] 服务端口: %PORT% echo [信息] 日志文件: %WORK_DIR%\logs\lims-server.log echo. REM 启动服务 echo 正在启动LIMS Server... start lims-server /D %WORK_DIR% javaw ^ -Djdk.tls.client.protocolsTLSv1 ^ -Djsse.enableSNIExtensionfalse ^ -Djdk.tls.allowUnsafeServerCertChangetrue ^ -jar %JAR_NAME% ^ --server.port%PORT% echo. echo echo LIMS Server 启动成功 echo 请检查日志文件 echo %WORK_DIR%\logs\lims-server.log echo echo. echo 按任意键退出此窗口... pause nul 重构编写一个.cmd的命令行脚本文件LIMS Server 启动脚本 (start-server.cmd)cmdecho off chcp 65001 nul title LIMS Server 启动管理 echo echo LIMS Server 启动脚本 v1.0 echo echo. REM *************************** REM * 配置参数区 - 请根据需要修改 * REM *************************** set WORK_DIRD:\LimsDeploy\lims-server set JAR_NAMElims-server-1.0-SNAPSHOT.jar set PORT8085 set APP_TITLElims-server set LOG_DIRlogs set LOG_FILE%WORK_DIR%\%LOG_DIR%\lims-server.log REM *************************** REM * JVM 参数配置 * REM *************************** set JVM_OPTS-Djdk.tls.client.protocolsTLSv1 -Djsse.enableSNIExtensionfalse -Djdk.tls.allowUnsafeServerCertChangetrue set APP_OPTS--server.port%PORT% REM *************************** REM * 检查环境 * REM *************************** :CHECK_ENV echo [1/5] 检查运行环境... REM 检查Java是否安装 where java nul 21 if %errorlevel% neq 0 ( echo [错误] 未检测到Java环境请先安装JDK! pause exit /b 1 ) echo [√] Java环境检测通过 REM 检查JAR文件是否存在 if not exist %WORK_DIR%\%JAR_NAME% ( echo [错误] 未找到JAR文件: echo %WORK_DIR%\%JAR_NAME% pause exit /b 1 ) echo [√] JAR文件检测通过 REM *************************** REM * 检查进程状态 * REM *************************** :CHECK_PROCESS echo [2/5] 检查进程状态... set PROCESS_RUNNING0 for /f tokens2 delims, %%a in (tasklist /fi imagename eq javaw.exe /fo csv /nh 2^nul) do ( for /f tokens1 delims, %%b in (wmic process where processid%%~a get commandline /value 2^nul ^| findstr /i %JAR_NAME%) do ( set PROCESS_RUNNING1 ) ) if %PROCESS_RUNNING% equ 1 ( echo [警告] 检测到LIMS Server已在运行 echo. echo 请选择操作: echo 1. 强制重启服务 echo 2. 仅启动新实例 echo 3. 退出脚本 echo. set /p CHOICE请输入选项 (1/2/3): if %CHOICE%1 ( echo 正在停止现有进程... for /f tokens2 delims, %%a in (tasklist /fi imagename eq javaw.exe /fo csv /nh 2^nul) do ( for /f tokens1 delims, %%b in (wmic process where processid%%~a get commandline /value 2^nul ^| findstr /i %JAR_NAME%) do ( taskkill /pid %%a /f nul 21 echo 已停止进程 PID: %%a ) ) timeout /t 2 /nobreak nul goto :PREPARE_START ) else if %CHOICE%2 ( echo 启动新实例... goto :PREPARE_START ) else ( echo 启动已取消 pause exit /b 0 ) ) else ( echo [√] 未检测到运行中的实例 ) :PREPARE_START REM *************************** REM * 准备启动 * REM *************************** echo [3/5] 准备启动环境... REM 确保工作目录存在 if not exist %WORK_DIR% ( echo [信息] 创建工作目录: %WORK_DIR% mkdir %WORK_DIR% ) REM 确保日志目录存在 if not exist %WORK_DIR%\%LOG_DIR% ( echo [信息] 创建日志目录: %WORK_DIR%\%LOG_DIR% mkdir %WORK_DIR%\%LOG_DIR% ) REM 显示配置信息 echo [4/5] 显示启动配置... echo. echo 工作目录: %WORK_DIR% echo JAR文件: %JAR_NAME% echo 服务端口: %PORT% echo 日志文件: %LOG_FILE% echo JVM参数: %JVM_OPTS% echo. echo [注意] 日志文件将在首次日志输出后创建 echo. REM *************************** REM * 启动服务 * REM *************************** echo [5/5] 正在启动LIMS Server... echo. REM 切换到工作目录 pushd %WORK_DIR% REM 启动服务 (使用多行排版提高可读性) start %APP_TITLE% /D %WORK_DIR% javaw ^ %JVM_OPTS% ^ -jar %JAR_NAME% ^ %APP_OPTS% REM 返回原始目录 popd REM *************************** REM * 启动后处理 * REM *************************** echo. echo echo LIMS Server 启动命令已执行! echo echo. echo [启动信息] echo • 进程标题: %APP_TITLE% echo • 启动时间: %date% %time% echo • 工作目录: %WORK_DIR% echo • 日志路径: %LOG_FILE% echo. echo [操作指南] echo • 查看进程: tasklist | findstr javaw echo • 查看日志: type %LOG_FILE% | more echo • 实时日志: tail -f %LOG_FILE% echo. echo [注意事项] echo 1. 首次启动时日志文件将在首次日志输出后创建 echo 2. 如启动失败请检查JAR文件是否完整 echo 3. 如需修改配置请编辑本脚本文件 echo. REM 等待用户查看信息 choice /c YN /n /m 是否现在打开日志目录? (Y/N): if %errorlevel% equ 1 ( if exist %WORK_DIR%\%LOG_DIR% ( explorer %WORK_DIR%\%LOG_DIR% ) ) echo. echo 按任意键退出... pause nul exit /b 0 REM *************************** REM * 脚本结束 * REM ***************************配套工具脚本 (辅助功能)您也可以创建一个单独的辅助脚本lims-tools.cmdcmdecho off chcp 65001 nul title LIMS Server 工具集 :MAIN_MENU cls echo echo LIMS Server 管理工具集 v1.0 echo echo. echo 请选择操作: echo 1. 启动服务器 echo 2. 停止服务器 echo 3. 查看服务器状态 echo 4. 查看实时日志 echo 5. 查看日志目录 echo 6. 清理旧日志 echo 7. 备份日志 echo 8. 退出 echo. set /p CHOICE请选择 (1-8): if %CHOICE%1 ( call start-server.cmd goto :MAIN_MENU ) else if %CHOICE%2 ( call :STOP_SERVER goto :MAIN_MENU ) else if %CHOICE%3 ( call :CHECK_STATUS goto :MAIN_MENU ) else if %CHOICE%4 ( call :VIEW_LOG goto :MAIN_MENU ) else if %CHOICE%5 ( call :OPEN_LOG_DIR goto :MAIN_MENU ) else if %CHOICE%6 ( call :CLEAN_LOGS goto :MAIN_MENU ) else if %CHOICE%7 ( call :BACKUP_LOGS goto :MAIN_MENU ) else if %CHOICE%8 ( exit /b 0 ) else ( echo 无效选择请重新输入! timeout /t 2 /nobreak nul goto :MAIN_MENU ) :STOP_SERVER echo. echo [停止服务器] set JAR_NAMElims-server-1.0-SNAPSHOT.jar set FOUND0 for /f tokens2 delims, %%a in (tasklist /fi imagename eq javaw.exe /fo csv /nh 2^nul) do ( for /f tokens1 delims, %%b in (wmic process where processid%%~a get commandline /value 2^nul ^| findstr /i %JAR_NAME%) do ( echo 找到进程 PID: %%a set FOUND1 taskkill /pid %%a /f nul 21 if errorlevel 1 ( echo 停止进程失败: %%a ) else ( echo 成功停止进程: %%a ) ) ) if %FOUND% equ 0 ( echo 未找到运行的LIMS Server进程 ) timeout /t 2 /nobreak nul exit /b :CHECK_STATUS echo. echo [服务器状态] set JAR_NAMElims-server-1.0-SNAPSHOT.jar set FOUND0 for /f tokens2 delims, %%a in (tasklist /fi imagename eq javaw.exe /fo csv /nh 2^nul) do ( for /f tokens1 delims, %%b in (wmic process where processid%%~a get commandline /value 2^nul ^| findstr /i %JAR_NAME%) do ( echo [运行中] PID: %%a wmic process where processid%%a get CommandLine /value | findstr /v ^$ echo. set FOUND1 ) ) if %FOUND% equ 0 ( echo [已停止] 未检测到运行中的LIMS Server ) echo 按任意键继续... pause nul exit /b :VIEW_LOG echo. echo [查看实时日志 - 按 CtrlC 退出] set LOG_FILED:\LimsDeploy\lims-server\logs\lims-server.log if not exist %LOG_FILE% ( echo 日志文件不存在: %LOG_FILE% echo 请确认服务器已启动并产生日志输出 pause exit /b ) echo 正在监视日志文件: %LOG_FILE% echo. timeout /t 1 /nobreak nul REM 使用 PowerShell 实现 tail -f 功能 powershell -Command Get-Content %LOG_FILE% -Wait -Tail 50 exit /b :OPEN_LOG_DIR echo. echo [打开日志目录] set LOG_DIRD:\LimsDeploy\lims-server\logs if exist %LOG_DIR% ( explorer %LOG_DIR% ) else ( echo 日志目录不存在: %LOG_DIR% pause ) exit /b :CLEAN_LOGS echo. echo [清理旧日志] set LOG_DIRD:\LimsDeploy\lims-server\logs if not exist %LOG_DIR% ( echo 日志目录不存在: %LOG_DIR% pause exit /b ) echo 将删除30天前的日志文件 echo 按任意键继续或按 CtrlC 取消... pause nul forfiles /p %LOG_DIR% /s /m *.log /d -30 /c cmd /c echo 删除 file del file forfiles /p %LOG_DIR% /s /m *.gz /d -30 /c cmd /c echo 删除 file del file forfiles /p %LOG_DIR% /s /m *.zip /d -30 /c cmd /c echo 删除 file del file echo 清理完成! timeout /t 2 /nobreak nul exit /b :BACKUP_LOGS echo. echo [备份日志] set LOG_DIRD:\LimsDeploy\lims-server\logs set BACKUP_DIRD:\LimsDeploy\backup set BACKUP_NAMElogs_%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%.zip if not exist %LOG_DIR% ( echo 日志目录不存在: %LOG_DIR% pause exit /b ) if not exist %BACKUP_DIR% mkdir %BACKUP_DIR% echo 正在备份日志到: %BACKUP_DIR%\%BACKUP_NAME% REM 使用 PowerShell 创建 ZIP 压缩包 powershell -Command Compress-Archive -Path %LOG_DIR%\* -DestinationPath %BACKUP_DIR%\%BACKUP_NAME% -Force if exist %BACKUP_DIR%\%BACKUP_NAME% ( echo 备份成功: %BACKUP_DIR%\%BACKUP_NAME% ) else ( echo 备份失败! ) pause exit /b使用说明1. 主启动脚本 (start-server.cmd)提供完整的启动流程智能检测进程状态清晰的配置信息显示灵活的进程管理选项2. 工具集脚本 (lims-tools.cmd)提供完整的服务器管理功能支持启动、停止、状态检查提供日志查看和清理功能包含日志备份功能3. 部署步骤将两个脚本文件保存到D:\LimsDeploy\目录根据需要修改脚本中的配置参数运行start-server.cmd启动服务或运行lims-tools.cmd使用完整管理功能4. 配置项说明WORK_DIR: 工作目录 (jar包所在目录)JAR_NAME: jar包文件名PORT: 服务端口APP_TITLE: 进程窗口标题LOG_DIR: 日志目录名称JVM_OPTS: JVM启动参数APP_OPTS: 应用启动参数这个.cmd脚本提供了比原.bat脚本更完善的错误处理、进程管理和用户交互功能。请把最后这个.cmd脚本方案重构一个适用于Linux环境的脚本Linux 环境下的 LIMS Server 管理脚本1. 主启动脚本 (start-server.sh)bash#!/bin/bash # # LIMS Server 启动脚本 v1.0 (Linux版本) # # 定义颜色输出 RED\033[0;31m GREEN\033[0;32m YELLOW\033[1;33m BLUE\033[0;34m NC\033[0m # No Color # 打印彩色消息函数 print_info() { echo -e ${BLUE}[信息]${NC} $1; } print_success() { echo -e ${GREEN}[成功]${NC} $1; } print_warning() { echo -e ${YELLOW}[警告]${NC} $1; } print_error() { echo -e ${RED}[错误]${NC} $1; } # 配置参数 WORK_DIR/opt/lims-server JAR_NAMElims-server-1.0-SNAPSHOT.jar PORT8085 APP_NAMElims-server LOG_DIRlogs LOG_FILE${WORK_DIR}/${LOG_DIR}/lims-server.log PID_FILE${WORK_DIR}/${APP_NAME}.pid CONSOLE_LOG${WORK_DIR}/${LOG_DIR}/console.log # JVM 参数 JVM_OPTS-Djdk.tls.client.protocolsTLSv1 -Djsse.enableSNIExtensionfalse -Djdk.tls.allowUnsafeServerCertChangetrue APP_OPTS--server.port${PORT} # 检查运行环境 check_environment() { print_info 检查运行环境... # 检查Java是否安装 if ! command -v java /dev/null; then print_error 未检测到Java环境请先安装JDK! exit 1 fi print_success Java环境检测通过 # 检查JAR文件是否存在 if [ ! -f ${WORK_DIR}/${JAR_NAME} ]; then print_error 未找到JAR文件: ${WORK_DIR}/${JAR_NAME} exit 1 fi print_success JAR文件检测通过 } # 检查进程状态 check_process() { if [ -f ${PID_FILE} ]; then local pid$(cat ${PID_FILE}) if ps -p ${pid} /dev/null 21; then return 0 # 进程正在运行 else # 进程文件存在但进程不存在清理pid文件 rm -f ${PID_FILE} return 1 fi fi return 1 # 进程未运行 } # 停止进程 stop_process() { if [ -f ${PID_FILE} ]; then local pid$(cat ${PID_FILE}) print_info 正在停止进程 (PID: ${pid})... # 发送SIGTERM信号 kill -15 ${pid} 2/dev/null # 等待最多10秒 local count0 while [ ${count} -lt 10 ]; do if ps -p ${pid} /dev/null 21; then sleep 1 count$((count 1)) else rm -f ${PID_FILE} print_success 进程已停止 return 0 fi done # 强制终止 kill -9 ${pid} 2/dev/null rm -f ${PID_FILE} print_warning 进程已强制终止 fi return 0 } # 准备启动环境 prepare_environment() { print_info 准备启动环境... # 创建工作目录 if [ ! -d ${WORK_DIR} ]; then mkdir -p ${WORK_DIR} print_info 创建工作目录: ${WORK_DIR} fi # 创建日志目录 if [ ! -d ${WORK_DIR}/${LOG_DIR} ]; then mkdir -p ${WORK_DIR}/${LOG_DIR} print_info 创建日志目录: ${WORK_DIR}/${LOG_DIR} fi } # 显示配置信息 show_config() { print_info 显示启动配置... echo echo 工作目录: ${WORK_DIR} echo JAR文件: ${JAR_NAME} echo 服务端口: ${PORT} echo 应用名称: ${APP_NAME} echo 日志文件: ${LOG_FILE} echo PID文件: ${PID_FILE} echo JVM参数: ${JVM_OPTS} echo } # 启动服务 start_service() { print_info 正在启动LIMS Server... # 切换到工作目录 cd ${WORK_DIR} # 启动服务后台运行 nohup java ${JVM_OPTS} -jar ${JAR_NAME} ${APP_OPTS} ${CONSOLE_LOG} 21 # 保存进程ID local pid$! echo ${pid} ${PID_FILE} # 等待进程启动 print_info 等待服务启动... sleep 5 # 检查进程是否仍在运行 if ps -p ${pid} /dev/null 21; then print_success 服务启动成功 (PID: ${pid}) else print_error 服务启动失败请检查日志 rm -f ${PID_FILE} exit 1 fi } # 检查服务状态 check_service_status() { if check_process; then local pid$(cat ${PID_FILE}) print_success 服务正在运行 (PID: ${pid}) return 0 else print_warning 服务未运行 return 1 fi } # 显示启动信息 show_startup_info() { echo echo echo LIMS Server 启动完成! echo echo echo 启动信息: echo • 进程ID: $(cat ${PID_FILE} 2/dev/null || echo N/A) echo • 启动时间: $(date %Y-%m-%d %H:%M:%S) echo • 工作目录: ${WORK_DIR} echo • 服务端口: ${PORT} echo • 日志文件: ${LOG_FILE} echo echo 操作命令: echo • 查看状态: $0 status echo • 停止服务: $0 stop echo • 查看日志: $0 log echo • 重启服务: $0 restart echo } # 主函数 main() { # 显示标题 echo -e ${BLUE}${NC} echo -e ${BLUE} LIMS Server 启动脚本 v1.0${NC} echo -e ${BLUE} Linux 版本${NC} echo -e ${BLUE}${NC} echo # 检查参数 case ${1} in start) check_environment if check_process; then local pid$(cat ${PID_FILE}) print_warning 检测到服务已在运行 (PID: ${pid}) read -p 是否重启服务? (y/n): choice if [[ ${choice} ~ ^[Yy]$ ]]; then stop_process prepare_environment show_config start_service show_startup_info else print_info 操作已取消 fi else prepare_environment show_config start_service show_startup_info fi ;; stop) if check_process; then stop_process else print_warning 服务未运行 fi ;; restart) check_environment stop_process prepare_environment show_config start_service show_startup_info ;; status) check_service_status ;; log) if [ -f ${LOG_FILE} ]; then print_info 显示日志 (按CtrlC退出): echo tail -f ${LOG_FILE} else print_error 日志文件不存在: ${LOG_FILE} fi ;; console) if [ -f ${CONSOLE_LOG} ]; then print_info 显示控制台日志: echo tail -100 ${CONSOLE_LOG} else print_error 控制台日志文件不存在: ${CONSOLE_LOG} fi ;; clean) read -p 确定要清理所有日志文件吗? (y/n): choice if [[ ${choice} ~ ^[Yy]$ ]]; then rm -f ${WORK_DIR}/${LOG_DIR}/*.log rm -f ${WORK_DIR}/${LOG_DIR}/*.gz print_success 日志文件已清理 else print_info 操作已取消 fi ;; *) echo 使用方法: $0 {start|stop|restart|status|log|console|clean} echo echo 命令说明: echo start 启动服务 echo stop 停止服务 echo restart 重启服务 echo status 查看服务状态 echo log 实时查看日志 echo console 查看控制台输出 echo clean 清理日志文件 echo exit 1 ;; esac } # 执行主函数 main $2. 系统服务配置 (lims-server.service)ini# /etc/systemd/system/lims-server.service [Unit] DescriptionLIMS Server Application Afternetwork.target [Service] Typesimple Userlimsuser Grouplimsgroup WorkingDirectory/opt/lims-server ExecStart/usr/bin/java -Djdk.tls.client.protocolsTLSv1 -Djsse.enableSNIExtensionfalse -Djdk.tls.allowUnsafeServerCertChangetrue -jar /opt/lims-server/lims-server-1.0-SNAPSHOT.jar --server.port8085 SuccessExitStatus143 Restartalways RestartSec10 StandardOutputappend:/opt/lims-server/logs/console.log StandardErrorappend:/opt/lims-server/logs/error.log # 日志配置 SyslogIdentifierlims-server SyslogFacilitylocal7 # 资源限制 LimitNOFILE65536 LimitNPROC4096 [Install] WantedBymulti-user.target3. 管理工具脚本 (lims-tools.sh)bash#!/bin/bash # # LIMS Server 管理工具集 (Linux版本) # # 定义颜色输出 RED\033[0;31m GREEN\033[0;32m YELLOW\033[1;33m BLUE\033[0;34m NC\033[0m # 配置参数 WORK_DIR/opt/lims-server LOG_DIR${WORK_DIR}/logs BACKUP_DIR/opt/lims-backup # 显示菜单 show_menu() { clear echo -e ${BLUE}${NC} echo -e ${BLUE} LIMS Server 管理工具集 v1.0${NC} echo -e ${BLUE} Linux 版本${NC} echo -e ${BLUE}${NC} echo echo 请选择操作: echo 1. 启动服务器 echo 2. 停止服务器 echo 3. 重启服务器 echo 4. 查看服务器状态 echo 5. 查看实时日志 echo 6. 查看控制台输出 echo 7. 查看日志目录 echo 8. 清理旧日志 echo 9. 备份日志 echo 10. 系统资源监控 echo 11. JVM 监控 echo 0. 退出 echo } # 检查服务状态 check_status() { echo -e ${BLUE}[检查服务状态]${NC} echo # 检查进程 if pgrep -f lims-server.*jar /dev/null; then local pid$(pgrep -f lims-server.*jar) echo -e ${GREEN}[运行中]${NC} 进程ID: ${pid} # 显示进程详细信息 echo echo 进程信息: ps -fp ${pid} | tail -1 # 显示端口占用 echo echo 端口占用: netstat -tlnp 2/dev/null | grep :8085 || echo 端口 8085 未监听 # 显示内存使用 echo echo 内存使用: if command -v jstat /dev/null [ -f /proc/${pid}/exe ]; then jstat -gc ${pid} 2/dev/null || echo 无法获取JVM统计信息 fi else echo -e ${RED}[已停止]${NC} 未检测到运行中的LIMS Server fi echo read -p 按任意键继续... -n1 -s echo } # 查看实时日志 view_log() { echo -e ${BLUE}[查看实时日志]${NC} echo local log_file${LOG_DIR}/lims-server.log if [ -f ${log_file} ]; then echo 正在监视日志文件: ${log_file} echo 按 CtrlC 退出 echo # 显示最后50行然后开始实时监控 tail -50 ${log_file} echo echo echo 开始实时监控... tail -f ${log_file} else echo -e ${RED}[错误]${NC} 日志文件不存在: ${log_file} echo 请确认服务器已启动并产生日志输出 read -p 按任意键继续... -n1 -s fi } # 查看控制台输出 view_console() { echo -e ${BLUE}[查看控制台输出]${NC} echo local console_file${LOG_DIR}/console.log if [ -f ${console_file} ]; then echo 控制台日志: ${console_file} echo # 显示最后100行 tail -100 ${console_file} else echo -e ${YELLOW}[警告]${NC} 控制台日志文件不存在: ${console_file} fi echo read -p 按任意键继续... -n1 -s } # 打开日志目录 open_log_dir() { echo -e ${BLUE}[打开日志目录]${NC} echo if [ -d ${LOG_DIR} ]; then echo 日志目录: ${LOG_DIR} echo # 显示目录内容 ls -la ${LOG_DIR}/ echo # 显示文件大小 echo 文件大小: du -sh ${LOG_DIR}/* # 提供查看选项 echo echo 请选择要查看的文件: local files($(ls ${LOG_DIR}/*.log 2/dev/null)) if [ ${#files[]} -eq 0 ]; then echo 未找到日志文件 else select file in ${files[]} 返回; do case ${file} in 返回) break ;; *) if [ -f ${file} ]; then echo echo 文件内容 (${file}): echo head -50 ${file} echo read -p 是否查看完整文件? (y/n): choice if [[ ${choice} ~ ^[Yy]$ ]]; then less ${file} fi fi break ;; esac done fi else echo -e ${RED}[错误]${NC} 日志目录不存在: ${LOG_DIR} fi read -p 按任意键继续... -n1 -s } # 清理旧日志 clean_old_logs() { echo -e ${BLUE}[清理旧日志]${NC} echo if [ ! -d ${LOG_DIR} ]; then echo -e ${RED}[错误]${NC} 日志目录不存在: ${LOG_DIR} read -p 按任意键继续... -n1 -s return fi echo 将删除30天前的日志文件 echo # 显示将要删除的文件 echo 找到以下30天前的日志文件: find ${LOG_DIR} -name *.log -mtime 30 -type f find ${LOG_DIR} -name *.gz -mtime 30 -type f find ${LOG_DIR} -name *.zip -mtime 30 -type f echo read -p 确定要删除这些文件吗? (y/n): choice if [[ ${choice} ~ ^[Yy]$ ]]; then # 删除30天前的文件 find ${LOG_DIR} -name *.log -mtime 30 -type f -delete find ${LOG_DIR} -name *.gz -mtime 30 -type f -delete find ${LOG_DIR} -name *.zip -mtime 30 -type f -delete echo -e ${GREEN}[成功]${NC} 旧日志已清理 else echo -e ${YELLOW}[信息]${NC} 操作已取消 fi echo read -p 按任意键继续... -n1 -s } # 备份日志 backup_logs() { echo -e ${BLUE}[备份日志]${NC} echo if [ ! -d ${LOG_DIR} ]; then echo -e ${RED}[错误]${NC} 日志目录不存在: ${LOG_DIR} read -p 按任意键继续... -n1 -s return fi # 创建备份目录 if [ ! -d ${BACKUP_DIR} ]; then mkdir -p ${BACKUP_DIR} echo 创建备份目录: ${BACKUP_DIR} fi local timestamp$(date %Y%m%d_%H%M%S) local backup_file${BACKUP_DIR}/logs_backup_${timestamp}.tar.gz echo 正在备份日志到: ${backup_file} echo # 创建备份 tar -czf ${backup_file} -C ${WORK_DIR} ${LOG_DIR##*/} 2/dev/null if [ $? -eq 0 ]; then echo -e ${GREEN}[成功]${NC} 备份完成 echo 备份文件: ${backup_file} echo 文件大小: $(du -h ${backup_file} | cut -f1) else echo -e ${RED}[错误]${NC} 备份失败 fi echo read -p 按任意键继续... -n1 -s } # 系统资源监控 monitor_system() { echo -e ${BLUE}[系统资源监控]${NC} echo # 检查进程是否存在 if pgrep -f lims-server.*jar /dev/null; then local pid$(pgrep -f lims-server.*jar) echo 进程ID: ${pid} echo 监控时间: $(date %Y-%m-%d %H:%M:%S) echo # 监控循环 for i in {1..10}; do echo -e ${BLUE}[监控 ${i}/10]${NC} # CPU 使用率 echo CPU使用率: ps -p ${pid} -o %cpu,cmd --no-headers # 内存使用 echo 内存使用: ps -p ${pid} -o rss,vsz,cmd --no-headers | awk {printf 物理内存: %.2f MB, 虚拟内存: %.2f MB\n, $1/1024, $2/1024} # JVM统计如果可用 if command -v jstat /dev/null; then echo JVM堆内存: jstat -gc ${pid} 2/dev/null | tail -1 | awk { printf 堆使用: %.2f MB / %.2f MB (%.1f%%)\n, ($3$4$6$8)/1024, ($1$2$5$7)/1024, (($3$4$6$8)/($1$2$5$7))*100 } fi echo sleep 2 done else echo -e ${RED}[错误]${NC} 未找到LIMS Server进程 fi echo read -p 按任意键继续... -n1 -s } # JVM 监控 monitor_jvm() { echo -e ${BLUE}[JVM 监控]${NC} echo if pgrep -f lims-server.*jar /dev/null; then local pid$(pgrep -f lims-server.*jar) if command -v jstat /dev/null; then echo JVM统计信息 (进程ID: ${pid}): echo # 显示JVM统计表头 jstat -gc ${pid} echo echo GC统计: jstat -gcutil ${pid} echo echo 类加载统计: jstat -class ${pid} echo echo JIT编译统计: jstat -compiler ${pid} else echo -e ${YELLOW}[警告]${NC} jstat命令未找到无法获取JVM统计信息 echo 请安装JDK开发工具包 fi else echo -e ${RED}[错误]${NC} 未找到LIMS Server进程 fi echo read -p 按任意键继续... -n1 -s } # 主函数 main() { while true; do show_menu read -p 请选择 (0-11): choice case ${choice} in 1) echo bash /opt/lims-server/start-server.sh start ;; 2) echo bash /opt/lims-server/start-server.sh stop ;; 3) echo bash /opt/lims-server/start-server.sh restart ;; 4) echo check_status ;; 5) echo view_log ;; 6) echo view_console ;; 7) echo open_log_dir ;; 8) echo clean_old_logs ;; 9) echo backup_logs ;; 10) echo monitor_system ;; 11) echo monitor_jvm ;; 0) echo echo -e ${GREEN}[信息]${NC} 退出管理工具 echo exit 0 ;; *) echo echo -e ${RED}[错误]${NC} 无效选择 sleep 1 ;; esac done } # 执行主函数 main4. 安装和部署脚本 (install-lims.sh)bash#!/bin/bash # # LIMS Server 安装脚本 (Linux版本) # # 定义颜色输出 RED\033[0;31m GREEN\033[0;32m YELLOW\033[1;33m BLUE\033[0;34m NC\033[0m # 配置参数 INSTALL_DIR/opt/lims-server SERVICE_USERlimsuser SERVICE_GROUPlimsgroup # 打印彩色消息函数 print_info() { echo -e ${BLUE}[信息]${NC} $1; } print_success() { echo -e ${GREEN}[成功]${NC} $1; } print_warning() { echo -e ${YELLOW}[警告]${NC} $1; } print_error() { echo -e ${RED}[错误]${NC} $1; } # 检查是否为root用户 check_root() { if [ $EUID -ne 0 ]; then print_error 请使用root权限运行此脚本 print_info 请使用: sudo $0 exit 1 fi } # 检查Java环境 check_java() { print_info 检查Java环境... if ! command -v java /dev/null; then print_warning 未检测到Java环境 read -p 是否安装OpenJDK 11? (y/n): choice if [[ ${choice} ~ ^[Yy]$ ]]; then install_java else print_error 安装已取消 exit 1 fi else java_version$(java -version 21 | head -1 | cut -d -f2) print_success Java已安装 (版本: ${java_version}) fi } # 安装Java install_java() { print_info 正在安装OpenJDK 11... # 检测包管理器 if command -v apt /dev/null; then # Debian/Ubuntu apt update apt install -y openjdk-11-jdk elif command -v yum /dev/null; then # CentOS/RHEL yum install -y java-11-openjdk-devel elif command -v dnf /dev/null; then # Fedora dnf install -y java-11-openjdk-devel else print_error 不支持的Linux发行版 exit 1 fi if [ $? -eq 0 ]; then print_success Java安装完成 else print_error Java安装失败 exit 1 fi } # 创建服务用户和组 create_service_user() { print_info 创建服务用户和组... # 检查用户是否存在 if id ${SERVICE_USER} /dev/null; then print_warning 用户 ${SERVICE_USER} 已存在 else useradd -r -s /bin/false ${SERVICE_USER} print_success 创建用户: ${SERVICE_USER} fi # 检查组是否存在 if getent group ${SERVICE_GROUP} /dev/null; then print_warning 组 ${SERVICE_GROUP} 已存在 else groupadd ${SERVICE_GROUP} print_success 创建组: ${SERVICE_GROUP} fi # 将用户添加到组 usermod -a -G ${SERVICE_GROUP} ${SERVICE_USER} } # 创建目录结构 create_directories() { print_info 创建目录结构... # 创建主目录 if [ ! -d ${INSTALL_DIR} ]; then mkdir -p ${INSTALL_DIR} print_success 创建目录: ${INSTALL_DIR} fi # 创建日志目录 mkdir -p ${INSTALL_DIR}/logs print_success 创建日志目录: ${INSTALL_DIR}/logs # 创建备份目录 mkdir -p /opt/lims-backup print_success 创建备份目录: /opt/lims-backup } # 设置目录权限 set_permissions() { print_info 设置目录权限... # 设置所有权 chown -R ${SERVICE_USER}:${SERVICE_GROUP} ${INSTALL_DIR} chown -R ${SERVICE_USER}:${SERVICE_GROUP} /opt/lims-backup # 设置权限 chmod 755 ${INSTALL_DIR} chmod 755 /opt/lims-backup chmod 755 ${INSTALL_DIR}/logs print_success 权限设置完成 } # 复制JAR文件 copy_jar_file() { print_info 复制JAR文件... local jar_source # 查找JAR文件 if [ -f lims-server-1.0-SNAPSHOT.jar ]; then jar_sourcelims-server-1.0-SNAPSHOT.jar elif [ -f ../lims-server-1.0-SNAPSHOT.jar ]; then jar_source../lims-server-1.0-SNAPSHOT.jar else print_warning 未找到JAR文件 read -p 请输入JAR文件完整路径: jar_source fi if [ -f ${jar_source} ]; then cp ${jar_source} ${INSTALL_DIR}/ print_success JAR文件已复制到: ${INSTALL_DIR}/ else print_error JAR文件不存在: ${jar_source} exit 1 fi } # 安装启动脚本 install_startup_scripts() { print_info 安装启动脚本... # 复制启动脚本 if [ -f start-server.sh ]; then cp start-server.sh ${INSTALL_DIR}/ chmod x ${INSTALL_DIR}/start-server.sh print_success 启动脚本已安装 fi # 复制管理工具 if [ -f lims-tools.sh ]; then cp lims-tools.sh ${INSTALL_DIR}/ chmod x ${INSTALL_DIR}/lims-tools.sh # 创建符号链接到/usr/local/bin ln -sf ${INSTALL_DIR}/lims-tools.sh /usr/local/bin/lims-tools print_success 管理工具已安装 fi } # 配置系统服务 configure_systemd_service() { print_info 配置系统服务... # 检查systemd if ! command -v systemctl /dev/null; then print_warning systemd未找到跳过服务配置 return fi # 创建服务文件 cat /etc/systemd/system/lims-server.service EOF [Unit] DescriptionLIMS Server Application Afternetwork.target [Service] Typesimple User${SERVICE_USER} Group${SERVICE_GROUP} WorkingDirectory${INSTALL_DIR} ExecStart/usr/bin/java -Djdk.tls.client.protocolsTLSv1 -Djsse.enableSNIExtensionfalse -Djdk.tls.allowUnsafeServerCertChangetrue -jar ${INSTALL_DIR}/lims-server-1.0-SNAPSHOT.jar --server.port8085 SuccessExitStatus143 Restartalways RestartSec10 StandardOutputappend:${INSTALL_DIR}/logs/console.log StandardErrorappend:${INSTALL_DIR}/logs/error.log # 日志配置 SyslogIdentifierlims-server SyslogFacilitylocal7 # 资源限制 LimitNOFILE65536 LimitNPROC4096 [Install] WantedBymulti-user.target EOF # 重新加载systemd配置 systemctl daemon-reload # 启用服务自启动 systemctl enable lims-server.service print_success 系统服务配置完成 } # 创建环境配置文件 create_environment_file() { print_info 创建环境配置文件... cat ${INSTALL_DIR}/lims-server.env EOF # LIMS Server 环境配置 WORK_DIR${INSTALL_DIR} JAR_NAMElims-server-1.0-SNAPSHOT.jar PORT8085 APP_NAMElims-server LOG_DIRlogs JVM_OPTS-Djdk.tls.client.protocolsTLSv1 -Djsse.enableSNIExtensionfalse -Djdk.tls.allowUnsafeServerCertChangetrue APP_OPTS--server.port\${PORT} EOF print_success 环境配置文件已创建 } # 完成安装 complete_installation() { print_success print_success LIMS Server 安装完成! print_success echo echo 安装信息: echo 安装目录: ${INSTALL_DIR} echo 服务用户: ${SERVICE_USER} echo 服务端口: 8085 echo 日志目录: ${INSTALL_DIR}/logs echo echo 管理命令: echo 启动服务: systemctl start lims-server echo 停止服务: systemctl stop lims-server echo 服务状态: systemctl status lims-server echo 查看日志: journalctl -u lims-server echo 管理工具: lims-tools echo echo 启动脚本: echo ${INSTALL_DIR}/start-server.sh {start|stop|restart|status} echo # 询问是否立即启动服务 read -p 是否立即启动服务? (y/n): choice if [[ ${choice} ~ ^[Yy]$ ]]; then systemctl start lims-server systemctl status lims-server --no-pager fi } # 主安装函数 main_install() { check_root check_java create_service_user create_directories copy_jar_file install_startup_scripts configure_systemd_service set_permissions create_environment_file complete_installation } # 执行安装 main_install5. 使用说明安装步骤bash# 1. 下载脚本 sudo wget -O /tmp/install-lims.sh https://example.com/install-lims.sh # 2. 添加执行权限 sudo chmod x /tmp/install-lims.sh # 3. 运行安装脚本 sudo /tmp/install-lims.sh # 4. 将JAR文件放在当前目录或者根据提示提供路径基本命令bash# 使用启动脚本 cd /opt/lims-server ./start-server.sh start # 启动 ./start-server.sh stop # 停止 ./start-server.sh restart # 重启 ./start-server.sh status # 状态 ./start-server.sh log # 查看日志 # 使用管理工具 lims-tools # 图形化菜单管理 # 使用systemd服务 sudo systemctl start lims-server sudo systemctl stop lims-server sudo systemctl restart lims-server sudo systemctl status lims-server sudo journalctl -u lims-server -f # 查看服务日志功能特点完整的管理功能启动、停止、重启、状态监控实时日志查看支持tail -f实时监控日志管理备份、清理、查看资源监控CPU、内存、JVM监控权限管理专用服务用户和组系统集成支持systemd服务管理错误处理完善的错误检测和提示颜色输出直观的彩色控制台输出这些脚本为Linux环境提供了完整的企业级部署方案支持生产环境的运维需求。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

将自己做的网站入到阿里云域名上锦浪科技(300763) 股吧

服务安全与管理模式解析 1. 安全基础设施模式可缓解的威胁类别 在服务通信中,安全是至关重要的一环。安全基础设施模式能够帮助我们缓解多种威胁,以下是具体的威胁类别及应对措施: | 威胁 | 应对措施 | | — | — | | 伪装(Spoofing) | 使用发送者的公钥验证签名以防…

张小明 2025/12/28 14:10:07 网站建设

我自己做的网站一直没有效果怎么办平台借钱哪个利息最低

从零开始在 Linux 安装 Elasticsearch:新手也能看懂的实战指南 你是不是也遇到过这种情况——想搭个搜索系统,查资料时满屏都是“Elasticsearch 下载”“安装配置”,点进去却发现步骤跳跃、术语堆砌,根本不知道下一步该做什么&am…

张小明 2025/12/28 17:39:12 网站建设

网站空间商排名多用户商城开源左

手绘风格太惊艳!Excalidraw让你的PPT图表脱颖而出 在一场关键的技术评审会上,团队成员围坐屏幕前,主讲人正试图用一张标准PPT架构图解释系统流程。线条笔直、形状规整,但气氛却略显沉闷——直到有人提议:“不如我们打开…

张小明 2025/12/28 17:39:10 网站建设

百度电脑版登录网站广州网站建设广州

摘要 近年来,随着全球疫情的反复波动,社区管理面临着前所未有的挑战。传统购物方式在疫情期间暴露出诸多问题,如人员聚集、效率低下、信息不透明等。为解决这些问题,开发一套高效、便捷的小区疫情购物系统平台显得尤为重要。该系…

张小明 2025/12/28 15:30:44 网站建设

哈尔滨网站建设q479185700惠wordpress算数的插件

SAM3在医疗影像里“指鹿为马”?MedSAM3来了——文本一句话,精准分割病灶 熟悉计算机视觉的朋友,对“分割万物”的SAM(Segment Anything Model)系列一定不陌生。从初代SAM到最新的SAM 3,这个“通才”模型靠…

张小明 2025/12/28 15:30:42 网站建设

ps做网站素材文件打包南宁网站建设公司招聘

引言 前序学习进程中,已经简单学习了全连接层的概念,知晓全连接层先把数据展平,然后使用激活函数运算数据,最后将输出结果直接传递给下一层。 实际上全连接层就是激活函数发挥功能的层,通过激活函数可以引入非线性或者…

张小明 2025/12/28 17:39:08 网站建设