BYPASS SHELL BY ./RAZORGANZ
Server: nginx/1.20.1
System: Linux iZdzfnv9mwfppeZ 5.10.134-19.2.al8.x86_64 #1 SMP Wed Oct 29 22:47:09 CST 2025 x86_64
User: apache (48)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: //usr/local/sysak/.sysak_components/tools/fsstatClass.pyo
�
�]ic@sjddlZddlZddlZddlZddlZddlZddlZddlZddlm	Z	ddl
m
Z
ddl
mZmZddl
m
Z
ddlmZmZddlmZejdd	�Zdad
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"de
fd��YZ#dS(i����N(tOrderedDict(t
diskstatClass(tgetDevtt
getDevtRegion(t
humConvert(tPIPEtPopen(tPAGESIZEtSYSAK_WORK_PATHtcCs4t|dtdtdt�}|jj�jd�S(Ntshelltstdouttstderrsutf-8(RtTrueRRtreadtdecode(tcmdtp((s7/usr/local/sysak/.sysak_components/tools/fsstatClass.pytexecCmdscCseyLtdt|�d��,}djtjd|j���j�SWdQXWntk
r`dSXdS(Ns/proc/s/statusR	s	Tgid:(.*)t-(topentstrtjointretfindallRtlstriptIOError(tpidtf((s7/usr/local/sysak/.sysak_components/tools/fsstatClass.pytgetTgids/
cCsbyId|krHtdt|�d��}|j�jd�SWdQXnWntk
r]|SX|S(Ns..s/proc/s/comms
(RRRtrstripR(tcommRR((s7/usr/local/sysak/.sysak_components/tools/fsstatClass.pytfixComm$s 
cCsetjtd�atjtj_tjtj_tjgtj	_
dtj	_tjgtj_
dS(Ns/tools/libpodinfo.so(
tctypestCDLLt	work_pathtpodinfo_libtc_char_pt	CListPodstrestypetCGetContainerInfostc_inttSetLogLeveltargtypestNonetFreeCString(((s7/usr/local/sysak/.sysak_components/tools/fsstatClass.pyt
setPodinfoLib-scCs�dj|�}y�t|d��m}|j�j�}|s@dSd|kr]|jd�dS|jd�}t|�dkr�|dSdSWdQXWn8tk
r�}dj||�GHdStk
r�}dSXdS(	Ns/proc/{0}/cgrouptrs::it:iis2错误:未找到PID为 {0} 的进程。原因: {1}(	tformatRtreadlinetstripR,tsplittlenRt	Exception(Rtcgroup_file_pathRtlinetpartste((s7/usr/local/sysak/.sysak_components/tools/fsstatClass.pytgetCgroupNamebyPid6s"cCs�tjd�tj�}tjd�|s0iS|jd�}tj|�}x0|D](}|rU|j|jd��rU|SqUWiS(Niisutf-8tCgroupParent(R$R*R&Rtjsontloadst
startswithtget(tcg_pathtresulttpodstpod((s7/usr/local/sysak/.sysak_components/tools/fsstatClass.pytgetPodbyCgroupPs


c

Cs�y�dt|�}d}t|d���}|j�jd�}t|�dkrzt|d�dkrz|ddd!nd}tjd|�r�td	|�jd
�}nWdQXt	j
|d�}x|D]}y�t	j|d|�}d
|ksd|ksd|krw�nt	jj
|�rjt	j|�jt|�krjt|�dkrf|d|S|S|dkr�||}t	jj
|�r�t	j|�jt|�kr�|d|SnWq�ttfk
r�}	q�q�Xq�WWntk
r�nXdS(Ns/proc/R	s/cgroupsdocker/iiis\A[0-9a-fA-F]+\Zs&docker inspect -f '{{.HostRootPath}}' s
s/fds/fd/s/dev/s/sys/s[containterId:%s]R(RRRR4R5RtmatchRR3tostlistdirtreadlinktpathtisfiletstattst_inotintRtEOFErrorR6(
RtinotpiddirtdockerRootPathRtcidtfdListRJtdockerFullPathR:((s7/usr/local/sysak/.sysak_components/tools/fsstatClass.pytgetFullNameFromProcPid`s8?"
$0

cCs�|d}|d}t|�dkr*dS|j�sHt|�dkrZ|dj�dSy<x1|D])}|j|�dkrd|j�dSqdWdSWn tk
r�|dj�dSXdS(NtmntfnametfsmountinfoiRii����(R5tisspaceR4tfindt
IndexError(tfileInfoDictRWtfsmountInfotl((s7/usr/local/sysak/.sysak_components/tools/fsstatClass.pyt
getMntPath�s



cCs�d}t|�}|dkr'd}nxS|d|d|d|dgD]/}|dkrJ|dkrJ|d|7}qJqJW|ddkr�|ddkr�d|}n||}d	|kr�t|d
|d�}|dkr�|}q�n|S(
NR	t/td3fnametd2fnametd1fnametbfnames(fault)s/...s...RRPR(R_RV(R\t
fileSuffixtmntdirRtfilename((s7/usr/local/sysak/.sysak_components/tools/fsstatClass.pytgetFullName�s$	 

cCstd|d|�dS(Nsecho 's' > (R(Rgttxt((s7/usr/local/sysak/.sysak_components/tools/fsstatClass.pytechoFile�scCstd|d|�dS(Nsecho 's' >> (R(RgRi((s7/usr/local/sysak/.sysak_components/tools/fsstatClass.pytechoFileAppend�scCsDd}t|��}|j�}WdQX|j|�dkr@tStS(Ns4/sys/kernel/debug/tracing/available_filter_functionsi(RRRZR
tFalse(tnametfileRtss((s7/usr/local/sysak/.sysak_components/tools/fsstatClass.pyt
supportKprobe�stfsstatClasscBs�eZd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�ZRS(c
Cs�tt|�j|||||	�g|_||_||_||_|dk	r^t|�nd|_	|dk	rt|�nd|_
|dk	r�t|�n	ddg|_d}
|
d|_
|
d|_|jd|_g|_d|_i|_i|_|jd	�}d
|kr$dnd|_|jd
�}|j�|_xA|jD]6}
|
j�d}|j||�|j||�qUWt|j�dkr�ddGHtjd�nd|_t�dS(Ni��ii����s/sys/kernel/debug/tracings/kprobe_eventss/instances/iofsstat4fss/events/kprobess:dev=+0x10(+0x28(+0x20(%s))):u32 inode_num=+0x40(+0x20(%s)):u64 len=%s:u64 mntfname=+0x0(+0x28(+0x0(+0x10(%s)))):string bfname=+0x0(+0x28(+0x18(%s))):string d1fname=+0x0(+0x28(+0x18(+0x18(%s)))):string d2fname=+0x0(+0x28(+0x18(+0x18(+0x18(%s))))):string d3fname=+0x0(+0x28(+0x18(+0x18(+0x18(+0x18(%s)))))):string %sR,scomm=s
 comm=(.*)R	tmmapis%sserror: not available kprobei
( tsuperRqt__init__t
expressionRtmiscStattdevnameR,RNttoptbwThreshRtdevttkprobeEventt
tracingDirt	kprobeDirtkprobetkprobeArgsFormatt
pid_pod_cachetfile_name_cachet_getKprobeArgstftracePaserCommArgst_getFsMountInfoR]R4t_kprobeReadWritet_kprobeMmapR5tsystexittoutlogFormatBaseR.(tselfRwRt
utilThreshRyRxR=t
nodiskStatRvtPatternttracingBaseDirt
kprobeArgstmmapKprobeArgstentrytfstype((s7/usr/local/sysak/.sysak_components/tools/fsstatClass.pyRt�s<				!!'

						cCs�x�ddgD]�}|d|d|d||d|d|g}tt|j�t|�@�rjq
nd}x$|D]}t|�rw|}PqwqwW|s�|j�tkr
d|GHq
q
nd|d	|}|jj|�|jj|�q
WdS(
NtwriteRt_file_t_itert
_file_aio_tgeneric_file_aio_s!warnning: not available %s kprobesp t (	tlisttsetR~R,RptenableJsonShowRltappendRu(R�R�R�toptkPointsR~tktpointKprobe((s7/usr/local/sysak/.sysak_components/tools/fsstatClass.pyR��s"
cCs�x�|ddgD]}}||jkr,qnt|�s\|j�tkrd|GHqqnd|d|}|jj|�|jj|�qWdS(Nt
_page_mkwritet
filemap_faultsnot support kprobe %ssp R�(R~RpR�RlR�Ru(R�R�R�R~R�((s7/usr/local/sysak/.sysak_components/tools/fsstatClass.pyR�scCs�d}td�}|jd�}|dkr�t|d�dksot|d�dkrut|d�dkrud	nd
}t|d�dks�t|d�dkr�t|d�dkr�dnd}n�d
}t|d�dkst|d�dkrt|d�dkrdnd}t|d�dkr[t|d�dkrRdnd}nt|d�dkrzd}ntd�}|jd�dj�}iddgd6ddgd6ddgd6}	d}
}x�|	j�D]�\}}
|j|�r�|dkr7d||
d}
d||
d}|}n(d||
d}}
d||
d}Pq�q�W|
dkr�td |��n|j|
|
||
|
|
|
||f	}|S(!NR	suname -rt.Rriiii
s0xa0(+0x0%s)s0xa0%ss0x0(+0x0%s)s0x0%st0x10it0x0t0x8i
t0x18s
comm=$comms7lscpu | grep -E "Architecture|架构" | sed "s/:/:/g"R0s(%r0)s(%r1)tarms(%di)s(%si)tx86s(%x0)s(%x1)taarch64t+sarch %s not support(RR4RNR3titemsR?t
ValueErrorR(R�ttypetcommArgstvinfotversiontoffFiletoffLenRtarchtregstargv0targv1tkeytvaltargv2R�((s7/usr/local/sysak/.sysak_components/tools/fsstatClass.pyR�sH8;8%	


	"cs�g�|jdk	r,�jd|j�n1tjd�}x|D]}�jd|�qBWtd��+}tt�fd�|j���}WdQX|S(Ns/dev/s
/sys/blocks/proc/mountscst�fd��D��S(Nc3s|]}|�kVqdS(N((t.0R:(tx(s7/usr/local/sysak/.sysak_components/tools/fsstatClass.pys	<genexpr>Fs(tany(R�(tdevList(R�s7/usr/local/sysak/.sysak_components/tools/fsstatClass.pyt<lambda>Es(	RwR,R�RGRHRR�tfiltert	readlines(R�tsysfsBlockDirListtdevRR]((R�s7/usr/local/sysak/.sysak_components/tools/fsstatClass.pyR�<s
c	Cs�|j}tjj|j�s1tj|j�nx�|jD]�}d|j�dd}|jd|d}|jd|d}tjj|�r�t	|d�|ddkr�t	|d�nt
|jd	|�nt
|j|�|ddkrht|j
�}|t|�krNt	|d
tt|��dtt|���qht	|dt|��nt	|d
�td|jd|d�}tjd|�}|r;d|jd�kr�d|_q�q;q;WdS(Ntp_it_0R`s/enables/filtert0is-:%ssdev>=s&&dev<=sdev==t1sgrep print s/formats(.*) dev=(.*) inode_num=(.*)R�ii(RzRGRJtexistsR|tmkdirRuR4R}RjRkR{RRwtminRtmaxRRRFtgroupR�(	R�RztexptprobetenableKprobetfilterKprobeR�tfmttmatchObj((s7/usr/local/sysak/.sysak_components/tools/fsstatClass.pytconfigIs2	
.
cCs?t|jdd�t|jdd�tt|�j�dS(Ns/traceR	s/tracing_onR�(RjR|RsRqtstart(R�((s7/usr/local/sysak/.sysak_components/tools/fsstatClass.pyR�gscCs+t|jdd�tt|�j�dS(Ns/tracing_onR�(RjR|RsRqtstop(R�((s7/usr/local/sysak/.sysak_components/tools/fsstatClass.pyR�lscCs�x�|jD]�}d|j�dd}|jd|d}tjj|�sUq
nt|d�|jddkr�|jd|d}t|d�nt|j	d	|�q
Wt
t|�j�dS(
NR�iR�R`s/enableR�is/filters-:%s(
RuR4R}RGRJR�RjRzRkR{RsRqtclear(R�R�R�R�R�((s7/usr/local/sysak/.sysak_components/tools/fsstatClass.pyR�ps
cCspd}i}i}i	dd6dd6dd6dd6dd6dd6dd	6dd
6dd6}|j}t|�rrtnt}x�|D]�}|jd�}d
|ksd|ksd|kr�d|ksd|kr�qntjddd||�}	|	dksd|	jd�j	d�kr`d|	jd�j	d�kr`d|	jd�j	d�kr`qn|	jd�j
dd�dj	�}
t|	jd�|j�}|j
dk	r�t|
�|j
kst|�dkr�qn|r�|	jd �j	d�}n%|	jd�j
dd�dj	�}t||
�}d!|krCqn|j|�}
|
dkrdqn|jdk	r�|j|�}||j�kr�|j|i�n||}nt|	jd"�|j�}t|�d#t|�d#|
}||j�krHg|jD]}d$|
|kr
|^q
}|
|d<|	jd%�j	d�|d<|	jd�j	d�|d<|	jd�j	d�|d<|	jd�j	d�|d<|	jd&�j	d�|d<||d	<||d
<|
|d<|j|i
t|�d'6|d(6t|
�d)6|
d6dd*6dd+6dd,6dd-6|
d6|d.6�nt|	jd/�|j�}d0|ks{d1|kr�t}nd2|ks�d1|kr�||d*cd7<||d+ct|�7<nd3|ks�d0|kr||d,cd7<||d-ct|�7<n|
||dkrO|
||d<t|
�||d)<n|t|�7}qW|||fS(4NitdeviceR	RWRdRcRbRaRXRPRs
sdev=s="etc"s="usr"s="bin"s="sbin"s9(.*) \[([^\[\]]*)\] (.*) dev=(.*) inode_num=(.*) len=(.*)s4 mntfname=(.*) bfname=(.*) d1fname=(.*) d2fname=(.*)s
 d3fname=(.*)s.sois"tlibi	tusri
iRiR�is..iR0s/dev/iitinodeRttgidtcnt_wrtbw_wrtcnt_rdtbw_rdR\iR�tpage_mkwriteR�R(R�R5R
RlRRRFR,R�R3trsplitRNR�RRR tgetDevNameByDevtRvtgetMasterDevtkeyst
setdefaultR]RR(R�t	traceTexttbwTotalRLtmStatR\R�thasCommArgsR�R�RR�RR�tdiskRPtinoTaskRRXtsize((s7/usr/local/sysak/.sysak_components/tools/fsstatClass.pyt_paserTraceToStat}s�
	
*%$%
",



	+1	cCs�|d}||jkr)|j|}n+tt|��jdd�}||j|<|dkr{|dcd|d7<n|dt|d�}||jkr�|j|}nt|d	�}||j|<||d
<dS(NRtNametunknowRs [pod: t]R�R�R\Rn(R�RER;R@RR�Rh(R�titemRtpodnametfkeyt	full_path((s7/usr/local/sysak/.sysak_components/tools/fsstatClass.pyt_processItem�s


cs,xS|jD]H\}}||j�kr;|j|i�n||jt|��q
Wg}x�|j�D]�\}}d�|j|d�|j|d�kr�d�nt|j�d�fd�dt�|j	 }x!|D]\}}|j
|�q�W|j||f�qiW|j2|jj|�dS(	NR�tw_iopstr_iopsR�R�cs|d�S(Ni((R:(tidxSort(s7/usr/local/sysak/.sysak_components/tools/fsstatClass.pyR��streversei(
RvR�R�tupdatetdictR�tgetDiskStatIndtsortedR
RxR�R�textend(R�R�tdR�ttmpStattst_R�((R�s7/usr/local/sysak/.sysak_components/tools/fsstatClass.pyt
_joinMiscStat�s"$	+cCs�|j}d}tj|dt�}tjdtj��|d<|dkr\t|�dnd}x�|j�D]�\}}|d|dd	kr�qon|d
r�t	|d
t
�jd|�nd	|d
<|dr�t	|dt
�jd|�nd	|d<d}tj|dt�}	x$|j�D]\}}
|
|	|<q'W|d
j|	�qoWt
|d
�d	kr�|jtj|��ndS(Ns{"time":"","fsstats":[]}tobject_pairs_hooks%Y/%m/%d %H:%M:%SttimeiRR�R�iR�R�s�{                "inode":0,"comm":"","tgid":0,"pid":0,"cnt_rd":0,                "bw_rd":0,"cnt_wr":0,"bw_wr":0,"device":0,"file":0}tfsstats(tcycleR=R>RRtstrftimet	localtimeRR�RR
treplaceR�R5twriteDataToJsontdumps(R�RLtsecststatJsonStrt
fstatDictststSecsR�R�t
fsstatJsonStrt
fsstatDictR�((s7/usr/local/sysak/.sysak_components/tools/fsstatClass.pytshowJson�s&	"33c
Cs-|j}ddGH|dkr.t|�d
nd
}x�|j�D]�\}}|d|ddkrkqAn|dr�t|dt�jd
|�nd|d<|dr�t|dt�jd
|�nd|d<d|d|d|d|d|d|d|d|d	|d
|df
GHqAWdGHdS(Ns+%-20s%-8s%-8s%-8s%-12s%-8s%-12s%-12s%-12s%sRR�RR�R�R�R�R�R�tfilepathiRis+%-20s%-8s%-8s%-8d%-12s%-8d%-12s%-12s%-12s%sRnR	(
scommstgidspidscnt_rdsbw_rdscnt_wrsbw_wrsinodesdeviceR(RRR�RR
R
(R�RLR
RR�R�((s7/usr/local/sysak/.sysak_components/tools/fsstatClass.pyt	printStats	"33cCs[|j}t|jdd��}|j|�\}}}WdQXtt|j�dd�dt�|j �}x'|j�D]\}}|j	|�q{W|j
dk	r�|j|�S|j
r�|||j
kr�dS|j�tkrtjdtj��GHn|j�tkr(tt|�j�n|j�tkrJ|j|�n
|j|�dS(Ns/traceR/R�cSs|dd|ddS(NiR�R�((R:((s7/usr/local/sysak/.sysak_components/tools/fsstatClass.pyR�/sR�s%Y/%m/%d %H:%M:%S(RRR|R�RR�R�R
RxR�RvR,RRyR�RlRRR	tdisableShowRsRqtshowRR(R�R
RR�RLR�RR�((s7/usr/local/sysak/.sysak_components/tools/fsstatClass.pyR's$	
cCs5|j�tjt|��|j�|j�dS(N(R�RtsleeptfloatR�R(R�tinterval((s7/usr/local/sysak/.sysak_components/tools/fsstatClass.pyR�As

(t__name__t
__module__RtR�R�R�R�R�R�R�R�R�R�RRRRR�(((s7/usr/local/sysak/.sysak_components/tools/fsstatClass.pyRq�s 	)			.	
				
	V					($RGR�tsignaltstringRRR=R!tcollectionsRRRRRt
subprocessRRRrRtgetenvR#R,R$RRR R.R;RERVR_RhRjRkRpRq(((s7/usr/local/sysak/.sysak_components/tools/fsstatClass.pyt<module>s8										)