No final, resolvi isso alterando o código para isso:
#!/bin/sh # ~/.X.d/freerdp.sh while true do xfreerdp -f [IP Address] done
Feio, e eu tive que reorganizar a ordem de execução do script para que este fosse executado por último, mas funciona ...
No minúsculo núcleo do Linux, eu tenho o seguinte script:
#!/bin/sh
# ~/.X.d/freerdp.sh
rdp(){
while true
do
xfreerdp -f [IP Address]
done
}
rdp &
É bem simples; quando o X inicia e verifica o diretório .X.d (como é o caso no minúsculo núcleo) ele encontra e executa esse script. O script inicia o freerdp e mantém uma conexão aberta ao servidor, reiniciando-o sempre que ele é fechado. Como você pode ver na linha rdp &
, a função é executada em segundo plano para permitir que o X continue sua rotina de inicialização.
O problema é que sempre que eu cancelo o X com um CTRL + ALT + BACKSPACE o processo rdp não morre.
Estou procurando uma maneira de eliminar o processo assim que o X terminar, seja por meio de:
A) um script, executado no fechamento X, que mata o processo
ou
B) modificando o script para verificar o valor de retorno do comando xfreerdp
.
NB - se a solução verificar o valor de retorno, ela só deverá terminar se o comando não abrir o display X. Por esse motivo, se você pudesse me indicar uma referência para xfreerdp
valores de retorno eu ficaria grato.
No final, resolvi isso alterando o código para isso:
#!/bin/sh # ~/.X.d/freerdp.sh while true do xfreerdp -f [IP Address] done
Feio, e eu tive que reorganizar a ordem de execução do script para que este fosse executado por último, mas funciona ...
Parece que esta questão já está respondida .