python清空linux/unix系统共享内存代码,pythonunix,# -*- coding
文章由Byrx.net分享于2019-03-23 11:03:30
python清空linux/unix系统共享内存代码,pythonunix,# -*- coding
# -*- coding: utf-8 -*-# Remove the share memoryimport osimport sysimport getoptdef usage(): print "usage: python rmsharemem.py -h -o <owner> -s size <shmid list>" print " -h show help information" print " -o <owner> the owner create share memory need to delete" print " -s <size> the share memory size" print " <shmid list> the shmid list need to delete"def getsharemem(): sharemap = {} fp = os.popen('ipcs -m') lines = fp.readlines() for l in lines: if not l.startswith('0x'): continue s = l.split() if sharemap.has_key(s[2]): sharemap[s[2]].append(s) else: sharemap[s[2]] = [s] #print 'Share memory map:\n', sharemap return sharemapif __name__ == "__main__": opts, args = getopt.getopt(sys.argv[1:], "o:hs:") # opts is the parameter with options # args is the parameter no ptions owner = None size = 0 for o, p in opts: if o == '-h': usage() sys.exit(0) elif o == '-o': owner = p elif o == '-s': size = p if not owner: val = raw_input("Are you sure to remove all share memory?(yes/no)"); if (val <> "yes"): usage() sys.exit(0) count = 0 total = 0 if len(args) > 0: for shmid in args: cmd = 'ipcrm -m %s' % shmid print 'execute command: %s' % cmd ret = os.system(cmd) total += 1 if ret == 0: count += 1 print 'remove %s shared memory success' % shmid else: print 'remove %s shared memory failed' % shmid else: shmmap = getsharemem() for o, l in shmmap.items(): if owner and o <> owner: continue for p in l: total += 1 if size and size <> p[4]: continue cmd = 'ipcrm -m %s' % p[1] print 'execute command: %s' % cmd ret = os.system(cmd) if ret == 0: count += 1 print 'remove %s shared memory success' % p[1] else: print 'remove %s shared memory failed' % p[1] print 'total share memory number = %s' % total print 'remove success number = %s' % count sys.exit(0)
评论关闭