Tmux - Verifique se o servidor está ativo

5

Existe alguma função tmux conhecida, como tmux has-session -t <session> , mas para verificar se o servidor tmux está atualmente em execução? Seria útil ao escrever scripts de automação. Ao verificar se existe uma sessão com

$ tmux has-session -t SomeSession

o usuário é, a menos que o servidor tmux já esteja rodando, apresentando o erro

failed to connect to server

Portanto, desejo verificar de antemão se o servidor está em execução no momento. Se for, verifique se há sessões etc. Existe alguma maneira de silenciar isso sem canalizar para / dev / null?

    
por krystah 06.01.2014 / 16:00

3 respostas

10

Executar

if tmux info &> /dev/null; then 
  echo running
else
  echo not running
fi
    
por 28.11.2014 / 10:58
3
[[ -n $(pgrep tmux) ]] && echo true || echo false

Se um processo com o nome "tmux" estiver em execução, isso será impresso como true, caso contrário, ele será impresso como falso.

Isso funciona porque o pgrep encontra todo o processo com "tmux" em seus nomes e retorna seus PIDs. O "-n" basicamente testa se a saída de $ (pgrep tmux) existe. Se a saída existir (ex. "14204 23137"), o teste será avaliado como verdadeiro. Se a saída não existir (ou for indefinida), o teste será avaliado como falso.

Se você prefere o formato longo:

if [[ -n $(pgrep tmux) ]]; then
  echo true
else
  echo false
fi

Observe que o que o bnjmn disse se aplica aqui. Ou seja, isso dará um falso positivo se um processo estiver sendo executado diferente do tmux, mas tiver "tmux" em seu nome.

    
por 10.09.2018 / 23:46
1

Você pode usar ps -e | grep -q program para verificar se o programa program está sendo executado de maneira geral.

Como exemplo em um shell:

if $(ps -e | grep -q tmux); then echo "Tmux is running."; fi
    
por 06.01.2014 / 16:44