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 / 02: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 / 02:34