Se a tela GNU já existir, reconecte-a, ou crie-a

0

Estou tentando fazer isso: se uma tela GNU chamada worker já existir, reconecte-a, caso contrário, crie-a iniciando python example.py .

Eu tentei:

if [ls /var/run/screen/S-root/ |grep -Fxq worker] then screen -r worker else cd /home/www/example/; screen -S worker python example.py fi

mas parece que não funciona.

Há algo errado na sintaxe?

    
por Basj 18.04.2018 / 21:58

1 resposta

2

Faz mais sentido usar screen -ls ou

screen -S worker -x || { cd /home/www/example; screen -S worker python example.py; }

Mas os erros no seu código são

  1. o [ desnecessário (que precisaria de espaços ao redor dele)

    if [ls /var/run/screen/S-root/ |grep -Fxq worker]
    

    deve ser

    if ls /var/run/screen/S-root/ | grep -Fxq worker
    
  2. a falta de ; / newline antes de then

    |grep -Fxq worker] then
    

    deve ser

    | grep -Fxq worker; then
    
  3. a falta de ; / newline antes de else

     then screen -r worker else
    

    deve ser

     then screen -r worker; else
    
  4. a falta de ; / newline antes de fi

    python example.py fi
    

    deve ser

    python example.py; fi
    
por 18.04.2018 / 22:25