LINUX.ORG.RU
решено ФорумTalks

steam и закулисная жЫзнь

 


1

2

Доброго времени, форумчане.

Что-то не радует в последнее время поделие кранов.
Живёт своей жизнью.
Как проявляется:

  • Выходит из программы с сильным «залипанием». Что характерно, при запуске из терминала всё тихо-мирно.
  • Во время простоя «резко» сжирает ресурсы машины, запускает instmodsh, загружая проц по максимуму
  • Что-то дампит «по тихому».

Как заприметил: вдруг зашуршал кулер (взвыл) на ноуте, я в htop - perl /usr/bin/instmodsh - 100% CPU. Грохнул steam launcher (только на него грешил, так как всё собрано самостоятельно) - и тишина...

Кто сталкивался? Кто смотрел траффик и т.д.?

Deleted

Да запросто такое может быть. Проприетарщина она и есть.

cheetah111v
()
Ответ на: комментарий от anonymous_sama

Нене, вот после нового года, реально. И сегодня поймал на idle машине. Стояла в простое, ничего не запущено. Мало того, поведение лаунчера идентично на Ubuntu. При выходе резко «висит» машина 5-10 сек. Если лаунчер запускать из терминала - всё нормально.

Deleted
()
Ответ на: комментарий от Deleted

УМВР, сборка стима указана 15 декабря 2017, так что оно с того времени должно было бы так себя вести

Satou ★★★★
()

Так а что внутри «/usr/bin/instmodsh»? Название намекает, что этот скрипт должен установить какой-то модуль. Надеюсь не модуль ядра?

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

Много букафф:

#!/usr/bin/perl -w

BEGIN { pop @INC if $INC[-1] eq '.' }
use strict;
use IO::File;
use ExtUtils::Packlist;
use ExtUtils::Installed;

use vars qw($Inst @Modules);


=head1 NAME

instmodsh - A shell to examine installed modules

=head1 SYNOPSIS

    instmodsh

=head1 DESCRIPTION

A little interface to ExtUtils::Installed to examine installed modules,
validate your packlists and even create a tarball from an installed module.

=head1 SEE ALSO

ExtUtils::Installed

=cut


my $Module_Help = <<EOF;
Available commands are:
   f [all|prog|doc]   - List installed files of a given type
   d [all|prog|doc]   - List the directories used by a module
   v                  - Validate the .packlist - check for missing files
   t <tarfile>        - Create a tar archive of the module
   h                  - Display module help
   q                  - Quit the module
EOF

my %Module_Commands = (
                       f => \&list_installed,
                       d => \&list_directories,
                       v => \&validate_packlist,
                       t => \&create_archive,
                       h => \&module_help,
                      );

sub do_module($) {
    my ($module) = @_;

    print($Module_Help);
    MODULE_CMD: while (1) {
        print("$module cmd? ");

        my $reply = <STDIN>; chomp($reply);
        my($cmd) = $reply =~ /^(\w)\b/;

        last if $cmd eq 'q';

        if( $Module_Commands{$cmd} ) {
            $Module_Commands{$cmd}->($reply, $module);
        }
        elsif( $cmd eq 'q' ) {
            last MODULE_CMD;
        }
        else {
            module_help();
        }
    }
}


sub list_installed {
    my($reply, $module) = @_;

    my $class = (split(' ', $reply))[1];
    $class = 'all' unless $class;

    my @files;
    if (eval { @files = $Inst->files($module, $class); }) {
        print("$class files in $module are:\n   ",
              join("\n   ", @files), "\n");
    }
    else {
        print($@);
    }
};


sub list_directories {
    my($reply, $module) = @_;

    my $class = (split(' ', $reply))[1];
    $class = 'all' unless $class;

    my @dirs;
    if (eval { @dirs = $Inst->directories($module, $class); }) {
        print("$class directories in $module are:\n   ",
              join("\n   ", @dirs), "\n");
    }
    else {
        print($@);
    }
}


sub create_archive {
    my($reply, $module) = @_;

    my $file = (split(' ', $reply))[1];

    if( !(defined $file and length $file) ) {
        print "No tar file specified\n";
    }
    elsif( eval { require Archive::Tar } ) {
        Archive::Tar->create_archive($file, 0, $Inst->files($module));
    }
    else {
        my($first, @rest) = $Inst->files($module);
        system('tar', 'cvf', $file, $first);
        for my $f (@rest) {
            system('tar', 'rvf', $file, $f);
        }
        print "Can't use tar\n" if $?;
    }
}


sub validate_packlist {
    my($reply, $module) = @_;

    if (my @missing = $Inst->validate($module)) {
        print("Files missing from $module are:\n   ",
              join("\n   ", @missing), "\n");
    }
    else {
        print("$module has no missing files\n");
    }
}

sub module_help {
    print $Module_Help;
}



##############################################################################

sub toplevel()
{
my $help = <<EOF;
Available commands are:
   l            - List all installed modules
   m <module>   - Select a module
   q            - Quit the program
EOF
print($help);
while (1)
   {
   print("cmd? ");
   my $reply = <STDIN>; chomp($reply);
   CASE:
      {
      $reply eq 'l' and do
         {
         print("Installed modules are:\n   ", join("\n   ", @Modules), "\n");
         last CASE;
         };
      $reply =~ /^m\s+/ and do
         {
         do_module((split(' ', $reply))[1]);
         last CASE;
         };
      $reply eq 'q' and do
         {
         exit(0);
         };
      # Default
         print($help);
      }
   }
}


Deleted
()

ядро собрано монолитным (initrd убран). Но на ubuntu 18.04 ведёи себя идентично.

Deleted
()
Ответ на: комментарий от Deleted

При чём тут вообще ядро? instmodsh проверяет список установленных модулей для ПЕРЛА.

DawnCaster ★★
()
Последнее исправление: DawnCaster (всего исправлений: 1)

Запусти из-под AppArmor и посмотри, куда лезет.

Quasar ★★★★★
()
Ответ на: комментарий от andreyu

Чтобы понять, подходит ли текущая конфигурация для запуска игр или нет. Но в любом случае при сомнениях следует в песочнице стим проверить.

Quasar ★★★★★
()
Ответ на: комментарий от Quasar

Хромой не причем, они кэшируют слишком много всего, вместо того чтобы загружать при переходе, или отключить кэш. Если читать форумы и магазин не нужен, то можно просто убрать исполняющий бит у steamwebhelper. Впрочем последнее время лучше стало и костылять не нужно.

anonymous_sama ★★★★★
()

Залипания не замечал. В простое обычно редко держу.

orm-i-auga ★★★★★
()

Если кому надо, почему эта steam хрень подвисала при выходе: dbus error. Сыпалось в консоль. Поиск модулей просто удалил «к монахам».

Deleted
()
Ответ на: комментарий от anonymous_sama

и магазин не нужен, то можно просто убрать исполняющий бит у steamwebhelper.

Убрал на исполнение, в консоли иногдп поругивается, что не может запустить. Спасибо.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.