Não é possível executar o script baseado no systemd após a ativação da suspensão. Por quê?

0

A seguinte resposta mostra como executar um script depois de acordar da suspensão com base no systemd. Eu tentei, mas não consegui fazer com que um gnome-terminal aparecesse para executar um comando.

#!/bin/sh
if [ "$1" == "post" ]; then
  gnome-terminal --command 'compiz --replace &' 

Por que eles não funcionam? Eu estou usando o kernel do Ubuntu 16.04.2 4.8.0-45-genérico. Estou curioso porque meu script baseado em systemd não funcionou. Meu comando funciona em um gnome-terminal aberto, mas de alguma forma não funciona com o método systemd-suspend.service. ???

    
por Sun Bear 04.04.2017 / 00:00

1 resposta

0

Como você sabe, todos os emuladores de terminal foram fechados depois de realizar seus trabalhos.

Mas se você quiser que o gnome-terminal não seja fechado usando este script em /etc/pm/sleep.d path (este script mantém o terminal aberto até que você pressione enter):

sudo nano /etc/pm/sleep.d/myscript

Em seguida, cole esses conteúdos no seu script:

#!/bin/bash
case $1 in 
     thaw|resume) gnome-terminal --command 'bash -c "compiz --replace &; read line"'
     ;;
esac

Em seguida, torne-o executável por este comando:

sudo chmod a+x /etc/pm/sleep.d/myscript

Espero que isso funcione para você.

ATUALIZAÇÃO:

% bl0ck_qu0te%

Podemos usar script baseado em systemd se usarmos systemctl suspend para suspensão do SO (não usar sudo pm-suspend . mas em alguns sistemas, quando você clica em suspender boton, o sistema operacional usa o comando pm-suspend ). Mas os scripts baseados em systemd e os scripts baseados em gerenciamento de energia têm uma pequena diferença entre si:

No script baseado em systemd, não podemos executar aplicativos GUI, porque, nessa condição, não há um servidor X para ele se conectar.

Portanto, você não pode usar gnome-terminal em comandos como gnome-terminal --command 'compiz --replace &' . Se você quiser mostrar o gnome-terminal, você deve usar scripts baseados em gerenciamento de energia.

Mas no seu caso é suficiente usar este script (sem o gnome-terminal):

#!/bin/sh
if [ $1 = post ] ; then
compiz --replace &
fi

E você pode testar seu script substituindo algo como touch /home/YOURUSERNAME/Desktop/test.txt em vez de compiz --replace & :

#!/bin/sh
if [ $1 = post ] ; then
touch /home/YOURUSERNAME/Desktop/test.txt
fi

(Lembre-se de que, nos scripts baseados em systemd, os comandos root user run não usam ~/Desktop em vez de /home/YOURUSERNAME/Desktop porque o usuário root não é o seu diretório home!)

    
por Ali Razmdideh 04.04.2017 / 00:34
yii\base\ErrorException
Copied! Copy Stacktrace Search Stackoverflow Search Google Error

PHP Core Warning – yii\base\ErrorException

PHP Startup: Unable to load dynamic library 'memcached.so' (tried: /usr/lib/php/20190902/memcached.so (/usr/lib/php/20190902/memcached.so: undefined symbol: igbinary_serialize), /usr/lib/php/20190902/memcached.so.so (/usr/lib/php/20190902/memcached.so.so: cannot open shared object file: No such file or directory))

$_GET = [
    'id' => '214693',
    'url' => 'cant-run-systemd-based-script-after-wake-from-suspend-why',
];

$_COOKIE = [
    'advanced-frontend' => 'u06lvmmd926kku7hq0u1qopi3k',
    '_csrf-frontend' => 'a61aa16f58de0903eb23ce7ef47ddddc1b1d4fcacb838e27882e2bb0b4606144a:2:{i:0;s:14:"_csrf-frontend";i:1;s:32:"KlXTsYFelM_A6TiVpEQp6s2rP76s0cXG";}',
];

$_SESSION = [
    '__flash' => [],
];