Respostas (para minhas próprias perguntas)
- Esta é a maneira mais eficaz de alcançar o resultado desejado?
Ainda não tenho certeza se as soluções abaixo são as mais eficazes, mas posso confirmar que pelo menos funciona na versão declarada no Ubuntu. - Como os comandos na etapa 2 & amp; 3 ser automatizado?
-
Como os comandos na etapa 2 & amp; 3 não ativar quando eu fizer login manualmente no passo 4?
Primeiro passo
Eu coloquei o seguinte na parte inferior do arquivo .profile no diretório do usuário do qual o usuário fez login automaticamente durante a etapa 1 acima (/home/ubuntu/.profile):pgrep processname || /home/ubuntu/processscript.sh
Quando o usuário está logado automaticamente, este comando será executado automaticamente porque está em .profile. A primeira parte do comando (antes do "||" verifica se 'processname' já está em execução. Caso contrário, ele executará a segunda parte do comando (após o "||"), ex: "processscript.sh" .. Se 'processname' já estiver em execução, não será.
Essa verificação foi necessária, pois o processo que eu queria executar não poderia ter várias instâncias sendo executadas ao mesmo tempo. Além disso, resolve o problema do processo em execução pela segunda vez quando eu fizer login manualmente mais tarde.
Etapa dois
Crie um arquivo de script de shell chamado "processscript.sh" com o seguinte conteúdo:#!/bin/bash screen -d -m -S screenname && screen -S screenname -p 0 -X stuff "/home/ubuntu/command.sh^M"
Assegure-se de que "processscript.sh" esteja no diretório / home / ubuntu, e que seja executável com o comando:
chmod 744 processscript.sh
O script de shell acima cria uma ocorrência de tela com o nome "screenname" e, se concluída com êxito, insere a linha de comando da ocorrência da tela com o comando "command.sh" com um retorno de carro (que é o "^ M "no final faz).
Etapa três
Na etapa anterior, encontrei alguns problemas ao inserir um comando com atributos na linha de comando da tela (acho que foi necessário algum escape de caractere). Para resolver isso simplesmente, adicionei o comando completo com atributos a um script de shell e o usei. Portanto, crie outro script de shell (como acima) chamado "command.sh" e adicione o comando completo nele.