2017-06-27 2 views
0

Comment est-ce que je traduirais ce qui suit dans le cadre de run/readstring/pipeline() de Julia?Julia Exécution de programmes externes

home/bin/julia /home/elite_script.jl &>> /home/beckman/elite_log.log &

+0

Je crois que la réponse simple est « vous ne pouvez pas » (ou plutôt, « vous ne devriez pas le faire de cette façon »), étant donné que le 'pipeline 'function nécessite qu'au moins un des arguments soit une" commande shell ". Si vous ne prévoyez pas de rediriger la sortie au niveau de l'environnement, mais que vous voulez le faire depuis votre session julia, vous devriez plutôt écrire dans un fichier à la place, plutôt que de vous fier à la redirection hacky. Cela dit, je suis sûr qu'un tel truc «hacky» existe (redéfinissant probablement la norme STDOUT en quelque sorte). –

+0

duplication possible: https://stackoverflow.com/questions/41010384/executing-the-shell-operator-from-a-julia-program –

+0

qu'en est-il de lancer une commande en arrière-plan avec Julia ala 'echo make america gay again & ' –

Répondre

3

Cela correspondrait à:

spawn(pipeline(`home/bin/julia /home/elite_script.jl`, stdout="/home/beckman/elite_log.log", append=true)) 
+0

+1. Hélas, cela ne fonctionne pas comme prévu (encore moins pour la journalisation et le suivi en temps réel, ce qui semble être ce que OP est après). Vérifiez avec ce script: 'i = 0; alors que c'est vrai dormir (1); i + = 1; println ("$ i secondes écoulées"); end' –

+1

Cela fonctionne si vous ajoutez 'flush (STDOUT)' après println. Nous ne semblons pas faire de tamponnage de ligne; Je crois que c'est ce numéro: https://github.com/JuliaLang/julia/issues/13050 –