O script de pausa do YouTube funciona a partir da linha de comando, mas não do atalho

0

Eu queria pausar o YouTube e tentei a última abordagem aqui usando kill -SIGSTOP [pid]. Agora o script funciona bem no terminal, mas não funciona quando chamado usando um atalho de teclado. O script:

#!/bin/sh
if [ -f /tmp/TimChromepid.RUN ]; then
  mv /tmp/TimChromepid.RUN /tmp/TimChromepid.PSD
  NMR=$(< /tmp/TimChromepid.PSD) 
  kill -SIGSTOP < /tmp/TimChromepid.PSD
else
  NMR=$(< /tmp/TimChromepid.PSD) 
  mv /tmp/TimChromepid.PSD /tmp/TimChromepid.RUN
  kill -SIGCONT $NMR
fi

Eu usei a variável 'NMR' para armazenar o PID , quando eu o alimento diretamente em kill eu recebo este erro:

kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]

Tanto quanto eu posso testar, parece que ele pode rodar o script, e o if -statement, mas ele não pode ler o número do arquivo nem pode executar kill .

Como posso consertar isso e o que está acontecendo?

    
por Mark 15.05.2018 / 10:40

1 resposta

1

Eu não acho que o problema tenha algo a ver se o script é executado via atalho de teclado ou diretamente em um terminal. É um erro em sua ramificação if e o script funcionará e falhará alternadamente.

Na ramificação if que você escreveu

kill -SIGSTOP < /tmp/TimChromepid.PSD

que significa: canaliza o conteúdo do arquivo /tmp/TimChromepid.PSD para o stdin de kill . Mas kill não lê nada de stdin , apenas aceita o PID como um parâmetro de linha de comando, que não foi dado. É por isso que você falou sobre seu uso.

Para corrigir isso, basta fazer o que você fez na ramificação else , ou seja, substituir kill -SIGSTOP < /tmp/TimChromepid.PSD por kill -SIGSTOP $(< /tmp/TimChromepid.PSD) ou usar $NMR :

#!/bin/sh
if [ -f /tmp/TimChromepid.RUN ]; then
    mv /tmp/TimChromepid.RUN /tmp/TimChromepid.PSD
    NMR=$(< /tmp/TimChromepid.PSD) 
    kill -SIGSTOP $NMR
else
    NMR=$(< /tmp/TimChromepid.PSD) 
    mv /tmp/TimChromepid.PSD /tmp/TimChromepid.RUN
    kill -SIGCONT $NMR
fi
    
por PerlDuck 21.05.2018 / 14:15