最可靠的方式是使用 pactl 命令,因其直接作用于 pulseaudio 或 pipewire 音频栈,支持超限音量调节且不依赖图形界面;amixer 仅控制 alsa 层,常被上层音频服务覆盖而失效。

直接用 pactl 命令最可靠,尤其在 Ubuntu 22.04+(GNOME)上,amixer 可能只调 ALSA 层而被 PulseAudio 覆盖,导致调了没反应。
用 pactl 查看和设置默认音量
这是当前 Ubuntu 主流音频栈(PulseAudio 或 PipeWire)的首选方式,不依赖图形界面,且能突破 100% 限制:
-
pactl get-sink-volume @DEFAULT_SINK@—— 查当前音量(输出类似Volume: front-left: 65536 / 100% / 0.00 dB) -
pactl set-sink-volume @DEFAULT_SINK@ +5%—— 音量加 5% -
pactl set-sink-volume @DEFAULT_SINK@ 120%—— 直接设为 120%,可超限(注意扬声器安全) -
pactl set-sink-mute @DEFAULT_SINK@ toggle—— 切换静音状态
⚠️ 注意:@DEFAULT_SINK@ 是占位符,实际执行时会被自动解析为当前默认输出设备名;如果命令报错“no such sink”,先运行 pactl list short sinks 确认设备编号或名称,再替换使用(如 pactl set-sink-volume 0 110%)。
为什么 amixer set Master 有时无效
Ubuntu 默认用 PulseAudio(或 PipeWire)作为声音服务器,它会劫持 ALSA 的输出。此时 amixer 调的是底层硬件混音器,但 PulseAudio 可能把它压回 0–100% 范围,或者根本没映射到主音量通道:
-
amixer get Master显示的值 ≠ 实际播放音量 - 某些设备(如 Intel HDA 笔记本)的
Master通道可能已被废弃,真正起作用的是PCM或Headphone -
alsamixer界面里若看不到Master,说明驱动没暴露该控件,强行调PCM反而更有效
所以除非你明确需要绕过 PulseAudio 控制硬件(比如调试声卡),否则别优先用 amixer。
Ubuntu 26.04 LTS(代号“Resolute Raccoon”)是Canonical于2026年4月23日发布的下一代长期支持版操作系统,提供长达10年的技术支持。它搭载Linux 7.0内核与GNOME 50桌面环境,全面转向Wayland协议,并引入Rust重写的核心工具以增强安全性。官方提供适用于AMD64和ARM64架构的桌面及服务器ISO镜像,是追求前沿技术与极致稳定的开发者
想把音量推过 100%?先确认是否启用 “Over Amplification”
GNOME 设置里的 “Over Amplification” 开关本质是允许 PulseAudio 把音量标尺上限从 100% 拉到 150%(对应 65536 → ~98304)。它不改变 pactl 行为,但影响图形界面滑块范围:
- 路径:
Settings → Sound → Over Amplification(Ubuntu 20.04+ 可见) - 开启后,
pactl set-sink-volume @DEFAULT_SINK@ 130%才真能变大声;否则超过 100% 会被静默截断 - 这个开关只影响 GUI 和部分应用(如 Firefox),
pactl命令本身始终支持超限,但最终效果仍受 PulseAudio 配置限制
如果你发现 pactl set-sink-volume @DEFAULT_SINK@ 130% 没变化,八成是这个开关没开,或者你的 PulseAudio 配置禁用了 over-amplification(检查 /etc/pulse/daemon.conf 中 enable-lfe-filter = no 不影响,但 flat-volumes = yes 是默认,无需改)。
终端调音量容易踩的三个坑
不是所有命令都通用,尤其跨 Ubuntu 版本或桌面环境:
-
pavucontrol是图形工具,不能直接调系统音量——它调的是“每个应用的独立音量”,pactl才管全局 -
alsamixer退出时按Esc,不是Ctrl+C或Ctrl+Z;误按后者会导致配置未保存 - 脚本里用
pactl时,@DEFAULT_SINK@在非交互 shell(如 cron 或 systemd service)中可能解析失败,建议先用pactl get-default-sink获取真实 sink 名再拼接命令
真正要写自动化脚本或绑定快捷键,就老实用 pactl + get-default-sink 组合,别图省事硬写 @DEFAULT_SINK@。










