본문 바로가기
Tools

Monitoring jobs

by wycho 2020. 9. 23.

일정한 시간 간격을 두고, 작업이 끝났는지 확인이 필요했다. 그래야 이전 작업의 결과를 이용한 다음 작업을 자동으로 진행시킬 수 있기 때문이다.

 

Python에서 threading이 있지만 처음에 한번이 무조건 실행이 되기 때문에, 목적에 맞지 않고 불편했다. 이것은 제쳐두고, 기본적인 기능들만 가지고 원하는 대로 코드를 만들 수 있었다.

 

#! /usr/bin/env python3

import subprocess
import sys

import time
import datetime


def watcher(sleep,task=''):
    time.sleep(sleep)
    cmd='squeue|wc -l && squeue --state="RUNNING"|wc -l'
    lines=subprocess.check_output(cmd,shell=True).decode().split()
    qline=int(lines[0])
    rline=int(lines[1])

    while qline > 1:
        time.sleep(sleep)
        print('*',task,datetime.datetime.now(),':',qline-1,'( RUNNING :',rline-1,')')

        cmd='squeue|wc -l && squeue --state="RUNNING"|wc -l'
        lines=subprocess.check_output(cmd,shell=True).decode().split()
        qline=int(lines[0])
        rline=int(lines[1])

    return True
    
    
def main(sleep):
    cmd=mainCMD+' -s1'
    subprocess.run(cmd,shell=True)

    watcher(sleep)
    
    cmd=mainCMD+' -s2'
    subprocess.run(cmd,shell=True)


if __name__=='__main__':
    sleep=sys.argv[1]
    
    main(sleep)

 

'Tools' 카테고리의 다른 글

tmux-cssh  (0) 2020.10.22
TabView  (0) 2020.10.08
checkVCF  (0) 2020.09.15
Windows Terminal  (0) 2020.08.17
Slurm - Workload manager  (0) 2020.08.15

댓글