Eu gostaria de executar e configurar um processo de maneira semelhante a um daemon a partir de um script.
Meu shell é zsh emulado no Cygwin e o daemon é o SFK , um servidor FTP básico.
Para o que importa aqui, o script startserv.sh
pode ser redigido da seguinte maneira:
#!/bin/sh
read -s -p "Enter Password: " pw
user=testuser
share=/fshare
cmd="sfk ftpserv -user=$user -pw=$pw -usedir $share=$share"
$cmd &
Depois de executar o script startserv.sh
, ele pára (termina?) Sem mostrar nenhum prompt e, em seguida:
CTRL+ Ctermina o script e o processo de trabalho em segundo plano;
Ao pressionar Entero script, o processo permanece em segundo plano.
De qualquer forma, só posso vê-lo via ps
e não jobs
, então, quando quero fechar o processo, tenho que enviar um kill -9
sinal brutal , algo que gostaria de evitar em favor do CTRL+ C.
Uma alternativa seria executar o script inteiro em segundo plano. 'Seria', mas o read
comando não pode obter a entrada do usuário se o script for executado como startserv.sh &
.
Observe que preciso de um servidor efêmero, não um daemon verdadeiro : ou seja, desejo que o processo do servidor seja executado em segundo plano, após o término do script, para executar tarefas simples de shell interativas (com um convidado da máquina virtual), mas não não precisa do processo para sobreviver à concha; portanto, nohup
não parece apropriado.
bgproc="$!"
e, em seguida,command "$bgproc"
execute a ação apropriada. Veja também stackoverflow.com/questions/1908610/…