Dopo aver cercato di capire perché un task Capistrano (che ha tentato di avviare un daemon in background) era sospeso, ho scoperto che l'uso di &&
in bash su ssh impedisce l'esecuzione di un programma successivo nel sfondo. Ho provato su bash 4.1.5 e 4.2.20.bash && operatore impedisce lo sfondo su ssh
Di seguito si bloccherà (cioè attendere sleep
per finire) in bash:
ssh localhost "cd /tmp && nohup sleep 10 >/dev/null 2>&1 &"
quanto segue non:
ssh localhost "cd /tmp ; nohup sleep 10 >/dev/null 2>&1 &"
Né sarà questo:
cd /tmp && nohup sleep 10 >/dev/null 2>&1 &
Sia zsh che dash lo eseguiranno sullo sfondo in tutti i casi, indipendentemente da &&
e ssh. Questo comportamento normale/atteso per bash o un bug?
non so con precisione la risposta alla tua domanda, ma sarà Dite che occasionalmente ho riscontrato irritazioni simili usando SSH, con Bash sul lato remoto. Non so se il problema è specifico di Bash, ma a volte ho avuto una fortuna migliore usando il comando 'disown' della shell di Bash piuttosto che il comando' nohup'. Se questo ti interessa, digita 'help disown | di meno durante l'esecuzione di Bash. E se ti capita di imparare una soluzione generale, per favore postala qui. Dovrei essere interessato a leggere. – thb
In realtà ho provato a mescolare con varie combinazioni di 'disown',' nohup' e reindirizzamenti, senza risultato. Il '&&' ha sempre inibito lo sfondo. Potrei farla franca avvolgendo i due comandi in una subshell, ma non è proprio la stessa cosa. – Hinrik
Il comando sembra funzionare per me. Cosa intendi per appendini? Il 'cd' richiede molto tempo? Potrebbe trattarsi di un problema con il server remoto, ad es. troppo carico. – suvayu