LoginSignup
1
2

More than 3 years have passed since last update.

自動化プログラムを作りたい!

Posted at

始め

彡(゚)(゚)「学外からアクセスする以外の方法で、Gaussianを利用したいなぁ」

彡(゚)(゚)「せや、計算機の所定のフォルダーにファイルを放り込んだら自動でかけさせたらええんや!」

彡(゚)(゚)「それならわいでもできるやろ()」

利用した物

CentOSにあるcron

python3およびそのライブラリー

実物

auto.py
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言語で何とかできないかなぁ

おしまい

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2