SSH远程执行命令完全指南:从单条命令到批量运维实战
简介通过 SSH 在远程 Linux 系统上安全执行命令是系统管理员、运维工程师与开发者绕不开的日常操作。这份 PDF 资料从 SSH 工作原理与加密认证机制入手先解释加密隧道如何保障传输安全再依次介绍远程执行单条命令、用逻辑运算符串联多条命令、借助伪终端配合 sudo 运行特权指令等常用场景同时给出 SSH 配置文件设置主机别名、用密钥对实现免密登录的完整思路让频繁连接服务器的用户免去反复输入密码和切换登录会话的麻烦。资源共包含 1 个 PDF 文档压缩包约 74KB全文结构紧凑、代码与说明一一对应适合在电脑或手机上随时翻阅。目前已有 580 人学习下载对于日常服务器巡检、服务重启、批量查看运行状态等运维工作具备相当直接的参考价值也适合初学者借此建立 SSH 远程操作的完整认知。1. 通过 SSH 在远程 Linux 系统上运行命令批量运维的入场券SSH 在远程 Linux 系统上运行命令是每个运维和开发每天都要重复几十次的动作。很多人只会 ssh 登录进去再手敲命令遇到要查 20 台机器的磁盘水位、要批量重启服务的时候就傻眼了。其实 SSH 协议本身支持直接在本地把命令发到远端执行不需要交互式登录。这里把单条命令、脚本批量、密钥认证、问题排查和封装复用的完整路径讲一遍新手照着敲能跑通熟手可以跳过基础直接看边界参数和踩坑记录。适合正在做服务器巡检、发布部署、日志收集的从业者。2. SSH 远程执行命令的四种姿势从单条命令到批量回传2.1 交互式登录与直接执行的区别为什么结果不一样先明确一点ssh host 登录进去敲命令和 ssh host command 直接执行看起来差不多实际走的是两套完全不同的会话。交互式登录会分配伪终端ptyshell 按交互式模式启动会加载 .bashrc、.bash_profile而直接执行命令时SSH 在远端启动的是非交互式 shell只加载少量的环境文件很多变量和别名根本不在。这意味着你在交互式终端里能用的 alias、PATH 里后加的目录、以及 .bashrc 里 export 的变量在 ssh host command 里可能都不存在。最常见的翻车现场是本地明明配好了某个工具的路径ssh 过去执行却报 command not found。原因就是非交互式 shell 只读了 /etc/profile 和 ~/.bash_profile 的一部分没有加载 ~/.bashrc。# 交互式登录分配 ptyshell 走完整加载链 ssh userhost # 直接执行不分配 ptyshell 以非交互方式运行 ssh userhost df -h # 强制分配 pty 的直连方式能拿到交互式环境但输出会混入控制字符 ssh -t userhost top -bn1第三条的 -t 参数强制分配伪终端让远端 shell 认为自己在一个交互式终端里从而加载完整环境。代价是输出里会带上终端控制序列重定向到文件时会有一堆乱码一般只在确实需要交互式行为时才用。参数说明-t 表示 force pseudo-terminal allocation可以出现多次后面跟的命令如果是交互式程序如 top、vim必须加 -t否则程序会因为 stdout 不是终端而报错或行为异常。如果命令本身就是脚本化的输出如 df、ls不加 -t 反而更干净。2.2 单条命令执行引号、管道与退出码ssh userhost cmd 这条命令的引号设计直接决定管道和重定向是在本地执行还是在远端执行。这是一个非常容易搞混的细节外层引号内的管道如果你用的是单引号管道就是在远端 shell 里执行的如果你不加引号或者用双引号管道可能留在本地执行结果完全不一样。# 正确管道在远端执行df 的输出在远端被 grep 过滤 ssh userhost df -h | grep /data # 错误管道在本地执行ssh 输出的完整 df 结果被本地 grep 过滤 ssh userhost df -h | grep /data # 带参数的命令必须整体引起来否则本地 shell 先做了展开 ssh userhost systemctl restart nginx这里有个非常隐蔽的坑ssh 会把命令行参数用空格拼接后交给远端 shell。ssh userhost df -h | grep /data 这条命令里ssh 只看到了 df-h、管道、grep 都是本地 shell 解析的。所以结果就是 ssh 把完整 df 输出传回本地然后本地 grep 过滤功能刚好一样但语义完全不同。一旦命令里带了引号、重定向或通配符就必须用一层引号包住整个远端命令。关于退出码ssh 的退出码默认是远端命令的退出码但如果连接本身失败返回的是 255。所以脚本里判断 ssh 执行是否成功不能只看 exit code 非零就断定命令失败要区分 255 和远端命令的返回值。2.3 多条命令与脚本heredoc 与本地脚本远程执行需要执行一组有先后依赖的命令时可以用分号或 拼接但可读性一塌糊涂。更常见的是用 heredoc 方式把一段本地脚本原样送到远端执行。这个手法在批量发布场景下非常实用因为它让脚本保存在本地、有版本管理执行时才落到远端。# heredoc 方式本地写脚本远端执行 ssh userhost bash -s EOF set -e cd /opt/app git pull origin main systemctl restart myapp echo deploy done at $(date) EOF注意 EOF 用单引号包住 EOF这样本地 shell 不会对脚本内容做变量展开$(date) 会在远端求值。如果你用 EOF 不带引号本地 shell 会先把 $(date) 换成本地时间远端脚本里拿到的就是错的。这是多人协作写部署脚本时最常见的血泪经验明明远端是凌晨脚本打出来的却是本地的下午三点。另一种常见做法是把脚本放在本地文件里然后用 stdin 重定向送过去# 把本地 deploy.sh 的内容作为远端 bash 的输入 ssh userhost bash -s deploy.sh这个写法的好处是脚本文件可以在本地直接编辑、review、做语法检查远端不需要先落盘。脚本里有相对路径时要注意bash -s 不会改变当前工作目录远端 bash 启动时的工作目录是用户 home脚本里 cd 到绝对路径更安全。2.4 批量主机执行循环、并发与输出分离单台执行搞定之后批量自然成为下一个诉求。最朴素的写法是 for 循环串行执行机器少没问题机器超过十台就开始感受到延迟。每台 ssh 握手要几百毫秒到几秒串行跑 30 台机器光握手就要一分钟。# 串行批量简单可靠但慢 for host in web01 web02 web03; do echo $host ssh user$host df -h / | tail -1 done # 并发批量用 放后台wait 统一回收 for host in web01 web02 web03; do ssh user$host hostname; uptime /tmp/${host}.out 21 done wait cat /tmp/web01.out /tmp/web02.out /tmp/web03.out并发写法要注意输出重定向每个主机的输出写到独立文件否则多个 ssh 进程同时往终端写结果会互相穿插根本没法看。wait 命令会等所有后台任务结束但不会自动判断 ssh 是否失败所以严谨一点的做法是在后台任务里把退出码写进文件或者直接借助现成的批量工具。我一般会先串行跑两台确认命令本身没问题再放并发跑全量省得把错误命令放大 30 倍。另外一个细节批量执行时如果某台主机的 known_hosts 指纹变了ssh 会停下来交互式确认整个批次会卡住。批量脚本里建议加上 StrictHostKeyCheckingaccept-new让它对首次连接的主机自动接受指纹避免卡交互。# 批量场景推荐的 ssh 参数组合 ssh -o StrictHostKeyCheckingaccept-new -o ConnectTimeout5 userhost uptimeConnectTimeout5 让连不上的主机在 5 秒内快速失败而不是让 TCP 栈慢慢超时整个批次的可用性会好很多。StrictHostKeyCheckingaccept-new 表示只有全新主机自动接受已有指纹发生变化时依然报错这个分寸比较合理。3. 让远程命令执行更可靠sudo、环境变量与交互式输入3.1 sudo 提权与免密配置远程执行提权的两个思路远程命令经常需要 root 权限而 ssh 默认用普通用户登录。直接把 PermitRootLogin 打开又风险太大所以标准做法是普通用户通过 sudo 提权。问题在于sudo 默认需要密码而 ssh 直接执行命令时没有交互式终端sudo 会报 sudo: no tty present 或者直接卡住。# 没有 tty 时 sudo 会失败 ssh userhost sudo systemctl restart nginx # 结果sudo: no tty present and no askpass program specified # 解法一-t 分配伪终端让 sudo 能读密码 ssh -t userhost sudo systemctl restart nginx # 解法二配置 sudoers 免密推荐 # 在远端执行 visudo加入一行 # user ALL(ALL) NOPASSWD: ALL解法二更适合自动化配合密钥登录就实现了完全免密。但 sudoers 配置要精确别直接写 ALL(ALL) NOPASSWD: ALL粒度太大了等于把用户变成 root。我一般会按命令白名单来# 只允许免密执行 systemctl 和 /opt/scripts/ 下的脚本 deploy ALL(root) NOPASSWD: /usr/bin/systemctl, /opt/scripts/deploy.shsudoers 语法里命令必须写绝对路径先 which systemctl 确认路径。配置写错会导致 sudo 直接裂开报 sudo: parse error这时候切到 root 用 visudo -c 检查语法再修复。另外建议保留一个有密码的管理账号做应急入口出问题时不会因为密钥失效被锁在门外。3.2 环境变量为什么不生效non-interactive shell 的加载链我在 ~/.bashrc 里 export 了 FOO为什么 ssh host echo $FOO 打出来是空的 这是高频问题。原因和 2.1 讲的类似直接执行命令时远端 bash 以非交互非登录模式启动只读 BASH_ENV 指向的文件如果没有设置就什么都不加载。# 方案一在命令里显式加载 ssh userhost source ~/.bashrc echo $FOO # 方案二用 bash -l 以登录模式加载远程 profile ssh userhost bash -lc echo $FOO方案二里 bash -lc 的 -l 表示 login shell会加载 /etc/profile 和 ~/.bash_profile变量放在 ~/.bash_profile 里就能生效。但嵌套引号会越来越复杂实际工作中我更喜欢方案三把环境变量写死在部署脚本里脚本开头显式 export 或 set -a 加载 .env 文件。脚本本身就是可复现的不依赖远端 shell 的加载链这个思路在 CI 和批量运维里最可靠。还要注意 sudo 会重置环境变量sudo 默认清空大部分变量sudo -E 保留当前环境、sudo -i 模拟登录 shell三个行为的差异经常让人排查一小时。如果你的远程命令依赖某个 PATH优先在脚本里写死绝对路径或者用 sudo env PATH... 显式指定。3.3 交互式命令的处理ssh -t 与交互输入的三个层级远程执行需要用户输入的命令比如 passwd、visudo、sudo 输密码比想象中麻烦。常见处理分三个层级有密码提示的命令用 -t 配合 expect 脚本没有交互的纯脚本用 stdin 重定向真正需要键盘交互的必须保留终端。# 方法一用 printf 把多行输入通过管道传给远端命令不推荐明文 printf oldpass\nnewpass\nnewpass\n | ssh -t userhost passwd # 方法二expect 自动交互生产环境更常用 expect EXPECT spawn ssh -t userhost {sudo systemctl restart nginx} expect *password* send mypassword\r expect eof EXPECTexpect 是解决交互式命令自动化的实用工具但它依赖 tcl 运行时有些精简系统没装。还有一条路命令本身支持免交互参数比如 systemctl 没有但很多工具支持 --password-stdin。所以第一选择永远是查命令有没有非交互参数别一上来就上 expect。expect 脚本里的方括号和花括号容易踩转义坑建议先在本地拿测试机跑通再上生产。3.4 超时与断线命令还没跑完怎么办远程执行一条要跑几分钟的命令ssh 连接可能因为网络波动断开命令被 SIGHUP 杀掉结果功亏一篑。处理方向有两个让 ssh 断开前把命令交给 nohup 托管或者让 ssh 保持心跳防止被中间设备掐断。# 命令在远端 nohup 后台执行stdout 写文件ssh 立即返回 ssh userhost nohup bash /opt/scripts/backup.sh /tmp/backup.log 21 # 保持 ssh 在线直到远端命令结束 ssh -o ServerAliveInterval15 -o ServerAliveCountMax4 userhost long_running_taskServerAliveInterval15 让 ssh 客户端每 15 秒发一个保活包ServerAliveCountMax4 表示连续 4 次没回应才断开相当于容忍 60 秒盲区。如果远端命令要跑 10 分钟网络链路里的中间设备可能因空闲断开连接这两个参数能有效规避。注意 nohup 方案里远端命令的 stdout 必须重定向否则 ssh 会一直等待管道关闭命令就失去立即返回的意义。4. 密钥认证与免密登录从 ssh-keygen 到 ssh-agent 的完整链路4.1 生成密钥对ed25519 与 RSA 怎么选密码登录在自动化场景下是个黑匣子密码存哪、轮换怎么办、泄漏了怎么审计。密钥认证解决了这些问题。生成密钥对的第一步是指定算法现在 ssh-keygen 默认生成 ed25519这也是我推荐的选择。它比 RSA 短、快、安全性足够OpenSSH 8.2 以上都支持。# 生成 ed25519 密钥对加注释方便辨认用途 ssh-keygen -t ed25519 -C deployops-2024 -f ~/.ssh/deploy_key # 生成后立即设置权限 chmod 600 ~/.ssh/deploy_key chmod 700 ~/.ssh-f 指定生成路径如果你准备为不同环境准备不同密钥文件名最好带标识。私钥权限必须是 600否则 ssh 会直接拒绝使用Permissions 0777 for xxx are too open。这个检查是个经典坑在 Windows 上拷贝密钥到 Linux 时经常因为权限问题报错。公钥后缀 .pub 可以公开私钥必须像密码一样保护。如果私钥设置了 passphrase每次使用都要输入对自动化来说很麻烦解法在 4.2 讲。兼容性说明老系统CentOS 6 等上的 OpenSSH 可能不支持 ed25519这时退回 RSA 是合理的。RSA 生成时指定 -b 4096别用默认的 3072 或更低的 2048。4.2 ssh-agent 与 passphrase 加载给私钥加了 passphrase 之后每次 ssh 连接都要敲一次密码自动化场景下等于没用。但私钥裸奔无 passphrase在笔记本丢失时又等于把家底送出去。折中方案是 ssh-agent启动一个守护进程存解密后的密钥私钥文件本身带 passphrase只在加载时需要输入一次。# 启动 agent 并把私钥加入 eval $(ssh-agent -s) ssh-add ~/.ssh/deploy_key # 检查当前 agent 里有哪些密钥 ssh-add -lssh-add 会让终端提示输入 passphrase输入后解密结果缓存到 agent 内存。之后所有 ssh 连接自动使用 agent 里的密钥不再询问 passphrase。这里有个安全边界ssh 的 agent 转发ForwardAgent要慎用它会把 agent socket 转发到远端远端 root 用户可以读取并复用你的密钥身份等于把本地密钥的调用权交给了那台机器。跳板机场景需要转发的时候只对信任的机器开别在未知机器上开。4.3 批量场景下的密钥分发与 known_hosts 管理密钥在本地生成后要把公钥放到远端 ~/.ssh/authorized_keys 里。单台机器用 ssh-copy-id 最省事它会自动处理目录权限和追加去重。批量场景就手写循环但要处理一个细节首次连接时的 host key 确认会让脚本卡住。# 单台分发 ssh-copy-id -i ~/.ssh/deploy_key.pub userhost # 批量分发假设已验证密码登录 HOSTSweb01 web02 web03 for host in $HOSTS; do ssh-copy-id -o StrictHostKeyCheckingaccept-new -i ~/.ssh/deploy_key.pub user$host doneknown_hosts 文件的坑在于如果远端系统重装过host key 变了本地的 known_hosts 还记录着旧指纹ssh 会报 REMOTE HOST IDENTIFICATION HAS CHANGED 并拒绝连接。解法是删除对应条目ssh-keygen -R hostname。批量运维时建议统一管理 known_hosts把已知主机的指纹提前放到一个共享文件里配合全局配置# /etc/ssh/ssh_config 片段 Host *.ops.internal User deploy IdentityFile ~/.ssh/deploy_key StrictHostKeyChecking accept-new注意sshd_config 修改后要 systemctl restart sshd 才能生效别改了配置不重启就排查半天。这段配置让批量脚本大幅瘦身不需要每条 ssh 都带 -i 和 -o。IdentityFile 里写绝对路径更稳妥避免某些场景下相对路径解析不生效。5. 远程执行命令的常见问题排查认证失败、连接拒绝与输出乱码5.1 连接被拒绝服务没启、端口不对、防火墙挡路ssh: connect to host xxx port 22: Connection refused 是最常见的失败信息。先分清三个层次网络不通超时、端口被拒refused、认证失败permission denied。Connection refused 意味着 TCP 层能到目标机器但端口没有服务优先检查 sshd 是否在跑和监听端口。报错信息原因第一步处理Connection refused端口无服务远端查 systemctl status sshdOperation timed out网络不可达本端 ping 或 nc -vz host 22Permission denied认证失败看 5.2 的排查步骤# 本端确认端口可达 nc -vz host 22 # 远端排查 sshd 状态需要其他方式登录 systemctl status sshd ss -tlnp | grep :22排查顺序建议是先 nc 测端口通不通通的话看日志 /var/log/secure 或 /var/log/auth.log不通的话在远端核对 sshd 是否监听在 0.0.0.0而不是只监听 127.0.0.1。有些云主机默认安全组只放行了特定端口改了 ssh 端口后要同步改安全组和防火墙策略。还有一种常见情况sshd 配置了 ListenAddress 指向特定网卡从其他网段进来直接被拒。5.2 认证失败PermitRootLogin、PubkeyAuthentication 与 known_hosts 冲突Permission denied (publickey,password) 这个报错要拆开看括号里的单词它告诉了你当前允许的认证方式。如果只有 publickey说明密码登录被禁了如果提示 publickey 但你的密钥明明配好了多半是 authorized_keys 的权限或内容问题。# 检查远端密钥文件权限 ls -l ~/.ssh/authorized_keys # 期望的权限是 -rw-------属主是当前用户 # 权限不对就重置 chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh # 检查 sshd 关键配置 grep -E ^(PermitRootLogin|PubkeyAuthentication|PasswordAuthentication) /etc/ssh/sshd_config还有个超级隐蔽的坑authorized_keys 文件内容被复制时发生了换行符变化Windows CRLF导致 sshd 解析公钥失败。解决方法是把公钥重新用 ssh-copy-id 推一遍或手动把文件转为 LF 换行。known_hosts 的冲突报错前面提过用 ssh-keygen -R 清除即可。排查认证问题最快的路径是临时用 /usr/sbin/sshd -d -p 2222 起一个调试实例日志会明确告诉你拒绝的原因比自己猜快得多。5.3 输出乱码与中文文件名错乱locale 与 LANG远程执行 ls 时中文文件名显示成 \345\274\200或者日志里的中文全是问号原因是远端 locale 没设成 UTF-8。ssh 直连时客户端的环境变量默认不会传过去需要 SendEnv 配置远端 shell 的 LANG 可能为空或被设成 C。# 查看远端 locale ssh userhost locale # 临时指定 UTF-8 执行命令 ssh userhost LANGen_US.UTF-8 ls -l /data # 持久化在远端 /etc/environment 写入 # LANGen_US.UTF-8 # LC_ALLen_US.UTF-8这个问题在 CentOS 上特别常见很多历史镜像没装 en_US.UTF-8 locale 或默认未激活。注意 locale 不仅影响显示还影响 sort、grep、awk 对非 ASCII 字符的处理逻辑所以日志分析和文本处理前最好统一 locale。设置后要重新登录才生效或者在命令里显式带上环境变量前缀。5.4 退出码丢失管道、nohup 与 exec 的退出码陷阱脚本判断执行是否成功要靠退出码但 ssh 场景下退出码很容易失真。第一个坑ssh host cmd1 | cmd2 的退出码是 cmd2 的cmd1 失败了这个组合依然返回 0。第二个坑ssh host nohup cmd 立即返回 0远端 cmd 是否成功完全不知道。第三个坑本地拿 ssh 退出码时中间不要插管道否则你拿到的是管道的退出码。# 拿到远端真实退出码的写法 ssh userhost set -o pipefail; cmd1 | cmd2; exit $? # 远端命令结束后退出码完整带回 ssh userhost bash -c cmd1; status\$?; exit \$status一般脚本里判断 ssh 是否成功正确的姿势是先检查 ssh 自身退出码连接失败返回 255再检查远端命令输出里约定的标记。批量场景可以要求远端把执行结果写到约定路径本地再统一收集避免依赖退出码在管道里被吞掉。这个坑特别容易出现在新手写的发布脚本里发布明明失败了还打印 OK。6. 把 SSH 远程命令封装成本地小工具参数透传与结果回传的实用技巧6.1 三个随手可用的本地封装函数最后聊一个能直接落地的进阶技巧把前面的零散命令封装成本地 bash 函数日常运维从一长串 ssh 参数变成一条短命令。这个封装适合任何需要频繁登录固定机器、执行固定类型任务的场景比如每天早上的磁盘水位巡检、发布后的服务状态确认、日志文件的定时拉取。# ~/.bashrc.d/ops.sh 里添加 rrun() { local host$1; shift ssh -o ConnectTimeout5 -o StrictHostKeyCheckingaccept-new $host $ }rrun 函数把参数原样透传给 ssh调用方式 rrun web01 df -h 和 ssh web01 df -h 等价但统一了超时和 host key 策略。新加机器时不用记一堆参数。如果你希望所有命令都走同一把密钥可以把 -i ~/.ssh/deploy_key 也写进函数里保证全组用同一把部署密钥审计日志里也好追溯。结果回传是另一个高频场景远端命令把结果写到文件本地需要收回存档。封装一个 rcollect 函数把 scp 的细节藏起来。rcollect() { local host$1 remote_path$2 local_dir$3 mkdir -p $local_dir scp -o ConnectTimeout5 $host:$remote_path $local_dir/$(basename $remote_path) /dev/null echo collected from $host }注意 scp 的远程路径写法 host:/path 不要漏冒号漏了会把文件复制到本地同名文件而不是远程拉取。/dev/null 是把 scp 的进度条吞掉脚本输出更干净。进阶一点可以把批量巡检封装成函数串行太慢、并发太乱折中做法是五台一组并发组间串行既不会打爆 sshd 的并发限制也不会等太久。for host in web01 web02 web03 web04 web05; do rrun $host df -h / report_${host}.txt 21 done wait我的习惯是把这类函数放在 ~/.bashrc.d/ops.sh 里配合 shellcheck 做语法检查推送到团队仓库让所有人共用一份。两年用下来最深的体会是不要一开始就追求功能全先封装最常用的三个场景——单命令执行、批量巡检、日志拉取跑熟了再慢慢加并发控制和告警通知功能越多维护成本越高。希望这套思路能帮你在自己的环境里把 SSH 远程执行命令这件事做得更顺少踩几个我踩过的坑。本文还有配套的精品资源点击获取

相关新闻

i茅台自动预约系统:一条Docker命令跑通每日定时预约

i茅台自动预约系统:一条Docker命令跑通每日定时预约

i茅台自动预约系统:一条Docker命令跑通每日定时预约 【免费下载链接】campus-imaotai i茅台app自动预约,每日自动预约,支持docker一键部署(本项目不提供成品,使用的是已淘汰的算法) 项目地址: https://gi…

2026/10/18 1:52:52 阅读更多 →
免费 GHelper 实战教程:用单个 exe 跑通华硕笔记本的性能、风扇与电池控制

免费 GHelper 实战教程:用单个 exe 跑通华硕笔记本的性能、风扇与电池控制

免费 GHelper 实战教程:用单个 exe 跑通华硕笔记本的性能、风扇与电池控制 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vi…

2026/10/18 1:52:52 阅读更多 →
【化学实验室|08】HarmonyOS ArkTS 化学公式库实战:让方程式、条件与分类信息在长列表中可读

【化学实验室|08】HarmonyOS ArkTS 化学公式库实战:让方程式、条件与分类信息在长列表中可读

化学公式页看起来只是一个 List:名称放在上面,方程式放大,下面再补一行说明。真正运行后,问题往往不在“能不能显示”,而在“能不能快速读懂”。短式子 PV nRT 很轻松,CaCO₃ 2HCl → CaCl₂ H₂O CO₂…

2026/10/18 1:52:52 阅读更多 →

最新新闻

基于5777张图片的垃圾检测数据集实战:六大场景与模型训练指南

基于5777张图片的垃圾检测数据集实战:六大场景与模型训练指南

垃圾检测在计算机视觉里是个看着简单、做起来相当磨人的细分方向。说它简单,是因为目标就是“找出画面里的垃圾”;说它磨人,是因为垃圾这东西没有固定形状、没有统一颜色、尺度跨度极大——一个矿泉水瓶和一个建筑垃圾堆,在特征层…

2026/10/18 2:39:02 阅读更多 →
Unity 性能优化:减少透明物体带来的开销

Unity 性能优化:减少透明物体带来的开销

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 2:39:02 阅读更多 →
Unity Timeline检视面板完全指南:轨道、剪辑与混合技巧详解

Unity Timeline检视面板完全指南:轨道、剪辑与混合技巧详解

做Timeline内容这几年,如果让我选一个“最容易被新手忽略、却又最值得花时间研究”的地方,我一定选检视面板。前面几篇讲了Timeline怎么建、轨道怎么摆、素材怎么拖,很多同学以为会这些就够用了,可一旦开始调细节,比如…

2026/10/18 2:39:02 阅读更多 →
UE5 C++实现自动开关门:委托绑定与TimeLine驱动全解析

UE5 C++实现自动开关门:委托绑定与TimeLine驱动全解析

做UE项目时接了个开关门的功能,需求本身不复杂:玩家走到门口,门自动打开,离开后自动关闭。但就是这么一个“看起来不难”的功能,在C里却牵扯出两个容易卡壳的点——一个是TimeLine组件的驱动方式,另一个是盒…

2026/10/18 2:39:02 阅读更多 →
纯CSS打造黑胶唱片机:材质、动画与性能优化全攻略

纯CSS打造黑胶唱片机:材质、动画与性能优化全攻略

1. 为什么说CSS不是“改样式”的活,而是视觉魔法早些年我刚入行的时候,团队里流行一句话:“CSS不就是调调颜色、改改间距吗?”说这话的人,后来基本都在某个深夜被一段CSS动画折磨到怀疑人生。这个被无数人低估的语言&a…

2026/10/18 2:39:02 阅读更多 →
Deep Agents框架:AI代理核心任务规划与分解实战解析

Deep Agents框架:AI代理核心任务规划与分解实战解析

先聊个我最近遇到的典型场景。某次我给一个自己搭的Agent下达任务:“帮我整理本周行业资讯,输出一份简报”。结果它整整回复了八百字,格式工整、措辞得体,可仔细一看,全是通用建议——没有真正的资讯来源,没…

2026/10/18 2:38:02 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →