Quand j'exécute une tâche sur un réseau informatique? Je viens juste de commencer à réaliser que si je ne fais aucune tâche, la tâche ne va pas masquer mon terminal et je peux faire d'autres choses sur le même terminal (ce qui est très utile même si la tâche ne prend qu'une minute terminer).
Et puis je cours qstat pour voir quels taks ont fini et lesquels n'ont pas.
http://pubs.opengroup.org/onlinepubs/009604599/utilities/qsub.html est une bonne explication de qsub.
Dans ces cas, je préfère ouvrir un autre terminal. Quelle est la raison pour laquelle tu ne veux pas faire ça?
L'inconvénient de l'exécution de qsub, c'est que vous devez écrire un minuscule file de script pour une opération sortingviale, ce qui vous prend du time. Je ne sais pas combien d'autres users travaillent sur le même réseau, mais le but est de planifier les tâches de plusieurs users sur le cluster. Surtout s'il n'y a pas de kernelx libres disponibles, votre tâche simple finira dans la queue, vous prenant plus de time.
Avez-vous considéré l' screen
comme une alternative? Avec l' screen
vous pouvez démarrer et mettre en pause une session différente dans le même terminal. Le stream de travail serait comme ça
$ screen
$ screen -r
(pour reprendre) $ exit
Je ne vois aucun avantage à utiliser qsub
sur le standard at
. La command at
prendra un "script" et l'exécutera à un moment précis (comme "maintenant"), en utilisant votre environnement actuel. Ensuite, vous pouvez vérifier l'état avec atq
ou supprimer le travail avec atrm
.
$ nohup ./myscript myargs & # put script in the background # almost the same as $ echo ./myscript myargs | at now # computer runs script independent of terminals
Vous devez vous assurer que votre myscript
ne cherchera pas d'input.
Moi-même, j'utilise l' screen
dans une seule session de terminal partout où je vais, comme le suggère Bernhard. Ouvrez une nouvelle window (dans l' screen
), démarrez le script, revenez à screen
window d' screen
origine.
Je ne vois aucun inconvénient à utiliser qsub
pour les travaux d'arrière-plan que qsub
normalement interactivement à l'intérieur de l'écran. Si vous avez un cluster disponible, il s'agit d'une solution optimale.
Bien que nous ayons un planificateur de tâches disponible, j'ai eu tendance pendant longtime à utiliser les tâches d'arrière-plan à l'arrière-plan ou à réaliser le parallélisme sans trop de tâches d'écriture de script qsub. Finalement, les limitations de cette approche sont devenues évidentes, et j'ai écrit ce qsub wrapper qgo
pour me permettre de replace &
et d' screen
avec qsub
:
#!/bin/bash mkdir -p qsubscripts qsub -w $(pwd)/qsubscripts -d $(pwd) -M [email protected] $@ -S /bin/zsh -
Notez que j'utilise mon shell préféré (zsh) mais bien sûr vous pouvez supprimer cet argument, ou en append d'autres. L'utilisation de $@
permet d'inclure des spécifications de ressources comme -l ncpus=4
si nécessaire. Voici comment utiliser le script:
echo 'command -a 23 -b zz' | qgo | tee jobids
Les files STDERR.*
Et STDOUT.*
qsubscripts
dans les directorys du directory de travail en cours. Les ids de travail sont fournis sur The working directory for the job is set as the
cwd`, ce qui facilite l'écriture de ces courts scripts.