def run(self):
"""
Call this function at the end of your class's `__init__` function.
"""
stderr = os.path.abspath(os.path.join(self.outdir, self.name + '.log'))
if self.pipe:
self.args += ('|', self.pipe, '2>>'+stderr)
if self.gzip:
self.args += ('|', 'gzip', '1>', self.gzip)
else:
self.args.append('2>>'+stderr)
self.args.append('1>>'+stderr)
# Print timestamp to log
log = open(stderr, 'a')
log.write("[gloTK] timestamp={}\n".format(utils.timestamp()))
cmd = ' '.join(map(str, self.args))
print(cmd)
log.write(cmd)
start = time.time()
save_cwd = os.getcwd()
try:
utils.safe_mkdir(self.outdir)
os.chdir(self.outdir)
spawn_pid = os.spawnle(os.P_NOWAIT, self.shell, self.shell, '-c', cmd, self.env)
wait_pid, retcode, rusage = os.wait4(spawn_pid, 0)
if wait_pid != spawn_pid:
utils.die("could not wait for process %d: got %d" % (spawn_pid, wait_pid))
os.chdir(save_cwd)
except OSError as e:
utils.info(e)
utils.die("could not run wrapper for command:\n%s" % cmd)
elapsed = time.time() - start
retcode = os.WEXITSTATUS(retcode)
if (self.return_ok is not None) and (self.return_ok != retcode):
# Give some context to the non-zero return.
if os.path.isfile(stderr):
subprocess.call(['tail', '-3', stderr])
utils.die("non-zero return (%d) from command:\n%s" % (retcode, cmd))
log.close()
评论列表
文章目录