3 ܓi*@s:ddlZddlZddlmZmZmZGdddeeZdS)N)PluginIndependentPlugin PluginOptc @sleZdZdZdZdZeddddedd d ded d d ded deddeddeddgZddZ ddZ dS)Processzprocess informationZprocesssystemlsofTzcollect info on all open files)defaultdescz lsof-threadsFz,collect threads' open file info if supportedsmapszcollect /proc/*/smaps filessamplesz"number of iotop samples to collect)rZval_typer numprocsiz*number of process to collect /proc data ofc Csd}d}d}|d7}|jddddd gd d |jd D}|jd rX|d|jd }xH|D]@}|jd|dd|dd|dd|dd|dgq^W|jdr|jd|jdddddddgdd|jdd d!|jd"r|jd#d"d$d%d"d&|jd'r|jd(d$d%d)|jd*d+d,gd-d.|j|d/||d/|g|jd0rv|jd1|jd0d2d3|jd4d5gdS)6Nzps axoz3pid,ppid,user,group,lwp,nlwp,start_time,comm,cgroupz3flags,state,uid,pid,ppid,pgid,sid,cls,pri,psr,addr,zsz,wchan:20,lstart,tty,time,cmdz/proc/sched_debugz /proc/statz/sys/kernel/debug/sched/debugz /sys/kernel/debug/sched/featuresz/sys/kernel/sched_ext/cSsg|]}tjd|r|qS)z[0-9])rematch).0pr/usr/lib/python3.6/process.py 0sz!Process.setup..z/procr z/proc/z/statusz/cpusetz/oom_*z/stackz/limitsr z/proc/[0-9]*/smapsz ps auxwwwmZpsZps_auxZps_auxwwZ ps_auxwwwZ ps_auxwwwmZ ps_auxcww) root_symlinktagspriorityz pstree -lpZpstree)rrzlsof +M -n -l -c ''2)rtimeoutrrz lsof-threadsz lsof +M -n -l)rrz ps alxwwwz ps auxfwwwzps -elfLT)Z cmd_as_tag r ziotop -b -o -d 0.5 -t -n d)rz#pidstat -p ALL -rudvwsRU --human -hz pidstat -tl)Z add_copy_speclistdirZ get_optionZadd_cmd_output)selfZps_axoZ ps_group_optsZ ps_sched_optsZprocsprocrrrsetup!s\             z Process.setupc Cs|jd}|jjjs$|jddS|jd}i}i}|ddksZ|jd|ddSxh|djD]X}|jj}|d}|d}|j |sqh||kr|jjj |||<|||d ||<qhW|jt j |dd WdQRXdS) Nzpids_to_packages.jsonz/Package manager not configured for path querieszps --no-headers aexZstatusrzUnable to get process list: output)pathpackage)indent) Zcollection_fileZpolicyZpackage_managerZquery_path_commandwriteZexec_cmd splitlinesstripsplitZ path_existsZ pkg_by_pathjsondumps)rZpfileZ_psZpidpkgpathsr pidr$rrrcollectbs(       zProcess.collectN)r) __name__ __module__ __qualname__Z short_descZ plugin_nameZprofilesrintZ option_listr!r/rrrrrs   Ar)r+rZsos.report.pluginsrrrrrrrr s