Y at-il des inconvénients à utiliser qsub pour exécuter des tâches tout le time?

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

  • travailler dans le terminal
  • $ screen
  • vos petits boulots
  • Détacher l'écran ( Ctrla Ctrld )
  • travailler dans le terminal
  • $ screen -r (pour reprendre)
  • Vérifiez l'état de ce petit travail
  • $ exit
  • Et tu es de return

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.