Obter Programa que Satisfaz a Condição

LinuxBeginner
Pratique Agora

Introdução

Neste projeto, você aprenderá a criar um script que pode verificar se um programa está sendo executado em uma porta especificada e imprimir o caminho completo do programa ou "OK" se nenhum programa estiver sendo executado.

👀 Pré-visualização

## Exemplo
$ cd /home/labex/project
$ sh get.sh 3000
/usr/lib/code-server/lib/node
$ sh get.sh 43000
OK

🎯 Tarefas

Neste projeto, você aprenderá:

  • Como criar um script Zsh
  • Como usar o comando lsof para verificar se uma porta está em uso
  • Como usar o comando ps para obter o caminho completo de um programa em execução

🏆 Conquistas

Após concluir este projeto, você será capaz de:

  • Escrever um script que pode identificar o programa em execução em uma porta especificada
  • Solucionar problemas relacionados a conflitos de porta em seu ambiente de desenvolvimento
  • Automatizar o processo de verificação de programas em execução em portas específicas

Criar o Script get.sh

Nesta etapa, você criará o script get.sh que verificará se um programa está sendo executado em uma porta especificada.

  1. Abra um editor de texto e crie um novo arquivo chamado get.sh no diretório /home/labex/project.

  2. Adicione o seguinte código para verificar se um número de porta foi fornecido como um argumento:

    ## Check if the port number is provided as an argument
    if [ -z "$1" ]; then
      echo "Please provide a port number."
      exit 1
    fi
    

    Este código verifica se o script foi chamado com um número de porta como argumento. Caso contrário, ele imprime uma mensagem de erro e sai do script.

  3. Adicione o seguinte código para obter o número da porta:

    ## Get the port number
    port=$1
    

    Este código armazena o número da porta fornecido na variável port.

  4. Salve o arquivo get.sh.

Verificar se um Programa está Rodando na Porta Especificada

Nesta etapa, você adicionará o código para verificar se um programa está sendo executado na porta especificada.

  1. Adicione o seguinte código ao script get.sh:

    ## Check if the port is in use
    process=$(lsof -i :$port -sTCP:LISTEN -Fp | sed 's/^p//')
    

    Este código usa o comando lsof para verificar se um processo está escutando na porta especificada. A saída é armazenada na variável process.

  2. Adicione o seguinte código para verificar se um programa está sendo executado:

    ## Check if a program is running
    if [ -z "$process" ]; then
      echo "OK"
    else
      ## Get the full path of the program
      path=$(ps -p $process -o args=)
      echo "$path" | awk '{print $1}'
    fi
    

    Este código verifica se a variável process está vazia (ou seja, nenhum programa está sendo executado na porta especificada). Se estiver vazia, o script imprime "OK". Se um programa estiver sendo executado, o script usa o comando ps para obter o caminho completo do programa e o imprime.

  3. Salve o arquivo get.sh.

Testar o Script get.sh

Nesta etapa, você testará o script get.sh para garantir que ele funcione conforme o esperado.

  1. Abra um terminal e navegue até o diretório /home/labex/project.

  2. Execute o script get.sh com um número de porta como argumento:

    $ sh get.sh 3000
    /usr/lib/code-server/lib/node
    

    Isso deve exibir o caminho completo do programa em execução na porta 3000.

  3. Execute o script get.sh com um número de porta que não está em uso:

    $ sh get.sh 43000
    OK
    

    Isso deve exibir "OK" pois nenhum programa está sendo executado na porta 43000.

  4. Se o script funcionar conforme o esperado, você concluiu o projeto.

Parabéns! Você criou um script que pode verificar se um programa está sendo executado em uma porta especificada e imprimir o caminho completo do programa ou "OK" se nenhum programa estiver sendo executado.

Resumo

Parabéns! Você concluiu este projeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.

✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar