解决Ubuntu网易云音乐无法打开的问题
自己写的脚本程序,勉强凑合能听歌
1. 背景
网上的解决方案主要分为两类
- 用root用户运行
- 添加
--no-sandbox
用root用户,权限太高,总觉得不放心
添加--no-sandbox
后重启后第一次确实能打开网易云,但退出后,再取打开就打不开了
还有一种方法是说需要在任务管理器中结束一个进程才能打开,当时不太明白。
直到后来,我发现,打开网易云没反应时,再打开一次,然后在任务管理器中结束第一次打开的网易云音乐进程,第二次打开网易云就会出现
可以参考此处。
2. 脚本化
反复尝试确认没问题后,就写了一个脚本:
首先创建一个文件
sudo vim /opt/startup-clou-music
然后在vim
中编辑保存如下脚本
#!/bin/bash
# 如果先前存在网易云进程,则杀掉
# 获取进程PID
var0=$(ps -eo pid,comm |grep netease)
if [ -n "$var0" ]
then
var0=$(echo $var0 | awk '{print $1}')
kill -9 $var0
fi
# 第一次打开网易云
setsid netease-cloud-music>/dev/null 2>&1 &
sleep 1
# 获取第一次打开的网易云的PID
var2=$(ps -eo pid,comm |grep netease)
var2=$(echo $var2 | awk '{print $1}')
# 第二次打开网易云
setsid netease-cloud-music>/dev/null 2>&1 &
sleep 1.5
# 杀掉第一个进程
kill -9 $var2
然后在桌面创建快捷方式,最好不要改/usr/share/applications
下的快捷方式。
cd ~/Desktop/
vim netease-cloud-music.desktop
netease-cloud-music.desktop
文件内容如下
[Desktop Entry]
Version=1.0
Type=Application
Name=NetEase Cloud Music
Comment=NetEase Cloud Music
Icon=netease-cloud-music
Exec=/opt/startup-cloud-music
Categories=AudioVideo;Player;
Terminal=false
StartupNotify=true
StartupWMClass=netease-cloud-music
MimeType=audio/aac;audio/flac;audio/mp3;audio/mp4;audio/mpeg;audio/ogg;audio /x-ape;audio/x-flac;audio/x-mp3;audio/x-mpeg;audio/x-ms-wma;audio/x-vorbis;a udio/x-vorbis+ogg;audio/x-wav;
保存后,别忘记把文件变成可执行文件:
sudo chmod a+x /opt/startup-clou-music
chmod a+x ~/Desktop/netease-cloud-music.desktop
这样之后就能使用了。
*注:脚本的延时选取可能不合适,有时候无法打开,多点几次就好*
3. 待改进
获取第一次打开的网易云PID的命令写的有些bug,哪位大神有更好的建议,欢迎评论指正。
9月5日补充
脚本略做更改
#!/bin/bash
var0=$(ps -eo pid,comm |grep netease)
if [ -n "$var0" ]
then
var0=$(echo $var0 | awk '{print $1}')
else
setsid netease-cloud-music>/dev/null 2>&1 &
while :
do
var0=$(ps -eo pid,comm |grep netease)
var0=$(echo $var0 | awk '{print $5}')
echo -n ${var0}+
if [ -n "$var0" ]
then
var0=$(ps -eo pid,comm |grep netease)
var0=$(echo $var0 | awk '{print $1}')
break
fi
done
fi
setsid netease-cloud-music>/dev/null 2>&1 &
while :
do
var1=$(ps -eo pid,comm |grep netease)
var1=$(echo $var1 | awk '{print $9}')
echo -n ${var1}+
if [ -n "$var1" ]
then
break
fi
done
echo -n -e "\n"
sleep 2
kill -9 $var0