求助:Jenkins通过Windows批处理启动Teraterm无法生成日志文件
问题解决:Jenkins中启动Teraterm无法生成日志文件
问题场景
在Jenkins作业中执行Windows批处理,后台启动Teraterm监听UART并生成日志,手动在命令行执行批处理时日志正常生成,但Jenkins中Teraterm启动后无日志文件。批处理代码如下:
cd /D "C:\Program Files (x86)\teraterm" start TTERMPRO /C=3 /SPEED=921600 /L="Path\logs\uart.log" Other commands to generate uart com
已尝试的无效操作:
- 用
start TTERMPRO ... > "Path\logs\uart.log"重定向输出,文件为空 - 直接在Jenkins中执行命令、用
call替代start,结果一致 - 不使用
start会导致作业阻塞
可能的原因及解决方法
1. Jenkins运行账户权限不足
Jenkins默认以Local System账户或专用服务账户运行,该账户可能没有日志目录的读写权限。
- 操作步骤:
- 打开Windows服务管理器,找到Jenkins服务,查看其「登录身份」
- 找到日志目录(如
Path\logs),右键选择「属性」-「安全」 - 添加Jenkins运行账户,授予读取、写入、修改权限
- 重启Jenkins服务后重试
2. 相对路径解析错误
批处理中的相对路径Path\logs\uart.log在Jenkins环境下的工作目录与手动执行时不同,导致Teraterm找不到正确的日志路径。
- 解决方法:使用绝对路径,优先利用Jenkins内置变量
%WORKSPACE%(指向当前作业的工作空间):cd /D "C:\Program Files (x86)\teraterm" rem 先确保日志目录存在 if not exist "%WORKSPACE%\logs" mkdir "%WORKSPACE%\logs" start TTERMPRO /C=3 /SPEED=921600 /L="%WORKSPACE%\logs\uart.log" Other commands to generate uart com
3. Jenkins作业结束时强制终止子进程
Jenkins作业执行完成后,可能会强制终止其启动的所有子进程,导致Teraterm还未完成日志文件的初始化就被关闭。
- 解决方法:
- 在后续UART命令执行完成后,添加等待时间,给Teraterm足够时间写入日志:
Other commands to generate uart com rem 等待10秒,确保日志写入完成 timeout /t 10 /nobreak > nul - 或者循环检查日志文件是否存在,确认Teraterm初始化完成后再执行后续命令:
cd /D "C:\Program Files (x86)\teraterm" if not exist "%WORKSPACE%\logs" mkdir "%WORKSPACE%\logs" start TTERMPRO /C=3 /SPEED=921600 /L="%WORKSPACE%\logs\uart.log" rem 循环等待日志文件生成,最多等待30秒 set "log_file=%WORKSPACE%\logs\uart.log" set "wait_time=0" :wait_loop if exist "%log_file%" goto continue timeout /t 1 /nobreak > nul set /a wait_time+=1 if %wait_time% lss 30 goto wait_loop :continue Other commands to generate uart com
- 在后续UART命令执行完成后,添加等待时间,给Teraterm足够时间写入日志:
4. Teraterm路径解析异常
start命令若遇到含空格的路径,可能会将路径前半部分解析为窗口标题,导致Teraterm启动异常。
- 解决方法:在
start后添加空引号,明确指定窗口标题(此处留空),再传入Teraterm的完整路径:if not exist "%WORKSPACE%\logs" mkdir "%WORKSPACE%\logs" start "" "C:\Program Files (x86)\teraterm\TTERMPRO.exe" /C=3 /SPEED=921600 /L="%WORKSPACE%\logs\uart.log" Other commands to generate uart com
内容的提问来源于stack exchange,提问作者Solene
相关产品推荐
相关产品推荐

