SFTP本身不提供查看磁盘剩余空间的功能,因为它仅限于文件传输操作,运行在受限的SFTP子系统中,不启动完整shell环境,无法执行df等系统命令;需退出SFTP改用SSH执行df -h或通过自动化脚本调用ssh远程执行。

SFTP 本身不提供查看磁盘剩余空间的功能,它只是一个安全文件传输协议,只负责文件和目录操作(如 ls、cd、put、get),无法执行系统级命令(如 df -h)。
为什么 sftp 不能查磁盘空间
因为 sftp 会话运行在受限的 SFTP 子系统中,默认只开放文件传输相关指令,不启动完整 shell 环境。即使你输入 df -h 或 !df -h,也会提示 Invalid command 或直接忽略。
替代方案:用 ssh 执行 df 命令
要查看远程服务器磁盘使用情况,需退出 sftp,改用普通 ssh 连接:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- 先退出当前 sftp 会话:
exit或bye - 再通过 ssh 登录同一台服务器:
ssh username@host - 登录后执行:
df -h(人性化显示)或df -hl(部分老系统兼容写法) - 若只想看特定挂载点(如
/home),可加路径:df -h /home
如果必须在 sftp 会话中快速获取信息
某些服务器配置了允许执行有限本地 shell 命令(通过 ! 前缀),但能否查磁盘取决于服务端是否启用扩展功能。可尝试:
-
!df -h—— 若返回结果,说明服务端支持;多数生产环境禁用此功能 -
!ls -lh /或!du -sh /var—— 仅作粗略估算,非真实剩余空间
自动化场景建议
运维脚本中需要定期检查磁盘,应避免依赖 sftp,而采用:
-
ssh user@host 'df -h | grep "/$"'(精准匹配根分区) - 配合
awk提取使用率:ssh user@host 'df -h / | awk "NR==2 {print \$5}"' - 结合监控工具(如 Prometheus + node_exporter)长期跟踪

















