Niaj hnub no peb xav tham txog qee qhov kev hloov tshiab tshiab rau Sherlock system [qhov no yog pawg ua haujlwm siab ntawm Stanford University - kwv yees. trans.], uas ua rau kom ceev cov ntaub ntawv teev npe hauv cov npe nrog coob tus nkag.
Tsis zoo li cov ntawv tsis tu ncua, qhov no yog ntau tshaj ntawm cov neeg sab hauv daim ntawv qhia txog yuav ua li cas peb niaj hnub ua haujlwm ntawm Sherlock kom nws khiav ntawm qhov zoo tshaj plaws rau peb cov neeg siv. Peb cia siab tias yuav tshaj tawm cov ntawv zoo li no yav tom ntej.
Sau ntau cov ntaub ntawv yuav siv sij hawm
Nws tag nrho pib nrog cov lus nug txog kev txhawb nqa los ntawm tus neeg siv. Nws qhia qhov teeb meem uas qhov kev tua ls
siv sijhawm ob peb feeb hauv ib phau ntawv nrog ntau dua 15 nkag hauv $SCRATCH
[cov ntawv teev npe rau cov ntaub ntawv ib ntus - kwv yees li. txoj kab].
Ntau txhiab cov ntaub ntawv hauv ib phau ntawv qhia feem ntau ua rau lub nra hnyav rau cov ntaub ntawv kaw lus thiab tsis pom zoo. Tus neeg siv paub qhov no thiab lees paub tias nws tsis zoo, tab sis tau hais tias cov npe tau nrawm dua 1000 npaug ntawm nws lub laptop dua Sherlock. Tau kawg, qhov no ua rau peb mob. Yog li peb saib tob dua.
Vim ls zoo saib.
Peb saib qhov nws ua tau tiag tiag ls
thaum sau ib daim ntawv teev npe, thiab vim li cas cov txheej txheem yuav siv sij hawm ntev heev. Nyob rau feem ntau niaj hnub kev faib khoom ls
los ntawm default nws khiav li ls --color=auto
, vim txhua tus nyiam cov xim.
Tab sis cov xim zoo nkauj tuaj ntawm tus nqi: rau txhua cov ntaub ntawv ls
yuav tsum tau txais cov ntaub ntawv hais txog hom ntaub ntawv, nws cov kev tso cai, chij, txuas ntxiv cov cwj pwm thiab cov zoo li txhawm rau xaiv cov xim tsim nyog.
Ib qho kev daws teeb meem yooj yim rau qhov teeb meem yog lov tes taw xim hauv ls tag nrho, tab sis xav txog qhov kev npau taws ntawm cov neeg siv. Tsis muaj ib qho xwm txheej twg koj yuav tsum tshem tawm cov xim tso zis, peb tsis yog dab.
Yog li peb saib tob dua. ls
xim nkag ntawm ib puag ncig hloov pauv LS_COLORS
, uas yog teem dircolors(1)
raws li cov ntaub ntawv configuration dir_colors(5)
... Yog,
Cia wb mus saib ntxiv
Txhawm rau txiav txim siab seb hom xim twg ua rau qeeb, peb tsim qhov chaw sim:
$ mkdir $SCRATCH/dont
$ touch $SCRATCH/dont/{1..10000} # don't try this at home!
$ time ls --color=always $SCRATCH/dont | wc -l
10000
real 0m12.758s
user 0m0.104s
sys 0m0.699s
12,7 vib nas this rau 10 cov ntaub ntawv, tsis zoo heev.
Los ntawm txoj kev, peb xav tau ib tug chij
--color=always
: txawm nws tig losls --color=auto
, tab sisls
kuaj pom thaum nws tsis txuas nrog lub davhlau ya nyob twg (piv txwv li los ntawm cov yeeb nkab lossis nrog cov kev tso tawm rov qab) thiab cuam tshuam cov xim yog teem rauauto
. Tus txiv neej ntse.
Yog li dab tsi siv sijhawm ntev? Peb ntsia nrog strace
:
$ strace -c ls --color=always $SCRATCH/dont | wc -l
10000
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
44.21 0.186617 19 10000 lstat
42.60 0.179807 18 10000 10000 getxattr
12.19 0.051438 5 10000 capget
0.71 0.003002 38 80 getdents
0.07 0.000305 10 30 mmap
0.05 0.000217 12 18 mprotect
0.03 0.000135 14 10 read
0.03 0.000123 11 11 open
0.02 0.000082 6 14 close
[...]
Wow: 10 hu lstat()
, 10 hu getxattr()
(uas txhua yam ua tsis tiav vim peb ib puag ncig tsis muaj tus cwj pwm ls tab tom nrhiav), 10 hu capget()
.
Muaj tseeb qhov no tuaj yeem ua kom zoo.
Capabilities attribute? Tsis yog
Ua raws li cov lus qhia
$ eval $(dircolors -b | sed s/ca=[^:]*:/ca=:/)
$ time strace -c ls --color=always $SCRATCH/dont | wc -l
10000
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
98.95 0.423443 42 10000 lstat
0.78 0.003353 42 80 getdents
0.04 0.000188 10 18 mprotect
0.04 0.000181 6 30 mmap
0.02 0.000085 9 10 read
0.02 0.000084 28 3 mremap
0.02 0.000077 7 11 open
0.02 0.000066 5 14 close
[...]
------ ----------- ----------- --------- --------- ----------------
100.00 0.427920 10221 6 total
real 0m8.160s
user 0m0.115s
sys 0m0.961s
Wow, mus txog 8 vib nas this ntawm acceleration! Peb tau tshem tag nrho cov kev hu kim kim getxattr()
, thiab kev sib tw capget()
ploj lawm, zoo heev.
Tab sis tseem muaj cov no annoying hu lstat()
, Txawm tiasβ¦
Koj xav tau ntau lub paj?
Yog li ntawd, peb tau saib ze dua LS_COLORS
.
Ua ntej peb tsuas yog disabled no variable:
$ echo $LS_COLORS rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36: $ unset LS_COLORS $ echo $LS_COLORS $ time ls --color=always $SCRATCH/dont | wc -l 10000 real 0m13.037s user 0m0.077s sys 0m1.092s
Dab tsi!?! Tseem 13 vib nas this?
Nws hloov tawm tias thaum ib puag ncig hloov pauv LS_COLORS
tsuas yog ib qho ntawm nws cov ntsiab lus tsis txhais lossis ploj lawm <type>=color:
, nws siv cov ntaub ntawv built-in los ntawm lub neej ntawd thiab tseem siv xim. Yog li yog tias koj xav lov tes taw colorization rau ib yam ntaub ntawv, koj yuav tsum override nws nrog <type>=:
los yog <type> 00
hauv cov ntaub ntawv DIR_COLORS
.
Tom qab ntau qhov kev sim thiab ua yuam kev, peb nqaim peb qhov kev tshawb fawb mus rau qhov no:
EXEC 00
SETUID 00
SETGID 00
CAPABILITY 00
uas yog sau li
LS_COLORS='ex=00:su=00:sg=00:ca=00:'
Qhov no txhais tau tias: tsis txhob xim cov ntaub ntawv los ntawm tus cwj pwm.
, neb ob
Peb ceev ceev ls
Thiab yog tias koj tsis ua ib qho ntawm cov tshev no, ces hu lstat()
ploj mus, thiab tam sim no nws yog qhov sib txawv kiag li:
$ export LS_COLORS='ex=00:su=00:sg=00:ca=00:'
$ time strace -c ls --color=always $SCRATCH/dont | wc -l
10000
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
63.02 0.002865 36 80 getdents
8.10 0.000368 12 30 mmap
5.72 0.000260 14 18 mprotect
3.72 0.000169 15 11 open
2.79 0.000127 13 10 read
[...]
------ ----------- ----------- --------- --------- ----------------
100.00 0.004546 221 6 total
real 0m0.337s
user 0m0.032s
sys 0m0.029s
0,3 vib nas this ntawm cov npe ntawm 10 cov ntaub ntawv, cov ntaub ntawv.
Teeb tsa Sherlock
Los ntawm 13 vib nas this nrog lub neej ntawd nqis mus rau 0,3 vib nas this nrog me me tweaking. LS_COLORS
txhais tau hais tias 40-fold acceleration vim tsis muaj setuid
/ setgid
thiab xim executable ntaub ntawv. Tsis zoo li qhov poob loj.
Tau kawg, qhov no yog tam sim no teeb tsa hauv Sherlock rau txhua tus neeg siv.
Tab sis yog tias koj xav rov qab cov xim, koj tuaj yeem rov qab mus rau qhov chaw pib:
$ unset LS_COLORS
Tab sis tom qab ntawd ntawm cov npe nrog ntau cov ntaub ntawv, nco ntsoov brew kas fes thaum nws tab tom khiav ls
.
Tau qhov twg los: www.hab.com