Execute uma sessão de tela ao inicializar a partir de rc.local

7

Estou tentando executar uma tela desanexada sob um usuário específico em rc.local na inicialização. O código abaixo é o que eu tenho até agora, mas não está funcionando para mim. A parte su parece estar me dando um erro.

su - username -c /usr/bin/screen -dmS test bash -c '/var/www/path/to/script/script.sh; exec bash'
    
por ATLChris 27.02.2013 / 13:14

3 respostas

11

Acho que os parâmetros -c ( su e bash ) precisarão ser citados no mínimo.

su - username -c "/usr/bin/screen -dmS test bash -c '/var/www/path/to/script/script.sh; exec bash'"

Também é esperado que - seja o último e pode não ser desejável aqui (veja man su ).

Mais algumas observações. sudo poderia ser uma opção melhor para um comando de ação única como o seu, mas não necessariamente:

sudo -iu username /usr/bin/screen -dmS test bash -c '/var/www/path/to/script/script.sh; exec bash'

Em particular, você pode usar um nível de cotação a menos com sudo .

Outra coisa que você deve tomar cuidado é executar comandos sem caminho absoluto em um contexto privilegiado. Isso vale para su (ou sudo ), mas também para o caminho para bash em seu comando. Você está fazendo certo com screen .

Apenas testamos o seguinte e funciona bem. Eu acho que o - é o principal problema na sua linha original:

/bin/su username -c "/usr/bin/screen -dmS test bash -c '/home/username/test.sh; exec bash'"

Observação negativa: por que você não tenta tmux tentar? Eu mudei recentemente e nunca olhei para trás. A única coisa que eu precisava mudar imediatamente era a combinação de prefixo que em tmux usa como padrão Ctrl + B - de volta ao Ctrl do GNU screen + A .

Permite dividir sua janela em um número quase arbitrário de painéis (verticalmente e horizontalmente) e seu formato de arquivo de configuração (incluindo o do status par) é realmente inteligível para humanos. É claro que tmux é tão bom quanto screen quando você simplesmente quer executar algum programa / script não escrito originalmente como daemon em segundo plano. Se você pretende interagir com o multiplexador de terminais, no entanto, recomendo vivamente tmux .

    
por 0xC0000022L 27.02.2013 / 13:20
0

Experimente sudo -u username em vez de su - username

    
por prophecy201 27.02.2013 / 13:21
0

Aqui está o que eu usei e achei que fosse o mais limpo e simples (testado trabalhando comigo mesmo):

Substitua "usuário" pelo usuário para executá-lo como. Substitua "nameyouchoose" como o nome da sessão de tela Substitua "/script/start.bash" pelo caminho do seu script.

/usr/bin/sudo -u user /usr/bin/screen -dmS nameyouchoose /script/start.bash

Fonte: link

    
por Areeb Soo Yasir 08.03.2018 / 21:48