2017-06-09 5 views
1

Je veux lancer un processus de longue durée à partir d'un script qui se ferme ensuite, mais je n'arrive à rien. Voici mon test le plus simple. A chaque course, la console est bloquée pendant 5 secondes.Linux: exécuté dans le sous-shell

// Create script 
[email protected]:~/workspace/bin$ cat > test.sh 
sleep 5 
// Verify script 
[email protected]:~/workspace/bin$ cat test.sh 
sleep 5 
// Make executable 
[email protected]:~/workspace/bin$ chmod 777 test.sh 
// Expect to wait 
[email protected]:~/workspace/bin$ ./test.sh 
// Expect to return, still waits 
[email protected]:~/workspace/bin$ ./test.sh ? 
// Ditto 
[email protected]:~/workspace/bin$ nohup ./test.sh ? 
nohup: ignoring input and appending output to 'nohup.out' 
[email protected]:~/workspace/bin$ 

J'utilise Ubuntu 17.04 64, bash GNU version 4.4.7 (1) -release (x86_64-pc-linux-gnu)

Je suis un noob Linux, et je Je suis sûr que je ne reçois pas quelque chose. Toute aide est appréciée.

Répondre

1

Utilisation esperluette: nohup ./test.sh &

+0

Oui. Cela aide à utiliser le caractère correct. Sérieusement, merci d'avoir signalé cela. Steve11235

0

On dirait que votre script attend quelque chose. Collez votre script ici.

+0

Comment est-ce différent de 'chomd' puis Execute dans la question initiale, et comment cela va mettre' test.sh' en arrière-plan? –

0

Il y a deux manières de le faire, mon go-to solution est de mettre un esperluette & à la fin de la ligne.

Plus façons se trouvent avec this answer

Plus explication sur la méthode esperluette here