解决Ubuntu网易云音乐无法打开的问题

解决Ubuntu网易云音乐无法打开的问题

自己写的脚本程序,勉强凑合能听歌


1. 背景

网上的解决方案主要分为两类

  • 用root用户运行
  • 添加--no-sandbox

用root用户,权限太高,总觉得不放心
添加--no-sandbox后重启后第一次确实能打开网易云,但退出后,再取打开就打不开了

还有一种方法是说需要在任务管理器中结束一个进程才能打开,当时不太明白。

直到后来,我发现,打开网易云没反应时,再打开一次,然后在任务管理器中结束第一次打开的网易云音乐进程,第二次打开网易云就会出现

可以参考此处

2. 脚本化

PS:脚本已做更改,请使用第四部分的脚本,此部分仅作参考

反复尝试确认没问题后,就写了一个脚本:

首先创建一个文件

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

保存后,别忘记把文件变成可执行文件:

sudo chmod a+x /opt/startup-clou-music
chmod a+x ~/Desktop/netease-cloud-music.desktop

这样之后就能使用了。

注:脚本的延时选取可能不合适,有时候无法打开,多点几次就好

3. 待改进

获取第一次打开的网易云PID的命令写的有些bug,哪位大神有更好的建议,欢迎评论指正。

4. 9月6日补充

脚本略做更改

#!/bin/bash

var0last=0
while :
do
  var0=$(ps -eo pid,comm |grep netease)
  var0=$(echo $var0 | awk '{print $1}')
  if [ -z "$var0" ]
  then
    break
  fi
  if [ "$var0" != "$var0last" ]
  then
    kill -9 $var0
    var0last=$var
  fi
  echo -n +
done

echo -n "kill done"

setsid netease-cloud-music>/dev/null 2>&1 &
while :
do
  proclist=$(ps -eo pid,comm |grep netease)
  pid3=$(echo $proclist | awk '{print $5}')
  pid1=$(echo $proclist | awk '{print $1}')
  echo -n ${pid3}+
  if [ -n "$pid3" ]
  then
    break
  fi
done


setsid netease-cloud-music>/dev/null 2>&1 &
while :
do
  proclist2=$(ps -eo pid,comm |grep netease)
  pid5=$(echo $proclist2 | awk '{print $9}')
  echo -n ${pid5}+
  if [ -n "$pid5" ]
  then
    break
  fi
done
sleep 2
echo -n -e "\n"

kill -9 $pid1

参考链接

http://www.linuxdiyf.com/linux/32725.html


版权声明:本文为qq_27889821原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。