qから多数のジョブを削除したい。ジョブを削除するコマンドはqdel JOBid
.
最初に subprocess モジュールを使用しようとしましたが、エラーが発生しました: #!/usr/bin/env python
import sys, os, subprocess as sp
lo = sys.argv[1]
hi = sys.argv[2]
lo = int(lo)
hi = int(hi)
for i in range(lo,hi):
print "i is %d"%i
p=sp.Popen(['qdel %d'%i],stdout=sp.PIPE)
#os.system('qdel %d'%i)
したがって、これは機能しませんでした。私が得たエラーは
Traceback (most recent call last):
File "del.py", line 14, in <module>
p=sp.Popen(['qdel %d'%i],stdout=sp.PIPE)
File "/usr/lib64/python2.6/subprocess.py", line 639, in __init__
errread, errwrite)
File "/usr/lib64/python2.6/subprocess.py", line 1228, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
次に、サブプロセス行をコメントアウトして os を使用すると、すぐに機能しました。subprocess モジュールを完全には理解していないと思います
#!/usr/bin/env python
import sys, os, subprocess as sp
lo = sys.argv[1]
hi = sys.argv[2]
lo = int(lo)
hi = int(hi)
for i in range(lo,hi):
print "i is %d"%i
#p=sp.Popen(['qdel %d'%i],stdout=sp.PIPE)
os.system('qdel %d'%i)
上記のコードは問題なく動作しました。subprocess モジュールの利点と理由を知りたいだけです。また、私はUNIXシェルを使用しています