CLI Productivity

모듈

모듈은 요청 시 커널에 로드할 수 있는 프로그램으로 커널을 재컴파일하거나 재부팅할 필요가 없다(p52, 모던 리눅스 교과서, 2023).

$ find /lib/modules/$(uname -r) -type f -name '*.ko*'

커널이 실제로 로드한 모듈 $ lsmod
모듈 종속성 목록 조회 $ modprobe --show-depends async_memcpy

diff와 patch

다음과 같이 변경 사항을 생성한다.

$ diff -u a-original/a.py a-patched/a.py
--- a-original/a.py	2022-05-11 10:07:21.000000000 +0900
+++ a-patched/a.py	2022-05-11 10:07:42.000000000 +0900
@@ -1,4 +1,4 @@
 aaa
 bbb
-ccc
+ddd
 ddd

> a.patch를 이용해 패치 파일로 저장한 다음, 다음과 같이 적용할 수 있다.

$ patch -p0 < a.patch

a-original/a.py에 패치가 적용된다.

Typora parser

https://github.com/PegasisForever/typora-parser

footnotes가 포함된 행에 superscript가 함께 있을 경우 제대로 처리되지 않는 문제가 있다. src/inlines/inlineNode.ts에서 아래 부분 패치:

const nodePrecedenceGroups = [
  [RawHTMLNode, AutolinkNode, CodeSpanNode, EmojiNode],
  [HighlightNode, SubScriptNode, SuperScriptNode, FootnoteNode],
  [LinkNode.LinkNode],
  [EmphNode.EmphNode],
]

footnotes 순서를 superscript에 포함하여 패치. 빌드 과정:

$ npm i && \
chmod +x ./build/bin/typoraExport.js && \
./build/bin/typoraExport.js -g ./tags.txt -o ./ch5.html "5. test.md" && \
open ./ch5.html

bundle exec jekyll serve

macOS를 업데이트 할 때 마다 실행에 문제가 있다.

macOS 기본 ruby에 system libraries를 설치할 수 없기 때문인데 Ventura에서 다음과 같이 해결했다.

# rvm 설치
$ curl -sSL https://get.rvm.io | bash -s stable
$ rvm install "ruby-3.1.2"
$ brew install openssl@1.1

# https://stackoverflow.com/a/31516586
$ bundle config build.eventmachine --with-cppflags=-I$(brew --prefix openssl@1.1)/include

# likejazz.github.io
# https://stackoverflow.com/a/70916831
$ bundle add webrick

# runme.sh
$ bundle exec jekyll serve --host 0.0.0.0

tar with excludes

디렉토리 제외 설정은 tar 옵션 맨 앞에, cvf는 반드시 하이픈 부여 필요.

$ tar --exclude='*.json' --exclude='FastChat/wandb' --exclude='FastChat/output' -cvf FastChat.tar FastChat/

setup KST timezone

$ sudo apt install tzdata
(6 - 69)

It will automatically set /etc/localtime.

asciinema

터미널 캡처 gif를 가장 깔끔하게 만드는 방법

  • $ brew instal asciinema 설치
    • 굳이 업로드 할 필요는 없다. $ asciinema rec로 record 후 로컬 저장
  • asciinema-edit로 quantize(딜레이 조정), cut(잘라내기)
  • gifcast를 이용해 animated gif로 변환. agg와 달리 한글 문제도 없으며 가장 깔끔하게 변환된다.

또 다른 옵션으로 termtosvg도 있다. 바로 svg로 저장되므로 편리하지만 한글 출력시 약간씩 좌우로 흔들리는 버그가 있다.

Mount disk

DGX:

$ lsblk
# 파일시스템 포맷이므로 주의
$ sudo mkfs.xfs /dev/nvmexxx
$ sudo mkdir /models
$ sudo chown hyperai /models
$ sudo mount /dev/nvmexxx /models

Jetson:

$ sudo fdisk /dev/nvme0n1
# n, p, [ENTER], [ENTER], w
$ lsblk
nvme0n1      259:0    0 931.5G  0 disk
└─nvme0n1p1  259:1    0 931.5G  0 part
$ sudo mkfs.ext4 /dev/nvme0n1
$ sudo mkdir /models
$ sudo chown sangpark /models
$ sudo mount /dev/nvme0n1 /models
# /etc/fstab 수정
# <file system> <mount point>             <type>          <options>                               <dump> <pass>
/dev/root            /                     ext4           defaults                                     0 1
/dev/nvme0n1         /models               ext4           defaults                                     0 2

파일 시스템을 ext4로 사용하는 것외에는 동일하다. 전체 디스크를 단일 파티션으로 사용할 것이므로 굳이 fdisk 하지 않아도 된다.

lvm 확장

lvm 논리 불륨을 확장하려면 $ sudo vgs로 볼륨 그룹의 이름 확인, 이후 다음과 같이 확장한다.

# 논리그룹 확장: 사용 가능한 모든 공간
$ sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
# 파일시스템 확장
$ sudo resize2fs /dev/ubuntu-vg/ubuntu-lv

htop

top을 대체하는 최고의 프로젝트

  • Shift+H Turn off userland threads
  • F2 Setup에서 설정 변경. Available meters에서 추가 및 이동 가능. F10으로 ~/.config/htop/htoprc에 저장한다.

set -ex

bash 스크립트에서 set -ex는 e 옵션은 에러 발생시 바로 실행 종료, x 옵션은 모든 실행 명령 출력으로 디버깅을 돕는다.

Last Modified: 2024/04/24 10:21:44

is a collection of Papers I have written.
© 2000 - Sang-Kil Park Except where otherwise noted, content on this site is licensed under a CC BY 4.0.
This site design was brought from Distill.