å€ãã³ãã³ã ã©ã€ã³ ããŒã«ãšäžŠè¡ããŠãããæ°ãã代æ¿æ段ã䜿çšããããšã§ããã楜ãããããã«ã¯çç£æ§ãåäžãããããšãã§ããŸãã
Linux/Unix ã§ã®æ¥åžžçãªäœæ¥ã§ã¯ããã£ã¹ã¯äœ¿çšéãã·ã¹ãã ãªãœãŒã¹ãç£èŠããããã« du ãªã©ãå€ãã®ã³ãã³ã ã©ã€ã³ ããŒã«ã䜿çšããŸãã ãããã®ããŒã«ã®äžã«ã¯ãé·ãéååšããŠãããã®ããããŸãã ããšãã°ãtop 㯠1984 幎ã«ç»å Žããdu ã®æåã®ãªãªãŒã¹ã¯ 1971 幎ã«é¡ããŸãã
é·å¹Žã«ããã£ãŠããããã®ããŒã«ã¯ææ°åãããããŸããŸãªã·ã¹ãã ã«ç§»æ€ãããŠããŸããããäžè¬çã«ã¯æåã®ããŒãžã§ã³ãã倧ããå€ãã£ãŠããããå€èŠ³ã䜿ãããããããŸãå€ãã£ãŠããŸããã
ãããã¯ãå€ãã®ã·ã¹ãã 管çè
ãå¿
èŠãšããåªããããŒã«ã§ãã ãã ããã³ãã¥ããã£ã¯è¿œå ã®å©ç¹ãæäŸãã代æ¿ããŒã«ãéçºããŸããã ã¢ãã³ã§çŸããã€ã³ã¿ãŒãã§ãŒã¹ãåãããã®ããããŸããã䜿ããããã倧å¹
ã«åäžããããã®ããããŸãã ãã®ç¿»èš³ã§ã¯ãæšæºã® Linux ã³ãã³ã ã©ã€ã³ ããŒã«ã«ä»£ãã XNUMX ã€ã®ããŒã«ã«ã€ããŠèª¬æããŸãã
1.NCDU察DU
NCurses ã®ãã£ã¹ã¯äœ¿çšé (
ncdu ã¯ãã£ã¹ã¯ãåæããæãé »ç¹ã«äœ¿çšããããã£ã¬ã¯ããªãŸãã¯ãã¡ã€ã«ããšã«äžŠã¹æ¿ããçµæã衚瀺ããŸãã次ã«äŸã瀺ããŸãã
ncdu 1.14.2 ~ Use the arrow keys to navigate, press ? for help
--- /home/rgerardi ------------------------------------------------------------
96.7 GiB [##########] /libvirt
33.9 GiB [### ] /.crc
7.0 GiB [ ] /Projects
. 4.7 GiB [ ] /Downloads
. 3.9 GiB [ ] /.local
2.5 GiB [ ] /.minishift
2.4 GiB [ ] /.vagrant.d
. 1.9 GiB [ ] /.config
. 1.8 GiB [ ] /.cache
1.7 GiB [ ] /Videos
1.1 GiB [ ] /go
692.6 MiB [ ] /Documents
. 591.5 MiB [ ] /tmp
139.2 MiB [ ] /.var
104.4 MiB [ ] /.oh-my-zsh
82.0 MiB [ ] /scripts
55.8 MiB [ ] /.mozilla
54.6 MiB [ ] /.kube
41.8 MiB [ ] /.vim
31.5 MiB [ ] /.ansible
31.3 MiB [ ] /.gem
26.5 MiB [ ] /.VIM_UNDO_FILES
15.3 MiB [ ] /Personal
2.6 MiB [ ] .ansible_module_generated
1.4 MiB [ ] /backgrounds
944.0 KiB [ ] /Pictures
644.0 KiB [ ] .zsh_history
536.0 KiB [ ] /.ansible_async
Total disk usage: 159.4 GiB Apparent size: 280.8 GiB Items: 561540
ç¢å°ããŒã䜿çšããŠãšã³ããªéã移åã§ããŸãã Enter ããŒãæŒããšãncdu ã¯éžæãããã£ã¬ã¯ããªã®å 容ã衚瀺ããŸãã
--- /home/rgerardi/libvirt ----------------------------------------------------
/..
91.3 GiB [##########] /images
5.3 GiB [ ] /media
ãã®ããŒã«ã䜿çšãããšãããšãã°ãã©ã®ãã¡ã€ã«ãæãå€ãã®ãã£ã¹ã¯é åãå æããŠããããå€æã§ããŸãã å·Šç¢å°ããŒãæŒããšãåã®ãã£ã¬ã¯ããªã«ç§»åã§ããŸãã ncdu ã䜿çšãããšãd ããŒãæŒããšãã¡ã€ã«ãåé€ã§ããŸãã åé€ããåã«ç¢ºèªãæ±ããããŸãã 貎éãªãã¡ã€ã«ã®èª€ã£ãæ倱ãé²ãããã«åé€æ©èœãç¡å¹ã«ããå Žåã¯ã-r ãªãã·ã§ã³ã䜿çšããŠèªã¿åãå°çšã¢ã¯ã»ã¹ ã¢ãŒããæå¹ã«ããŸã: ncdu -rã
ncdu ã¯ãå€ãã® Linux ãã©ãããã©ãŒã ããã³ãã£ã¹ããªãã¥ãŒã·ã§ã³ã§äœ¿çšã§ããŸãã ããšãã°ãdnf ã䜿çšããŠãå ¬åŒãªããžããªãã Fedora ã«çŽæ¥ã€ã³ã¹ããŒã«ã§ããŸãã
$ sudo dnf install ncdu
2. htop 察 ããã
ããã©ã«ãã§ã¯ãhtop ã¯æ¬¡ã®ããã«ãªããŸãã
ããããšã¯ç°ãªããŸã:
ããã«ãhtop ã¯äžéšã«ã·ã¹ãã ã«é¢ããæŠèŠæ
å ±ã衚瀺ããäžéšã«ãã¡ã³ã¯ã·ã§ã³ ããŒã䜿çšããŠã³ãã³ããå®è¡ããããã®ããã«ã衚瀺ããŸãã F2 ãæŒããŠèšå®ç»é¢ãéããšèšå®ã§ããŸãã [èšå®] ã§ã¯ãè²ã®å€æŽãã¡ããªã¯ã¹ã®è¿œå ãŸãã¯åé€ããŸãã¯æŠèŠããã«ã®è¡šç€ºãªãã·ã§ã³ã®å€æŽãè¡ãããšãã§ããŸãã
ææ°ããŒãžã§ã³ã® top ã®èšå®ã調æŽããããšã§åæ§ã®äœ¿ãããããå®çŸã§ããŸãããhtop ã«ã¯äŸ¿å©ãªããã©ã«ãèšå®ãçšæãããŠãããããå®çšçã§äœ¿ãããããªã£ãŠããŸãã
3. TLDR vs ç·
tldr ã³ãã³ã ã©ã€ã³ ããŒã«ã¯ãã³ãã³ãã«é¢ããç°¡ç¥åããããã«ãæ
å ± (äž»ã«äŸ) ã衚瀺ããŸãã ã³ãã¥ããã£ã«ãã£ãŠéçºãããŸãã
tldr ã¯äººéã«ä»£ãããã®ã§ã¯ãªãããšã«æ³šæããŠãã ããã ããã¯çŸåšã§ãæšæºçã§æãå æ¬çãªããã¥ã¢ã« ããŒãžåºåããŒã«ã§ãã ãã ããå Žåã«ãã£ãŠã¯äººéãäžèŠã«ãªãå ŽåããããŸãã ã³ãã³ãã«é¢ããå æ¬çãªæ å ±ãå¿ èŠãªããšãã¯ããã®åºæ¬çãªäœ¿çšæ¹æ³ãèŠããŠããã ãã§ãã ããšãã°ãcurl ã³ãã³ãã®ããã¥ã¢ã« ããŒãžã«ã¯ãçŽ 3000 è¡ãå«ãŸããŠããŸãã curl ã® tldr ããŒãžã®é·ã㯠40 è¡ã§ãã ãã®ãã©ã°ã¡ã³ãã¯æ¬¡ã®ããã«ãªããŸãã
$ tldr curl
# curl
Transfers data from or to a server.
Supports most protocols, including HTTP, FTP, and POP3.
More information: <https://curl.haxx.se>.
- Download the contents of an URL to a file:
curl http://example.com -o filename
- Download a file, saving the output under the filename indicated by the URL:
curl -O http://example.com/filename
- Download a file, following [L]ocation redirects, and automatically [C]ontinuing (resuming) a previous file transfer:
curl -O -L -C - http://example.com/filename
- Send form-encoded data (POST request of type `application/x-www-form-urlencoded`):
curl -d 'name=bob' http://example.com/form
- Send a request with an extra header, using a custom HTTP method:
curl -H 'X-My-Header: 123' -X PUT http://example.com
- Send data in JSON format, specifying the appropriate content-type header:
curl -d '{"name":"bob"}' -H 'Content-Type: application/json' http://example.com/users/1234
... TRUNCATED OUTPUT
TLDR ã¯ãé·ãããããæå³ããŸãã èªã¿ãŸããã§ããã: ã€ãŸããäžéšã®ããã¹ããåé·ãããããç¡èŠãããŸããã ããã¥ã¢ã«ããŒãžã¯äŸ¿å©ã§ãããé·ãããå Žåãããããããã®ååã¯ãã®ããŒã«ã«é©åã§ãã
Fedora ã®å Žåãtldr 㯠Python ã§äœæãããŸããã dnfãããŒãžã£ãŒã䜿çšããŠã€ã³ã¹ããŒã«ã§ããŸãã éåžžãããŒã«ãåäœãããã«ã¯ã€ã³ã¿ãŒããã ã¢ã¯ã»ã¹ãå¿ èŠã§ãã ããããFedora ã® Python ã¯ã©ã€ã¢ã³ãã䜿çšãããšããããã®ããŒãžãããŠã³ããŒãããŠãã£ãã·ã¥ãããªãã©ã€ã³ã§ã¢ã¯ã»ã¹ã§ããããã«ãªããŸãã
4.jq ãš sed/grep ã®æ¯èŒ
jq ã¯ã³ãã³ãã©ã€ã³çšã® JSON ããã»ããµã§ãã ãã㯠sed ãŸã㯠grep ã«äŒŒãŠããŸãããç¹ã« JSON ããŒã¿ãæäœããããã«èšèšãããŠããŸãã æ¥åžžæ¥å㧠JSON ã䜿çšããéçºè ãŸãã¯ã·ã¹ãã 管çè ã«ãšã£ãŠãããã¯æé©ãªããŒã«ã§ãã
grep ã sed ãªã©ã®æšæºããã¹ãåŠçããŒã«ã«å¯Ÿãã jq ã®äž»ãªå©ç¹ã¯ãjq ã JSON ããŒã¿æ§é ãç解ããåäžã®åŒã§è€éãªã¯ãšãªãäœæã§ããããšã§ãã
ããšãã°ã次㮠JSON ãã¡ã€ã«ã§ã³ã³ããåãæ€çŽ¢ããããšãããšããŸãã
{
"apiVersion": "v1",
"kind": "Pod",
"metadata": {
"labels": {
"app": "myapp"
},
"name": "myapp",
"namespace": "project1"
},
"spec": {
"containers": [
{
"command": [
"sleep",
"3000"
],
"image": "busybox",
"imagePullPolicy": "IfNotPresent",
"name": "busybox"
},
{
"name": "nginx",
"image": "nginx",
"resources": {},
"imagePullPolicy": "IfNotPresent"
}
],
"restartPolicy": "Never"
}
}
grep ãå®è¡ããŠæåååãèŠã€ããŸãã
$ grep name k8s-pod.json
"name": "myapp",
"namespace": "project1"
"name": "busybox"
"name": "nginx",
grep ã¯åèªåãå«ããã¹ãŠã®è¡ãè¿ããŸããã grep ã«ããã«ããã€ãã®ãªãã·ã§ã³ãè¿œå ããŠå¶éããããæ£èŠè¡šçŸæäœã䜿çšããŠã³ã³ãããŒåãæ€çŽ¢ãããã§ããŸãã
jq ã䜿çšããŠåãçµæãåŸãã«ã¯ã次ã®ããã«èšè¿°ããŸãã
$ jq '.spec.containers[].name' k8s-pod.json
"busybox"
"nginx"
ãã®ã³ãã³ãã«ãããäž¡æ¹ã®ã³ã³ãããŒã®ååãåŸãããŸãã XNUMX çªç®ã®ã³ã³ãããŒã®ååã®ã¿ãæ¢ããŠããå Žåã¯ãé åèŠçŽ ã®ã€ã³ããã¯ã¹ãåŒã«è¿œå ããŸãã
$ jq '.spec.containers[1].name' k8s-pod.json
"nginx"
jq ã¯ããŒã¿æ§é ãèªèããŠããããããã¡ã€ã«åœ¢åŒãå€å°å€æŽãããŠãåãçµæãåŸãããŸãã ãã®å Žåãgrep ãš sed ãæ£ããåäœããªãå¯èœæ§ããããŸãã
jq ã«ã¯å€ãã®é¢æ°ããããŸããããããã説æããã«ã¯å¥ã®èšäºãå¿
èŠã§ãã 詳现ã«ã€ããŠã¯ããåãåãããã ãã
5. fd ãš find ã®æ¯èŒ
ããšãã°ãGit ãªããžã㪠ãã£ã¬ã¯ããªå ã®ãã¡ã€ã«ãæ€çŽ¢ããå Žåãfd ã¯ã.git ãã£ã¬ã¯ããªãå«ãé ããã¡ã€ã«ãšãµããã£ã¬ã¯ããªãèªåçã«é€å€ãã.gitignore ãã¡ã€ã«ã®ã¯ã€ã«ãã«ãŒããç¡èŠããŸãã å šäœãšããŠãæåã®è©Šè¡ã§ããé¢é£æ§ã®é«ãçµæãè¿ããããããæ€çŽ¢ãé«éåãããŸãã
ããã©ã«ãã§ã¯ãfd ã¯çŸåšã®ãã£ã¬ã¯ããªã§å€§æåãšå°æåãåºå¥ããªãæ€çŽ¢ãå®è¡ããã«ã©ãŒåºåãè¡ããŸãã find ã³ãã³ãã䜿çšããåãæ€çŽ¢ã§ã¯ãã³ãã³ã ã©ã€ã³ã«è¿œå ã®ãã©ã¡ãŒã¿ãŒãå ¥åããå¿ èŠããããŸãã ããšãã°ãçŸåšã®ãã£ã¬ã¯ããªå ã®ãã¹ãŠã® .md (ãŸã㯠.MD) ãã¡ã€ã«ãæ€çŽ¢ããã«ã¯ã次ã®ãã㪠find ã³ãã³ããäœæããŸãã
$ find . -iname "*.md"
fd ã®å Žåã¯æ¬¡ã®ããã«ãªããŸãã
$ fd .md
ãã ããå Žåã«ãã£ãŠã¯ãfd ã«è¿œå ã®ãªãã·ã§ã³ãå¿ èŠã«ãªããŸããããšãã°ãé ããã¡ã€ã«ããã£ã¬ã¯ããªãå«ããå Žåã¯ã-H ãªãã·ã§ã³ã䜿çšããå¿ èŠããããŸãããããã¯éåžžãæ€çŽ¢æã«ã¯å¿ èŠãããŸããã
fd ã¯å€ãã® Linux ãã£ã¹ããªãã¥ãŒã·ã§ã³ã§äœ¿çšã§ããŸãã Fedora ã§ã¯æ¬¡ã®ããã«ã€ã³ã¹ããŒã«ã§ããŸãã
$ sudo dnf install fd-find
äœãè«Šããå¿ èŠã¯ãªãã
æ°ãã Linux ã³ãã³ã ã©ã€ã³ ããŒã«ã䜿çšããŠããŸãã? ãããšãå€ããã®ã ãã«åº§ããŸããïŒ ã§ããã³ã³ããæã£ãŠããå¯èœæ§ã¯é«ãã§ãããïŒ ã³ã¡ã³ãã§ããªãã®çµéšãå ±æããŠãã ããã
åºåã®æš©å©ã«ã€ããŠ
å€ãã®ã客æ§ããã§ã«ãã®ã¡ãªãããé«ãè©äŸ¡ããŠããŸã ãšããã¯ãµãŒããŒ!
ãã
åºæïŒ habr.com