如何在不注销的情况下重新启动pulseaudio?

有时候pulseaudio服务会停止,当我用banshee或者totem打开音频文件时它不会自动重启。
我该如何在不注销的情况下重新启动pulseaudio呢?

2我可以大胆地建议接受TikTak的答案吗?对我来说,它有效,而得到最多赞同票的答案则有额外的不必要步骤。 - WinEunuuchs2Unix
TikTak的回答并不是在Ubuntu 2020版本中重新启动PulseAudio的正确方法。应该使用systemctl来重新启动PulseAudio。 - kas
还请注意,自Ubuntu 22.10起,默认的音频系统是Pipewire,因此您可能需要使用它:https://askubuntu.com/questions/230888/is-there-another-way-to-restart-the-sound-system-if-pulseaudio-alsa-dont-work/1374982#1374982 - undefined
10个回答

我解决了我的问题。
检查是否有任何 pulseaudio 实例正在运行: ``` pulseaudio --check ```
通常情况下,它不会输出任何内容,只会返回退出代码。如果返回的是0,表示程序正常运行。 我的程序没有正常运行,所以我直接跳到第三步。
如果有任何实例正在运行,请将其关闭: ``` pulseaudio -k ```
最后,再次以守护进程的方式启动pulseaudio: ``` pulseaudio -D ```
重新启动Banshee并享受音乐吧!

5对我来说,检查没有显示任何东西,即使-k停止了音频播放,这暗示着pulseaudio正在运行。 - Cerin
10对我来说,pulseaudio经常出现问题(忘记一个sink),以至于pulseaudio -k无法解决。在执行sudo killall pulseaudio之后,一切重新启动并正常工作。(Ubuntu 16.04) - Raphael
10FYI,第一步:"pulseaudio --check通常不会输出任何内容,只会退出代码0,表示正在运行" => 所以,没有输出,它正在运行;但是,如果您仍然想要检查退出代码,可以运行:echo $?,如果正在运行,则应该打印0。($?是上一个命令的退出代码。如果您运行两次,则会打印echo的退出代码) - michael
2你可以将步骤1和2合并成这样:pulseaudio --check && pulseaudio -k - 只有在检查返回0(运行中)时才会执行kill操作。 - Jeff Ward
1结合Raphael和Jeff的观察,我经常发现自己在运行pulseaudio --check && (pulseaudio -k || sudo killall pulseaudio) - Nick Bull
@NickBull 不应该是 pulseaudio --check && pulseaudio -k || sudo killall pulseaudio 吗? - Rohlik

Pulseaudio是一个用户服务,所以:
systemctl --user restart pulseaudio.service

还有这个:
systemctl --user restart pulseaudio.socket

对于检查,将restart替换为status


7要以普通用户身份运行,当然是运行pulseaudio的用户。应该是最佳答案。我必须说,对我来说,pulseaudio一直运行良好。但在升级了一些库之后,它需要重新启动。 - Stéphane
1这对我来说是正确的答案。pulseaudio -k 不会产生任何结果。另一个有效的选项是 killall pulseaudio - nyxee
3这是针对使用SystemD启动PulseAudio作为已登录用户的Ubuntu和其他发行版的正确答案。 - TrinitronX

在标准设置中运行pulseaudio -k会重新启动守护进程。没有其他事情要做。
如果pulseaudio没有运行,只需键入pulseaudio而不添加其他选项,将使用/etc/pulse/daemon.conf/etc/pulse/default.pa中的默认值启动守护进程。 ~/.pulse/~/.config/pulse/中的用户定义设置将覆盖系统范围的设置。如果出现问题,通常可以通过删除这些目录然后重新启动pulseaudio来解决。
有关详细信息,请参阅PulseAudio Wiki

即使文件权限看起来正常:-rwxr-xr-x+ 1 root root 87K Jun 21 08:09 /usr/bin/pulseaudio,但是/usr/bin/pulseaudio返回bash: /usr/bin/pulseaudio: Permission denied - Thorsten Niehues
因为守护进程以 root 身份运行 - username.ak
运行rm ~/.config/pulse/*然后执行pulseaudio -k就解决了问题。 - WinEunuuchs2Unix
1@Takkat 什么?pulseaudio -k是用来终止守护进程的,没有其他意思。手册上已经非常清楚了。你需要之后运行pulseaudio --start来启动守护进程。 - Atralb
1@Atralb 你试过我的答案了吗?如我所述,在默认安装中,pulseaudio会自动重新启动。如果你尝试第二次启动服务器,它将会报错。如果重新启动出现问题,那么你的音频设置可能存在严重问题。 - Takkat
pulseaudio -k解决了问题!我甚至不需要重新启动任何播放器,因为在运行该命令后它们的声音就恢复正常了。+1 :) - Terrance

以下方法适用于我在Ubuntu 18.04上的操作:
pulseaudio -k && sudo alsa force-reload

这简直完全杀死了声音。 - mathtick
对我来说,执行'pulseaudio -D'命令后,音频就恢复了。这会重新启动pulseaudio。 - mkV

使用service命令(仅适用于Ubuntu 14.04或更早版本):
sudo service pulseaudio restart

很遗憾,除了非常明确的指令外,我没有任何具体的知识。如果我有的话,我会解释得更多。如果你有任何想法,请随意提出。 - PowerKiKi
37Ubuntu 16.04:无法重新启动pulseaudio.service:找不到pulseaudio.service单元。 - user1182474
3pulseaudio在用户模式下运行(即当前登录的用户),没有注册“服务”。因此,该命令无法工作。 - Izzy
确实,pulseaudio运行在用户模式下。请查看我的答案 - Rolf

运行以下命令:
pulseaudio --check
pulseaudio --kill
pulseaudio --start

以下是在Ubuntu 15.10中的操作步骤:

  1. 打开终端
  2. 运行pulseaudio -k来关闭正在运行的守护进程。只有当没有守护进程在运行时,你才会收到错误信息。
  3. Ubuntu将尝试自动重新启动守护进程,假设配置没有问题。你可以运行pulseaudio --check来检查Pulseaudio是否正在运行。从check命令的干净退出(无消息)可以表明守护进程已成功启动。否则,运行pulseaudio --start来启动守护进程。如果你最近更改了配置文件并且守护进程无法启动,请检查文件中是否有错误,并使用系统日志应用程序(SystemLog app)检查Pulseaudio是否有任何消息。

如果pulseaudio无法工作与S3睡眠(挂起到RAM)有关,则真正的原因可能是音频硬件问题,然后您必须进行彻底的重置:
pulseaudio -k && sudo alsa force-reload && sleep 2 && pulseaudio -k && sudo alsa force-reload

是的,需要两次操作,之间有短暂的延迟。我不知道为什么,但这种方法似乎每次都有效。
如果你同时使用多个桌面环境(快速用户切换)
sudo killall pulseaudio && sudo alsa force-reload && sleep 2 && sudo killall pulseaudio && sudo alsa force-reload

你可以在Ubuntu 2020版本中运行以下命令来重新启动PulseAudio:
systemctl --user restart pulseaudio

2终于,一个在Ubuntu 20上有效的命令。我也不确定是什么原因导致服务在重启后无法自动重新启动,但这发生在最近的更新之后。 - lasec0203

我想给我的同名朋友@rolf的systemD答案添砖加瓦。
情景如下:
Pulseaudio被严密锁定。

你已经尝试过:

systemctl --user stop pulseaudio.service pulseaudio.socket

systemctl --user restart pulseaudio.service

systemctl --user reset-failed pulseaudio.service

仍然固执地显示着:
● pulseaudio.service - Sound Service
     Loaded: loaded (/usr/lib/systemd/user/pulseaudio.service; enabled; vendor preset: enabled)
     Active: inactive (dead) since Sun 2022-08-07 17:43:39 CEST; 8min ago
TriggeredBy: ● pulseaudio.socket
    Process: 6598 ExecStart=/usr/bin/pulseaudio --daemonize=no --log-target=journal (code=exited, status=1/FAILURE)
   Main PID: 6598 (code=exited, status=1/FAILURE)

Aug 07 17:43:39 pc1 systemd[1063]: pulseaudio.service: Failed with result 'exit-code'.
Aug 07 17:43:39 pc1 systemd[1063]: Failed to start Sound Service.
Aug 07 17:43:39 pc1 systemd[1063]: pulseaudio.service: Scheduled restart job, restart counter is at 5.
Aug 07 17:43:39 pc1 systemd[1063]: Stopped Sound Service.
Aug 07 17:43:39 pc1 systemd[1063]: pulseaudio.service: Start request repeated too quickly.
Aug 07 17:43:39 pc1 systemd[1063]: pulseaudio.service: Failed with result 'exit-code'.
Aug 07 17:43:39 pc1 systemd[1063]: Failed to start Sound Service.

重点在于重新启动计数器已超过。
如果你手动运行:
pulseaudio -vvvv
你可能会发现最后几行说:
E: [pulseaudio] pid.c: Daemon already running.
E: [pulseaudio] main.c: pa_pid_file_create() failed.

在这里,您需要找到您的用户ID的/run/user/1000/pulse目录,其中数字1000是我的用户ID号码

从命令中获取您的UID:id

在pulse运行目录中有一个名为pid的文件,请将其删除!

尝试再次启动pulseaudio -vvvv,只发现它已经绑定到DBus或绑定地址已经在使用中

E: [pulseaudio] main.c: D-Bus name org.PulseAudio1 already taken.
or
E: [pulseaudio] socket-server.c: bind(): Address already in use

所以:使用ps -ef | grep pulseaudio命令查找是否还有正在运行的进程,并使用kill -15 加上从grep中获取的pid号来终止它。
现在你可以重新启动pulseaudio了。
systemctl --user start pulseaudio.service pulseaudio.socket

你可以注销然后重新登录 :)