始め
彡(゚)(゚)「学外からアクセスする以外の方法で、Gaussianを利用したいなぁ」
彡(゚)(゚)「せや、計算機の所定のフォルダーにファイルを放り込んだら自動でかけさせたらええんや!」
彡(゚)(゚)「それならわいでもできるやろ()」
利用した物
CentOSにあるcron
python3およびそのライブラリー
実物
import os
import subprocess
path = '******'
A=os.listdir(path)
C=[i for i in A if '.com' in i] #計算したいファイルのリストを作成
L=[i.replace('.log', '.com') for i in A if '.log' in i] #計算の終了したファイルのリストの作成
G=[i for i in C if i not in L] #計算していないファイルを抽出
command1 = 'ps ax |grep g09 | grep -v grep | wc -l'
command2 = 'cd ****** | g09 '
res = subprocess.check_output(command1, shell=True)
try:
if res==b'0\n':
print("計算可能です")
subprocess.Popen(command2 + G[0] + '&', shell=True)
print("計算を実行しました")
else:
print("計算中です")
except IndexError:
print("計算するファイルがありません")
*/30 * * * * /usr/bin/tcsh ./autopy.sh >>& /*******/analog-err.log
色々とあって直でpythonのプログラムを動かせなかったので、迂遠な方法を利用しています
詰まった所
gaussian等々のPathがcronでは通ってなかった事に気づくのに結構な時間を使った件について
一個一個Pathを設定するのが面倒だったので、
cronにprintenv
の結果を張り付けるとかいう力技を行っています
だから、実際のcronの中身はもっと長いです
あと、pythonのps ax |grep g09 | grep -v grep | wc -l
は自力で思いついたわけじゃないです
ネットでジョブの実行状況を知るにはどうしたらいいか、
的なので検索して引っかかった物を自分なりに弄っただけです
このプログラムにおける一番の難題はこの部分でしたね…
終わりに
私の環境ではこれで元気に動いています
ここをこうすればもっとスマートにいくのでは?みたいなのがあったら教えてください(乞食)
ただし、python使う意味ある?全部コマンドで良くね?みたいなことに気付いた勘の良いガキは嫌いだよ
どうして私の研究室にはジョブマネージャーが無いんですか(血涙)
次の目標として、ファイルの送信・転送について自動化できればいいなぁと思っています
転送は出来てるんですけど、送信がね……
最終的にはGUIを作成したいなぁと思っていたり…
それこそGo言語で何とかできないかなぁ
おしまい