Vous avez deux commandes cmd1 et cmd2. Des deux, cmd2 met plus de temps à terminer. Besoin d'exécuter cmd2 puis cmd1.
J'ai essayé de les exécuter de la manière suivante:
bash$ (nohup ./cmd2>result2 &) && nohup ./cmd1>result1 &
ou
bash$ (nohup ./cmd2>result2 &) ; nohup ./cmd1>result1 &
Mais les deux fois où je peux voir cmd1 n'attend pas la fin de cmd2 et le résultat1 est rempli.
Comment faire tourner cmd1 après cmd2 alors que les deux devraient être un processus nohup et s'exécuter en arrière-plan?
shell
process
background-process
nohup
user33767
la source
la source
Réponses:
Vous avez fait les deux
cmd1
etcmd2
couru en parallèle. Vous avez dit: «Démarrez cmd2 en arrière-plan et supprimez toute association avec lui. Démarrez cmd1 en arrière-plan et supprimez toute association avec lui. » Vous vouliez dire: «Démarrez cmd2 en arrière-plan; une fois terminé, démarrez cmd1 (également en arrière-plan). » Puisqu'il n'y a plus d'association avec la tâche d'arrière-plan, vous devez concevoir une tâche d'arrière-plan qui exécute cmd2 puis cmd1. C'estcmd2; cmd1
(ou plutôtcmd2 && cmd1
pour exécuter cmd1 uniquement si cmd2 réussit), et vous devrez direnohup
de démarrer un shell en arrière-plan pour cela.la source
Si cela ne vous dérange pas de ne pas utiliser nohup:
la source
Utilisez simplement:
la source
dites-nous ce que vous faites exactement avec cmd2 et cmd1. Cela dépend du type de tâche et de la sortie que vous souhaitez à partir de votre commande. Si vous rencontrez un problème avec le fait d'appuyer deux fois sur la touche Entrée avec la commande, cela peut être compris par mon ce message
vous pouvez aussi suivre cette voie
Voir la capture d'écran ci-dessous, ici, j'utilise 3 commandes et toutes sont exécutées une par une en série. J'ai utilisé des backticks pour cette tâche. En capture d'écran, vous pouvez également observer l'horodatage de la date. la commande sleep a 60 secondes, donc après 60 secondes ma prochaine commande est exécutée avec succès. J'ai utilisé la commande jobs pour vérifier si une commande est toujours en cours d'exécution en arrière-plan. Ici non. des emplois que vous pouvez voir est de 1.
Cette capture d'écran est également disponible dans ce lien , si elle n'est pas visible
la source