added files
This commit is contained in:
91
onlyone/__init__.py
Normal file
91
onlyone/__init__.py
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
import os
|
||||||
|
import psutil
|
||||||
|
import logging
|
||||||
|
from typing import List
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def b():
|
||||||
|
return 3+3
|
||||||
|
|
||||||
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
def isrunning(process:str):
|
||||||
|
for proc in psutil.process_iter():
|
||||||
|
if process.split(" ")[0] == proc.name().split(" ")[0]:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def startprocess(process:str):
|
||||||
|
try:
|
||||||
|
#raise Exception("aaa")
|
||||||
|
os.popen(process)
|
||||||
|
log.info("[onlyone][startprocess] -> processed started : " + process)
|
||||||
|
except OSError as e:
|
||||||
|
log.error("eror")
|
||||||
|
except:
|
||||||
|
log.error("eror")
|
||||||
|
|
||||||
|
|
||||||
|
def __killprocesses(killprocesses:List, processesList: List):
|
||||||
|
if killprocesses == None :
|
||||||
|
return False
|
||||||
|
for proc in processesList:
|
||||||
|
if any(element.split(" ")[0] == proc.name().split(" ")[0] for element in killprocesses):
|
||||||
|
proc.kill()
|
||||||
|
log.info("[onlyone][__killprocesses] -> processed kiled : " + proc.name + "(" + proc.id + ")")
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def killprocesses(killprocesses:List):
|
||||||
|
return __killprocesses(killprocesses, psutil.process_iter())
|
||||||
|
|
||||||
|
|
||||||
|
def __forceoneprocessinstance(process:str, processes:List):
|
||||||
|
found = False
|
||||||
|
for proc in processes:
|
||||||
|
if proc.name().split(" ")[0] == process.split(" ")[0]:
|
||||||
|
if found:
|
||||||
|
proc.kill()
|
||||||
|
log.info("[onlyone][__forceoneprocessinstance] -> processed kiled : " + proc.name + "(" + proc.id + ")")
|
||||||
|
else :
|
||||||
|
found = True
|
||||||
|
if not found:
|
||||||
|
startprocess(process)
|
||||||
|
|
||||||
|
def forceoneprocessinstance(processname:str):
|
||||||
|
return __forceoneprocessinstance(processname, psutil.process_iter())
|
||||||
|
|
||||||
|
def onlyone(process:str, killprocesses:list):
|
||||||
|
processes = psutil.process_iter()
|
||||||
|
__killprocesses(killprocesses, processes)
|
||||||
|
__forceoneprocessinstance(process, processes)
|
||||||
|
|
||||||
|
def Manager():
|
||||||
|
def __init__(self):
|
||||||
|
self.processes=[]
|
||||||
|
self._current=None
|
||||||
|
|
||||||
|
def addprocess(self, key, processname, initParams):
|
||||||
|
self.processes.append({
|
||||||
|
key:key,
|
||||||
|
processname:processname,
|
||||||
|
initParams:initParams
|
||||||
|
})
|
||||||
|
|
||||||
|
def current(self):
|
||||||
|
return None if self == None else self._current.key
|
||||||
|
|
||||||
|
def current(self, key):
|
||||||
|
item = any(element in key for element in self.processes)
|
||||||
|
if item == None:
|
||||||
|
return None
|
||||||
|
self._current=item
|
||||||
|
others = []
|
||||||
|
for item in self.processes:
|
||||||
|
if item.key!=key:
|
||||||
|
others.append(item.processname)
|
||||||
|
onlyone(item.processname, item.initParams, [element.processname for element in others])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
38
onlyone/__main__.py
Normal file
38
onlyone/__main__.py
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
import logging
|
||||||
|
import argparse
|
||||||
|
from types import new_class
|
||||||
|
from typing import List
|
||||||
|
from __init__ import *
|
||||||
|
|
||||||
|
|
||||||
|
logging.basicConfig(level="DEBUG")
|
||||||
|
log = logging.getLogger(__name__)
|
||||||
|
parser = argparse.ArgumentParser(description='onlyone')
|
||||||
|
parser.add_argument('--init', type=str, required=False, help='init processes')
|
||||||
|
parser.add_argument('--kill', type=List, required=False, help='kill processes')
|
||||||
|
parser.add_argument('--configfile', type=str, required=False, help='configfile')
|
||||||
|
parser.add_argument('--mode', type=str, required=False, help='configfile')
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if args.configfile:
|
||||||
|
manager = Manager()
|
||||||
|
#manager.refreshrate(1000)
|
||||||
|
manager.addprocess("x", "aaaaa", None)
|
||||||
|
manager.current("x")
|
||||||
|
#manager.oncurrent_changed(__oncurrent_changed)
|
||||||
|
console.writeline("write !quit and enter to exit")
|
||||||
|
else:
|
||||||
|
if args.init:
|
||||||
|
log.debug("invoking onlyone.onlyone")
|
||||||
|
onlyone(args.init, args.kill)
|
||||||
|
quit()
|
||||||
|
if args.kill:
|
||||||
|
log.debug("invoking onlyone.killprocesses")
|
||||||
|
killprocesses(args.kill)
|
||||||
|
quit()
|
||||||
|
log.debug("invoked without arguments")
|
||||||
|
|
||||||
|
def __oncurrent_changed(self, sender):
|
||||||
|
t=""
|
||||||
0
onlyone/fifo/__init__.py
Normal file
0
onlyone/fifo/__init__.py
Normal file
0
onlyone/fifo/client.py
Normal file
0
onlyone/fifo/client.py
Normal file
0
onlyone/fifo/server.py
Normal file
0
onlyone/fifo/server.py
Normal file
34
onlyone/sample.yaml
Normal file
34
onlyone/sample.yaml
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
refresrate: 3000
|
||||||
|
default:
|
||||||
|
fifo:
|
||||||
|
name: "aaaaaa"
|
||||||
|
mqtt:
|
||||||
|
broker: "aaaaaaaaaa"
|
||||||
|
clientid: "aaaaaaa"
|
||||||
|
topic: home/pi/onlyone
|
||||||
|
username:
|
||||||
|
password:
|
||||||
|
rest:
|
||||||
|
username: aaaa
|
||||||
|
password: aaa
|
||||||
|
port: 67777
|
||||||
|
processes: _
|
||||||
|
key: blue
|
||||||
|
process: smb
|
||||||
|
params: _
|
||||||
|
teste
|
||||||
|
teste
|
||||||
|
aaa
|
||||||
|
key: blue
|
||||||
|
process: smb
|
||||||
|
findexp: aaaaaa
|
||||||
|
params: _
|
||||||
|
teste
|
||||||
|
teste
|
||||||
|
aaa
|
||||||
|
key: blue
|
||||||
|
process: smb
|
||||||
|
params: _
|
||||||
|
teste
|
||||||
|
teste
|
||||||
|
aaa
|
||||||
Reference in New Issue
Block a user