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

解决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

参考链接

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

猜你喜欢

转载自blog.csdn.net/qq_27889821/article/details/82378354
今日推荐