Linux下使用alsamixer配置系统默认的声卡设备(默认音频输出设备、输入设备、系统音量)

简介: Linux下使用alsamixer配置系统默认的声卡设备(默认音频输出设备、输入设备、系统音量)

一、系统环境

操作系统:  ubuntu 18.04  64位

二、查看系统有哪些声卡可用(麦克风和扬声器)

当系统下存在多个麦克风或者扬声器的时候,配置默认的设备是很有必要的。

2.1  运行alsamixer命令,打开图形界面

wbyq@wbyq:~$ alsamixer

打开图形界面之后,按下F6,即可查看系统默认的声卡。在我的电脑上插了一个USB摄像头,带音频输入,在下图里就能看到两个声卡。退出图形界面按下Esc按键(键盘左上角)。

image.png

没有alsamixer命令,安装一个即可: sudo apt-get install alsa-utils

wbyq@wbyq:~$ sudo apt-get install alsa-utils
[sudo] wbyq 的密码: 
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
alsa-utils 已经是最新版 (1.1.3-1ubuntu1)。
alsa-utils 已设置为手动安装。
下列软件包是自动安装的并且现在不需要了:
  libavdevice57 libavfilter6 libavresample3 libdc1394-22 libflite1 libmysofa0 libnorm1 libpgm-5.2-0 librubberband2
  libsdl2-2.0-0 libwayland-egl1-mesa libzmq5
使用'sudo apt autoremove'来卸载它(它们)。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 88 个软件包未被升级。

2.2 查看 /proc/asound目录查看声卡

wbyq@wbyq:~$ cd /proc/asound
wbyq@wbyq:/proc/asound$ ls
AudioPCI  card0  card1  cards  devices  hwdep  modules  oss  pcm  seq  timers  U0x46d0x825  version

2.3 查看/proc/asound/cards文件查看声卡

wbyq@wbyq:/proc/asound$ cat /proc/asound/cards
 0 [AudioPCI       ]: ENS1371 - Ensoniq AudioPCI
                      Ensoniq AudioPCI ENS1371 at 0x2040, irq 16
 1 [U0x46d0x825    ]: USB-Audio - USB Device 0x46d:0x825
                      USB Device 0x46d:0x825 at usb-0000:03:00.0-2, high speed

2.4 通过arecord -l 命令查看系统的麦克风/音频输入设备 (扬声器不会出现)

wbyq@wbyq:/proc/asound$ arecord -l
**** CAPTURE 硬體裝置清單 ****
card 0: AudioPCI [Ensoniq AudioPCI], device 0: ES1371/1 [ES1371 DAC2/ADC]
  子设备: 1/1
  子设备 #0: subdevice #0
card 1: U0x46d0x825 [USB Device 0x46d:0x825], device 0: USB Audio [USB Audio]
  子设备: 1/1
  子设备 #0: subdevice #0

2.5 通过aplay -l 命令查看系统的扬声器音频输出设备

wbyq@wbyq:/proc/asound$ aplay -l
**** PLAYBACK 硬體裝置清單 ****
card 0: AudioPCI [Ensoniq AudioPCI], device 0: ES1371/1 [ES1371 DAC2/ADC]
  子设备: 1/1
  子设备 #0: subdevice #0
card 0: AudioPCI [Ensoniq AudioPCI], device 1: ES1371/2 [ES1371 DAC1]
  子设备: 1/1
  子设备 #0: subdevice #0

通过打印的列表可以看到里面没有USB的设备,因为我插入的USB摄像头只有音频输入功能,没有音频输出功能。

三、设置系统默认的音量

3.1. 使用 alsamixer 图形界面手动设置

打开图形界面之后,按下键盘上的方向键即可设置音量。

image.png

3.2 输入命令自动设置

wbyq@wbyq:~$ amixer set Master 100%

后面的100%是音频输出的百分比,100%就是最大声音。 可以在0~100之间调节。

四、测试声卡设备是否正常(录音和放音)

4.1  使用系统默认声卡录音和放音

wbyq@wbyq:~$ arecord -d 10 test.wav
正在录音 WAVE 'test.wav' : Unsigned 8 bit, 频率8000Hz, Mono
wbyq@wbyq:~$ aplay test.wav
正在播放 WAVE 'test.wav' : Unsigned 8 bit, 频率8000Hz, Mono

第一条命令是录音命令,-d 10表示录制10秒声音,test.wav是保存的文件名称。

第二条命令是播放声音文件。

4.2 使用指定声卡录音和放音

wbyq@wbyq:~$ arecord -D hw:0 -d 3 test.wav
正在录音 WAVE 'test.wav' : Unsigned 8 bit, 频率8000Hz, Mono
wbyq@wbyq:~$ aplay -D hw:0 test.wav 
正在播放 WAVE 'test.wav' : Unsigned 8 bit, 频率8000Hz, Mono

 其中-D hw:x  表示指定第几个声卡。 使用aplay -l和arecord -l命令可以查看系统的录音设备列表和扬声器设备列表。

为了测试当前我在电脑上插入了一个USB声卡设备。

image.png

这是一款USB免驱声卡,插入电脑后,再次查看声卡设备,即可看到,多了一个录音设备和一个扬声器设备。

wbyq@wbyq:~$ arecord -l
**** CAPTURE 硬體裝置清單 ****
card 0: AudioPCI [Ensoniq AudioPCI], device 0: ES1371/1 [ES1371 DAC2/ADC]
  子设备: 1/1
  子设备 #0: subdevice #0
card 1: Device [USB PnP Sound Device], device 0: USB Audio [USB Audio]
  子设备: 1/1
  子设备 #0: subdevice #0
wbyq@wbyq:~$ aplay -l
**** PLAYBACK 硬體裝置清單 ****
card 0: AudioPCI [Ensoniq AudioPCI], device 0: ES1371/1 [ES1371 DAC2/ADC]
  子设备: 1/1
  子设备 #0: subdevice #0
card 0: AudioPCI [Ensoniq AudioPCI], device 1: ES1371/2 [ES1371 DAC1]
  子设备: 1/1
  子设备 #0: subdevice #0
card 1: Device [USB PnP Sound Device], device 0: USB Audio [USB Audio]
  子设备: 0/1
  子设备 #0: subdevice #0

使用插入的USB声卡进行录音和放音:

wbyq@wbyq:~$ arecord -D hw:1 -f S16_LE -r 44100 -d 3 test.wav
正在录音 WAVE 'test.wav' : Signed 16 bit Little Endian, 频率44100Hz, Mono
wbyq@wbyq:~$ aplay -D hw:1 test.wav
正在播放 WAVE 'test.wav' : Signed 16 bit Little Endian, 频率44100Hz, Mono

其中的-r 指定采样率,-f 指定每个采样点的位数--样本大小。

如果播放的是PCM文件可以这样设置:

aplay -t raw -c 1 -f S16_LE -r 8000 test.pcm 
-t: type raw表示是PCM 
-c: channel 1 
-f S16_LE: Signed 16bit-width Little-Endian 
-r: sample rate 8000 

4.3  指定默认声卡问题解决

注意: 直接-D hw:X指定声卡的话有些情况下,会因为采样率、各种问题导致无法播放,推荐使用下面方式指定声卡设备。

查看系统支持的声卡详细信息:

wbyq@wbyq:~$ aplay -L
null
    Discard all samples (playback) or generate zero samples (capture)
pulse
    PulseAudio Sound Server
default
    Playback/recording through the PulseAudio sound server
sysdefault:CARD=AudioPCI
    Ensoniq AudioPCI, ES1371 DAC2/ADC
    Default Audio Device
front:CARD=AudioPCI,DEV=0
    Ensoniq AudioPCI, ES1371 DAC2/ADC
    Front speakers
rear:CARD=AudioPCI,DEV=0
    Ensoniq AudioPCI, ES1371 DAC1
    Rear speakers
surround40:CARD=AudioPCI,DEV=0
    Ensoniq AudioPCI, ES1371 DAC2/ADC
    4.0 Surround output to Front and Rear speakers
iec958:CARD=AudioPCI,DEV=0
    Ensoniq AudioPCI, ES1371 DAC2/ADC
    IEC958 (S/PDIF) Digital Audio Output
dmix:CARD=AudioPCI,DEV=0
    Ensoniq AudioPCI, ES1371 DAC2/ADC
    Direct sample mixing device
dmix:CARD=AudioPCI,DEV=1
    Ensoniq AudioPCI, ES1371 DAC1
    Direct sample mixing device
dsnoop:CARD=AudioPCI,DEV=0
    Ensoniq AudioPCI, ES1371 DAC2/ADC
    Direct sample snooping device
dsnoop:CARD=AudioPCI,DEV=1
    Ensoniq AudioPCI, ES1371 DAC1
    Direct sample snooping device
hw:CARD=AudioPCI,DEV=0
    Ensoniq AudioPCI, ES1371 DAC2/ADC
    Direct hardware device without any conversions
hw:CARD=AudioPCI,DEV=1
    Ensoniq AudioPCI, ES1371 DAC1
    Direct hardware device without any conversions
plughw:CARD=AudioPCI,DEV=0
    Ensoniq AudioPCI, ES1371 DAC2/ADC
    Hardware device with all software conversions
plughw:CARD=AudioPCI,DEV=1
    Ensoniq AudioPCI, ES1371 DAC1
    Hardware device with all software conversions
sysdefault:CARD=Device
    USB PnP Sound Device, USB Audio
    Default Audio Device
front:CARD=Device,DEV=0
    USB PnP Sound Device, USB Audio
    Front speakers
surround21:CARD=Device,DEV=0
    USB PnP Sound Device, USB Audio
    2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=Device,DEV=0
    USB PnP Sound Device, USB Audio
    4.0 Surround output to Front and Rear speakers
surround41:CARD=Device,DEV=0
    USB PnP Sound Device, USB Audio
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=Device,DEV=0
    USB PnP Sound Device, USB Audio
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=Device,DEV=0
    USB PnP Sound Device, USB Audio
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=Device,DEV=0
    USB PnP Sound Device, USB Audio
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=Device,DEV=0
    USB PnP Sound Device, USB Audio
    IEC958 (S/PDIF) Digital Audio Output
dmix:CARD=Device,DEV=0
    USB PnP Sound Device, USB Audio
    Direct sample mixing device
dsnoop:CARD=Device,DEV=0
    USB PnP Sound Device, USB Audio
    Direct sample snooping device
hw:CARD=Device,DEV=0
    USB PnP Sound Device, USB Audio
    Direct hardware device without any conversions
plughw:CARD=Device,DEV=0
    USB PnP Sound Device, USB Audio
    Hardware device with all software conversions
wbyq@wbyq:~$ 

使用指定声卡播放音频文件:

wbyq@wbyq:~$ aplay -D plughw:CARD=Device,DEV=0 lu_xian_pian_li.wav

-D后面指定的声卡名称,要在列表里找到对应声卡 plughw: 字段 开头的进行使用。

五、设置系统默认的麦克风设备和扬声器设备

5.1  创建声卡配置文件

针对全局配置: 在/etc目录下创建文件asound.conf

针对指定用户配置: 在用户目录下创建文件.asoundrc

5.2 配置代码

在上面文件里写入下面配置代码即可生效,其中1表示表示使用的声卡编号。前面介绍了如何查看声卡编号。

defaults.ctl.card 1
defaults.pcm.card 1
defaults.timer.card 1

其中“pcm”选项决定用来播放音频的设备,而“ctl”选项决定那个声卡能够由控制工具(如 alsamixer)使用。

 

也可以直接指定声卡名称。

得到当前系统可用扬声器的设备名称:

wbyq@wbyq:~$ cat /proc/asound/cards
 0 [AudioPCI       ]: ENS1371 - Ensoniq AudioPCI
                      Ensoniq AudioPCI ENS1371 at 0x2040, irq 16
 1 [U0x46d0x825    ]: USB-Audio - USB Device 0x46d:0x825
                      USB Device 0x46d:0x825 at usb-0000:03:00.0-2, high speed
 2 [Device         ]: USB-Audio - USB PnP Sound Device
                      C-Media Electronics Inc. USB PnP Sound Device at usb-0000:03:00.0-3.1, full spe
wbyq@wbyq:~$ 
wbyq@wbyq:~$ aplay -l | awk -F \: '/,/{print $2}' | awk '{print $1}' | uniq
AudioPCI
Device

得到当前系统可用麦克风的设备名称:

wbyq@wbyq:~$ arecord -l
**** CAPTURE 硬體裝置清單 ****
card 0: AudioPCI [Ensoniq AudioPCI], device 0: ES1371/1 [ES1371 DAC2/ADC]
  子设备: 1/1
  子设备 #0: subdevice #0
card 1: U0x46d0x825 [USB Device 0x46d:0x825], device 0: USB Audio [USB Audio]
  子设备: 1/1
  子设备 #0: subdevice #0
card 2: Device [USB PnP Sound Device], device 0: USB Audio [USB Audio]
  子设备: 1/1
  子设备 #0: subdevice #0
wbyq@wbyq:~$ arecord -l | awk -F \: '/,/{print $2}' | awk '{print $1}' | uniq
AudioPCI
U0x46d0x825
Device

指定设备的语法:

针对全局配置: 在/etc目录下创建文件asound.conf   针对指定用户配置: 在用户目录下创建文件.asoundrc

pcm.!default {
type hw
card 声卡名称
}
ctl.!default {
type hw
card 声卡名称
}

配置文件参考链接:https://wiki.archlinux.org/index.php/PulseAudio#default.pa

image.png

使用查看声卡详细配置列表:得到麦克风和扬声器的名称

wbyq@wbyq:~$ pacmd list-cards
1 card(s) available.
    index: 0
  name: <alsa_card.pci-0000_02_02.0>
  driver: <module-alsa-card.c>
  owner module: 7
  properties:
    alsa.card = "0"
    alsa.card_name = "Ensoniq AudioPCI"
    alsa.long_card_name = "Ensoniq AudioPCI ENS1371 at 0x2040, irq 16"
    alsa.driver_name = "snd_ens1371"
    device.bus_path = "pci-0000:02:02.0"
    sysfs.path = "/devices/pci0000:00/0000:00:11.0/0000:02:02.0/sound/card0"
    device.bus = "pci"
    device.vendor.id = "1274"
    device.vendor.name = "Ensoniq"
    device.product.id = "1371"
    device.product.name = "ES1371/ES1373 / Creative Labs CT2518 (Audio PCI 64V/128/5200 / Creative CT4810/CT5803/CT5806 [Sound Blaster PCI])"
    device.string = "0"
    device.description = "ES1371/ES1373 / Creative Labs CT2518 (Audio PCI 64V/128/5200 / Creative CT4810/CT5803/CT5806 [Sound Blaster PCI])"
    module-udev-detect.discovered = "1"
    device.icon_name = "audio-card-pci"
  profiles:
    input:analog-mono: 模拟单声道 输入 (priority 2, available: unknown)
    input:analog-stereo: 模拟立体声 输入 (priority 60, available: unknown)
    output:analog-mono: 模拟单声道 输出 (priority 200, available: unknown)
    output:analog-mono+input:analog-mono: 模拟单声道双工 (priority 202, available: unknown)
    output:analog-mono+input:analog-stereo: 模拟单声道 输出 + 模拟立体声 输入 (priority 260, available: unknown)
    output:analog-stereo: 模拟立体声 输出 (priority 6000, available: unknown)
    output:analog-stereo+input:analog-mono: 模拟立体声 输出 + 模拟单声道 输入 (priority 6002, available: unknown)
    output:analog-stereo+input:analog-stereo: 模拟立体声双工 (priority 6060, available: unknown)
    off: 关 (priority 0, available: unknown)
  active profile: <output:analog-stereo+input:analog-stereo>
  sinks:
    alsa_output.pci-0000_02_02.0.analog-stereo/#0: ES1371/ES1373 / Creative Labs CT2518 (Audio PCI 64V/128/5200 / Creative CT4810/CT5803/CT5806 [Sound Blaster PCI]) 模拟立体声
  sources:
    alsa_output.pci-0000_02_02.0.analog-stereo.monitor/#0: Monitor of ES1371/ES1373 / Creative Labs CT2518 (Audio PCI 64V/128/5200 / Creative CT4810/CT5803/CT5806 [Sound Blaster PCI]) 模拟立体声
    alsa_input.pci-0000_02_02.0.analog-stereo/#1: ES1371/ES1373 / Creative Labs CT2518 (Audio PCI 64V/128/5200 / Creative CT4810/CT5803/CT5806 [Sound Blaster PCI]) 模拟立体声
  ports:
    analog-input-mic: 话筒 (priority 8700, latency offset 0 usec, available: unknown)
      properties:
        device.icon_name = "audio-input-microphone"
    analog-input-linein: 输入插孔 (priority 8100, latency offset 0 usec, available: unknown)
      properties:
    analog-input-aux: 模拟输入 (priority 8000, latency offset 0 usec, available: unknown)
      properties:
    analog-input-video: 视频 (priority 7000, latency offset 0 usec, available: unknown)
      properties:
    analog-output: 模拟输出 (priority 9900, latency offset 0 usec, available: unknown)
      properties:
wbyq@wbyq:~$

image.png

wbyq@wbyq:~$ gedit .asoundrc 
ctl.!default {
     type pulse
     sink "alsa_output.pci-0000_02_02.0.analog-stereo"
     source "alsa_input.pci-0000_02_02.0.analog-stereo"
 }

image.png

声卡的名称也可以通过QT的代码的获取:

 foreach (const QAudioDeviceInfo &deviceInfo, QAudioDeviceInfo::availableDevices(QAudio::AudioOutput))
          qDebug() << "当前系统可用的扬声器: " << deviceInfo.deviceName();
    foreach (const QAudioDeviceInfo &deviceInfo, QAudioDeviceInfo::availableDevices(QAudio::AudioInput))
          qDebug() << "当前系统可用的麦克风: " << deviceInfo.deviceName();
当前系统可用的扬声器:  "default"
当前系统可用的扬声器:  "pulse"
当前系统可用的扬声器:  "sysdefault:CARD=AudioPCI"
当前系统可用的扬声器:  "front:CARD=AudioPCI,DEV=0"
当前系统可用的扬声器:  "rear:CARD=AudioPCI,DEV=0"
当前系统可用的扬声器:  "surround40:CARD=AudioPCI,DEV=0"
当前系统可用的扬声器:  "iec958:CARD=AudioPCI,DEV=0"
当前系统可用的扬声器:  "dmix:CARD=AudioPCI,DEV=0"
当前系统可用的扬声器:  "dmix:CARD=AudioPCI,DEV=1"
当前系统可用的扬声器:  "dsnoop:CARD=AudioPCI,DEV=0"
当前系统可用的扬声器:  "dsnoop:CARD=AudioPCI,DEV=1"
当前系统可用的扬声器:  "hw:CARD=AudioPCI,DEV=0"
当前系统可用的扬声器:  "hw:CARD=AudioPCI,DEV=1"
当前系统可用的扬声器:  "plughw:CARD=AudioPCI,DEV=0"
当前系统可用的扬声器:  "plughw:CARD=AudioPCI,DEV=1"
当前系统可用的扬声器:  "alsa_output.pci-0000_02_02.0.analog-stereo"
当前系统可用的麦克风:  "default"
当前系统可用的麦克风:  "pulse"
当前系统可用的麦克风:  "sysdefault:CARD=AudioPCI"
当前系统可用的麦克风:  "front:CARD=AudioPCI,DEV=0"
当前系统可用的麦克风:  "iec958:CARD=AudioPCI,DEV=0"
当前系统可用的麦克风:  "dmix:CARD=AudioPCI,DEV=0"
当前系统可用的麦克风:  "dsnoop:CARD=AudioPCI,DEV=0"
当前系统可用的麦克风:  "hw:CARD=AudioPCI,DEV=0"
当前系统可用的麦克风:  "plughw:CARD=AudioPCI,DEV=0"
当前系统可用的麦克风:  "alsa_input.pci-0000_02_02.0.analog-stereo"
当前系统可用的麦克风:  "alsa_output.pci-0000_02_02.0.analog-stereo.monitor"

目录
相关文章
|
22天前
|
存储 缓存 监控
Linux缓存管理:如何安全地清理系统缓存
在Linux系统中,内存管理至关重要。本文详细介绍了如何安全地清理系统缓存,特别是通过使用`/proc/sys/vm/drop_caches`接口。内容包括清理缓存的原因、步骤、注意事项和最佳实践,帮助你在必要时优化系统性能。
159 78
|
25天前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
57 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
12天前
|
Ubuntu Unix Linux
Linux网络文件系统NFS:配置与管理指南
NFS 是 Linux 系统中常用的网络文件系统协议,通过配置和管理 NFS,可以实现跨网络的文件共享。本文详细介绍了 NFS 的安装、配置、管理和常见问题的解决方法,希望对您的工作有所帮助。通过正确配置和优化 NFS,可以显著提高文件共享的效率和安全性。
95 7
|
21天前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
89 13
|
22天前
|
Ubuntu Linux C++
Win10系统上直接使用linux子系统教程(仅需五步!超简单,快速上手)
本文介绍了如何在Windows 10上安装并使用Linux子系统。首先,通过应用商店安装Windows Terminal和Linux系统(如Ubuntu)。接着,在控制面板中启用“适用于Linux的Windows子系统”并重启电脑。最后,在Windows Terminal中选择安装的Linux系统即可开始使用。文中还提供了注意事项和进一步配置的链接。
40 0
|
1月前
|
存储 Oracle 安全
服务器数据恢复—LINUX系统删除/格式化的数据恢复流程
Linux操作系统是世界上流行的操作系统之一,被广泛用于服务器、个人电脑、移动设备和嵌入式系统。Linux系统下数据被误删除或者误格式化的问题非常普遍。下面北亚企安数据恢复工程师简单聊一下基于linux的文件系统(EXT2/EXT3/EXT4/Reiserfs/Xfs) 下删除或者格式化的数据恢复流程和可行性。
|
2月前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
162 8
|
2月前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
640 6
|
2月前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
111 3
|
1月前
|
Linux Shell
Linux 10 个“who”命令示例
Linux 10 个“who”命令示例
61 14
Linux 10 个“who”命令示例