Медленный отклик и системная задержка

spotify (native linux client)

Поскольку spotify содержит индикатор для управления некоторыми его функциями, это позволяет нам использовать dbus для отправки событий.

Существует отличный скрипт на ubuntuforums, который охватывает это.

Сначала установите необходимое условие:

sudo apt-get install libnet-dbus-perl

Теперь скопируйте и вставьте скрипт в текстовый файл с именем spcmd и сохраните его в своем доме

Предоставить права выполнения:

chmod +x ~/spcmd

Переместить это в более полезную папку:

mv ~/spcmd /usr/local/bin

Теперь давайте создадим быстрый список .

Сначала скопируйте файл дескриптора spotify в домашнюю папку:

mkdir -p ~/.local/share/applications
cp /usr/share/applications/spotify.desktop ~/.local/share/applications

Откройте файл и скопируйте и вставьте быстрый список в конец файла. Сохраните его.

gedit ~/.local/share/applications/spotify.desktop

end result

quicklist

X-Ayatana-Desktop-Shortcuts=PlayPause;Next;Previous;Stop;

[PlayPause Shortcut Group]
Name=PlayPause
Exec=spcmd playpause
TargetEnvironment=Unity

[Next Shortcut Group]
Name=Next
Exec=spcmd next
TargetEnvironment=Unity

[Previous Shortcut Group]
Name=Previous
Exec=spcmd previous
TargetEnvironment=Unity

[Stop Shortcut Group]
Name=Stop
Exec=spcmd stop
TargetEnvironment=Unity

spcmd

#!/usr/bin/perl

use 5.010;
use strict;
use warnings;
use File::Basename;
use Net::DBus;

# Figure out some dbus stuff
unless ( defined $ENV{'DBUS_SESSION_BUS_ADDRESS'} ) {
&set_DBUS_SESSION_BUS_ADDRESS;
#die "Don't know which dbus to attach to.\nMake sure environment variable DBUS_SESSION_BUS_ADDRESS is set.";
}
#my $bus = Net::DBus->find;
my $bus = Net::DBus->session;
my $spotify = $bus->get_service("org.mpris.MediaPlayer2.spotify");
my $player = $spotify->get_object("/org/mpris/MediaPlayer2", "org.mpris.MediaPlayer2.Player");
my $application = $spotify->get_object("/org/mpris/MediaPlayer2", "org.mpris.MediaPlayer2");
my $getorset = $spotify->get_object("/org/mpris/MediaPlayer2", "org.freedesktop.DBus.Properties");

# Handle command line argument
if (scalar @ARGV == 0) { &print_help; }
given ($ARGV[0]) {
# when ('play') { $player->Play(); } #Does not work for some reason.
when ('pause') { $player->Pause(); }
when ('playpause') { $player->PlayPause(); }
when ('next') { $player->Next(); }
when ('previous') { $player->Previous(); }
when ('stop') { $player->Stop(); }
when ('playstatus') { print $getorset->Get("org.mpris.MediaPlayer2.Player", "PlaybackStatus") . "\n"; }
when (m/\bspotify:(artist|album|track):[0-9a-zA-z]{22}\b/) { $player->OpenUri($_); }
when ('metadata-debug') { &print_debug_metadata; }
default { &print_help; }
}


# Print the help text
sub print_help {
print "USAGE: " . basename($0) . " {pause|playpause|next|previous|stop|playstatus|met adata-debug|<spotify URI>}\n\n";
print "\t" . "pause" . "\t\t" . "Causes spotify to pause current playback." . "\n";
print "\t" . "playpause" . "\t" . "Causes spotify to pause or play current playback." . "\n";
print "\t" . "next" . "\t\t" . "Goes to next song." . "\n";
print "\t" . "previous" . "\t" . "Goes to previous song." . "\n";
print "\t" . "stop" . "\t\t" . "Stops playback." . "\n";
print "\t" . "playstatus" . "\t" . "Prints current playstatus (Playing/Paused)." . "\n";
print "\t" . "<spotify URI>" . "\t" . "Starts playing supplied URI." . "\n";
print "\t" . "metadata-debug" . "\t" . "Shows available data on currently playing song." . "\n";
print "\t" . "\t\t" . "Fairly unformatted, thus \"debug\" data." . "\n";
print "\n";
print "EXAMPLES:\t" . basename($0) . " playpause" . "\n";
print "\t\t" . basename($0) . " spotify:track:5XXAq1r5r73ZyBS0XAiGw0" . "\n";

exit;
}

# Print some raw metadata
sub print_debug_metadata {
# Dereference the metadata hashref by copying it to a local hash
my %metadata = %{ $getorset->Get("org.mpris.MediaPlayer2.Player", "Metadata") };

# Print all metadata
print "Now Playing:\n";
for (keys %metadata) {
print $_ . ":\t" . $metadata{$_} . "\n" unless ($_ eq 'xesam:artist');
}

# Dereference the artist arrayref by copying it to local array
my @artistarray = @{ $metadata{'xesam:artist'} };

# Print all artists.
foreach my $artist (@artistarray) {
print "artist: \t" . $artist . "\n";
}
}

sub set_DBUS_SESSION_BUS_ADDRESS {
my $curruser = `whoami`; chomp $curruser;
my $procname = 'spotify';
my $pid = `pgrep -o -u $curruser $procname`; chomp $pid;
my $environ = '/proc/' . $pid . '/environ';
my $dbussession = `grep -z DBUS_SESSION_BUS_ADDRESS $environ`; $dbussession =~ s/^DBUS_SESSION_BUS_ADDRESS=//;

$ENV{'DBUS_SESSION_BUS_ADDRESS'} = $dbussession;
}
10
задан 7 April 2011 в 11:16

10 ответов

Некоторые идеи по устранению неполадок:

Сначала запустите эту команду:

sudo apt-get install htop iotop
Запустите терминал, в нем запустите htop Запустите другой терминал, в нем запустите iotop Запустите другой терминал, он запустится tail -f /var/log/kern.log

Подождите, пока не произойдет лаг, а затем посмотрите на три терминала:

Запустите терминал, в нем запустите htop Второй расскажет вам, будет ли ваш жесткий диск разбит процессом. Запустите другой терминал, в нем запустите iotop
14
ответ дан 25 May 2018 в 23:28
  • 1
    Спасибо, журнал ядра говорит: Ошибка буфера ввода-вывода на устройстве sda5, логический блок 28279025 – Vamsi 15 January 2011 в 14:57
  • 2
    Похоже, у вас есть ошибка диска на sda5. Введите df, чтобы получить информацию о том, где / что этот диск (если вы не знаете). Посмотрите на "установленный на" колонка. Возможно, вам придется сделать резервную копию / переформатировать / восстановить этот жесткий диск. (И не забудьте проголосовать и принять полезные ответы - спасибо!) – Scaine 15 January 2011 в 15:29

Некоторые идеи по устранению неполадок:

Сначала запустите эту команду:

sudo apt-get install htop iotop Запустите терминал, в нем запустите htop Запустите другой терминал, в нем запустите iotop Запустите другой терминал, он запустится tail -f /var/log/kern.log

Подождите, пока не произойдет лаг, а затем посмотрите на три терминала:

Запустите терминал, в нем запустите htop Второй расскажет вам, будет ли ваш жесткий диск разбит процессом. Запустите другой терминал, в нем запустите iotop
14
ответ дан 25 July 2018 в 22:37

Некоторые идеи по устранению неполадок:

Сначала запустите эту команду:

sudo apt-get install htop iotop Запустите терминал, в нем запустите htop Запустите другой терминал, в нем запустите iotop Запустите другой терминал, он запустится tail -f /var/log/kern.log

Подождите, пока не произойдет лаг, а затем посмотрите на три терминала:

Запустите терминал, в нем запустите htop Второй расскажет вам, будет ли ваш жесткий диск разбит процессом. Запустите другой терминал, в нем запустите iotop
14
ответ дан 26 July 2018 в 23:04

Некоторые идеи по устранению неполадок:

Сначала запустите эту команду:

sudo apt-get install htop iotop Запустите терминал, в нем запустите htop Запустите другой терминал, в нем запустите iotop Запустите другой терминал, он запустится tail -f /var/log/kern.log

Подождите, пока не произойдет лаг, а затем посмотрите на три терминала:

Запустите терминал, в нем запустите htop Второй расскажет вам, будет ли ваш жесткий диск разбит процессом. Запустите другой терминал, в нем запустите iotop
14
ответ дан 2 August 2018 в 04:03

Некоторые идеи по устранению неполадок:

Сначала запустите эту команду:

sudo apt-get install htop iotop Запустите терминал, в нем запустите htop Запустите другой терминал, в нем запустите iotop Запустите другой терминал, он запустится tail -f /var/log/kern.log

Подождите, пока не произойдет лаг, а затем посмотрите на три терминала:

Запустите терминал, в нем запустите htop Второй расскажет вам, будет ли ваш жесткий диск разбит процессом. Запустите другой терминал, в нем запустите iotop
14
ответ дан 4 August 2018 в 20:06

Некоторые идеи по устранению неполадок:

Сначала запустите эту команду:

  sudo apt-get install htop iotop  
  • Запустите терминал, в нем запустите htop
  • Запустите другой терминал, в нем запустите iotop
  • Запустите другой терминал, он tail -f /var/log/kern.log

Подождите, пока не произойдет лаг, а затем посмотрите на три терминала:

    ]
  • Первый расскажет вам, запутан ли процесс процессором
  • . Второй расскажет вам, был ли ваш жесткий диск разбит процессом.
  • Третий один скажет вам, произошло ли событие в отношении вашего оборудования.
14
ответ дан 6 August 2018 в 04:07

Некоторые идеи по устранению неполадок:

Сначала запустите эту команду:

  sudo apt-get install htop iotop  
  • Запустите терминал, в нем запустите htop
  • Запустите другой терминал, в нем запустите iotop
  • Запустите другой терминал, он tail -f /var/log/kern.log

Подождите, пока не произойдет лаг, а затем посмотрите на три терминала:

    ]
  • Первый расскажет вам, запутан ли процесс процессором
  • . Второй расскажет вам, был ли ваш жесткий диск разбит процессом.
  • Третий один скажет вам, произошло ли событие в отношении вашего оборудования.
14
ответ дан 6 August 2018 в 04:08

Некоторые идеи по устранению неполадок:

Сначала запустите эту команду:

  sudo apt-get install htop iotop  
  • Запустите терминал, в нем запустите htop
  • Запустите другой терминал, в нем запустите iotop
  • Запустите другой терминал, он tail -f /var/log/kern.log

Подождите, пока не произойдет лаг, а затем посмотрите на три терминала:

    ]
  • Первый расскажет вам, запутан ли процесс процессором
  • . Второй расскажет вам, был ли ваш жесткий диск разбит процессом.
  • Третий один скажет вам, произошло ли событие в отношении вашего оборудования.
14
ответ дан 7 August 2018 в 22:07

Некоторые идеи по устранению неполадок:

Сначала запустите эту команду:

  sudo apt-get install htop iotop  
  • Запустите терминал, в нем запустите htop
  • Запустите другой терминал, в нем запустите iotop
  • Запустите другой терминал, он tail -f /var/log/kern.log

Подождите, пока не произойдет лаг, а затем посмотрите на три терминала:

    ]
  • Первый расскажет вам, запутан ли процесс процессором
  • . Второй расскажет вам, был ли ваш жесткий диск разбит процессом.
  • Третий один скажет вам, произошло ли событие в отношении вашего оборудования.
14
ответ дан 10 August 2018 в 10:21

Некоторые идеи по устранению неполадок:

Сначала запустите эту команду:

  sudo apt-get install htop iotop  
  • Запустите терминал, в нем запустите htop
  • Запустите другой терминал, в нем запустите iotop
  • Запустите другой терминал, он tail -f /var/log/kern.log

Подождите, пока не произойдет лаг, а затем посмотрите на три терминала:

    ]
  • Первый расскажет вам, запутан ли процесс процессором
  • . Второй расскажет вам, был ли ваш жесткий диск разбит процессом.
  • Третий один скажет вам, произошло ли событие в отношении вашего оборудования.
14
ответ дан 13 August 2018 в 16:46
  • 1
    Спасибо, журнал ядра говорит: Ошибка буфера ввода-вывода на устройстве sda5, логический блок 28279025 – Vamsi Krishna B 15 January 2011 в 14:57
  • 2
    Похоже, у вас есть ошибка диска на sda5. Введите df , чтобы получить информацию о том, где / что этот диск (если вы не знаете). Посмотрите на "установленный на" колонка. Возможно, вам придется сделать резервную копию / переформатировать / восстановить этот жесткий диск. (И не забудьте проголосовать и принять полезные ответы - спасибо!) – Scaine 15 January 2011 в 15:29

Другие вопросы по тегам:

Похожие вопросы: