Script da Shell para Lauch Process e impedi-lo de terminar

0

Eu estou procurando um script de shell que eu possa executar, que irá executar um programa que precisa ser executado por um período infinito de tempo até que eu decida matá-lo.

Já experimentei nohup, screen, disown (no shell netcat / bin / sh) mas todos falharam em fazer o trabalho.

O programa que precisa ser executado também precisa de argumentos.

EDIT: comentários me pediram para mencionar os problemas com os métodos que eu tentei.

nohup: Fechar a janela do NetCat também fecha o processo

bg: No início, os relatórios do NetCat: "Nenhum controle de trabalho nesta sessão"

denown: O mesmo resultado que nohup

Tela

: "Deve estar conectado a um terminal"

    
por John 28.08.2013 / 21:33

2 respostas

0

Substitua "bash foo.sh" pelo que você precisa para executar. não sobreviverá a reinicializações.

perl -e "if(fork){exit}else{exec(\"bash foo.sh\")}"

editar: Você pode imprimir $$ em um arquivo no outro, antes do exec, se quiser capturar o pid. Você também pode apenas grep através da saída do PS para matar baseado no pid.

    
por 28.08.2013 / 21:44
0

Primeiro, um script de shell não pode impedir que algum processo (em segundo plano) termine se o SO decidir eliminá-lo ou se o processo morrer. Com isto dito, aqui está uma sugestão sobre como reiniciar um serviço. É grosseiro, mas simples.

Crie um arquivo "semaphore" e use-o para quebrar um loop permanente que reinicia algum trabalho.

#!/bin/sh

function run {
    local t='mktemp  /tmp/service.XXX'
    touch $t
    while [ -f $t ]; do
        # restart a job here, e.g
        nc -l -p 4444 & pid=$!
        echo $pid > $t
        wait $pid
    done 
}

function stop {
    local pf='ls /tmp/service.*| wc -l'
    if [ $pf -gt 1 ]; then
        echo why are there several pid files?

    elsif [ $pf -lt 1 ]; 
        echo nothing to stop

    else 
        pid='cat /tmp/service.*'
        rm -f /tmp/service.*
        kill $pid
    fi
}

Apresente o arquivo no seu shell e execute as funções. O script pode conter erros, mas a ideia deve ser utilizável.

    
por 28.08.2013 / 22:26

Tags