Linux Programmer

리눅스 아재력 or 할배력 셀프 테스트 본문

컴퓨터 관련/리눅스(유닉스) 일반

리눅스 아재력 or 할배력 셀프 테스트

sunyzero 2016. 11. 21. 17:05

리눅스 아재력 or 할배력 테스트 (2023-06-28일 업데이트)

 

이 테스트는 리눅스 옛날 명령어만 알고 있는지, 아니면 대체된 새로운 명령어도 알고 있는지 알려줍니다.

deprecated된 옛날 명령어(일명 아재명령어 or 할배명령어)만 알고 있다면 이제 새로운 명령어와 기능들도 열심히 배우도록 합시다.

 

0. 사용방법

아래 명령어나 기능 중에 a가 가장 오래된 기능이고, 이후 보기들(b,c,d)은 대체된 새로운 기능이거나 명령어입니다.

예를 들어 문항에서 a, b, c를 모두 알고 있다면 최근 새로운 기능까지 모두 알고 있는 것입니다.

 


Part 1 : 기초 명령어, 셸

 

1-1. 터미널 화면 clear (or scroll up)

a) clear

b) <Ctrl-L>

 
아직도 화면을 지우기 위해 clear를 타이핑하고 있나요? 단축키 하나로 해결할 수 있는데 말입니다.
 

보통 bash의 기본 입력 모드인 emacs 모드에서는 Ctrl-L이 바로 가능하지만 vi 모드일 경우 (즉 set -o vi 세팅된 경우)라면 bind -m vi-insert "\C-l":clear-screen 설정이 필요합니다. 이 설정은 .bashrc 같은 곳에 넣어두면 됩니다.

 

==================================

1-2. bash 로그아웃

a) exit, logout

b) <Ctrl-D>

 

로그아웃 할 때 매번 exit를 친다면 이제 단축히 하나로 해결하는게 어떨까요?

 

==================================

1-3. vim에서 문서 저장하고 종료하는 명령

a) :wq

b) :x

c) ZZ

 

:wq만 사용하는 분보다 더 아재인 분들은 습관적으로 :wq! 까지 붙여서 사용합니다.

이제 좀 더 최근 명령어인 ZZ를 사용합시다.

세 명령어 모두 vi에 있었던 명령어라고 합니다.(송민철님이 알려주셨습니다.)

그냥 이 문항은 별 의미는 없고 그냥 재미로 봐주시기 바랍니다.

 

==================================

1-4. shell script를 읽어오는 명령 (subshell 실행이 아님)

a) . ~/module.sh

b) source ~/module.sh

 

점(dot)만 쓰고 source를 모르고 있다면 마음은 이미 아재 리눅서입니다.

==================================

1-5. bash 쉘에서 수식 계산하는 명령어

a) expr

b) let, $((...))

 

expr은 지금 완전히 사라져서 쓰지 않는 명령어 중에 하나입니다.

아직도 쓰고 있다면.... 음 새롭게 다시 공부하셔야 합니다.

 

==================================

1-6. 일회성으로 죽지않고 백그라운드로 작동할 명령어

a) nohup

b) systemd-run

 

systemd가 도입된 뒤로는 systemd-run을 주로 사용하게 됩니다. 더군다나 타이머를 이용해서 몇 시간 뒤에 작업을 실행하게 할 수도 있고, CPU사용율이나 IO사용율등 여러가지 우선 순위도 조작할 수 있습니다. 

 

특히 systemd 도입은 TCP/IP 소켓 프로그래밍에도 영향을 끼쳐서 CPU, Memory, I/O처리 등은 이제 애플리케이션에서 직접하는 일이 줄어들었습니다.

 

==================================

1-7. 아카이브, 압축

a) tar, cpio

b) compress

c) gzip, pigz

d) bzip2

e) xz

f) zstd

tar와 cpio는 압축을 하지 않는 묶는 archiving만 합니다. 따라서 압축은 tar와 gzip 같은 기능을 같이 사용해서 tar.gz 같은 확장자로 보여지죠. 가장 많이 쓰이는 tar.gz은 아직 현역으로 사용되기는 하지만 tar.xz나 tar.zst에 밀려 조금씩 자리를 내주고 있습니다.

특히 무지막지하게 빠르면서도 압축 효율이 좋은 zstd는 가히 압축의 최고봉이며 점점 많이 사용되어지고 있습니다. xz으로 몇분이 걸리는 압축 작업이 zstd로는 단 몇초에 끝날 정도로 차이가 많이 난답니다. (xz, zstd에는 멀티 스레드를 사용하는 -T 옵션이 따로 제공되며, 이 옵션을 사용해야 압축이 빨라집니다.)

pigz는 gzip의 멀티스레드 버전으로 gzip을 그대로 사용하는 환경에서 좀 더 빠른 압축을 가능하게 합니다.

 

==================================

1-8. 텍스트 탐색 및 필터

a) grep, egrep, pcre-grep, sed, awk

b) ack

c) ag (the silver searcher)

d) rg (ripgrep)

grep, sed, awk는 기본 텍스트 탐색이며 현역으로 잘 사용되고 있습니다. 하지만 최근에는 속도가 개선된 ag나 rg를 많이 사용하므로 소스 코드나 텍스트 로그를 탐색한다면 rg를 추천드립니다.

 


Part 2 : 네트워크

 

==================================

2-1. 네트워크 상태를 확인하는 명령어

a) netstat

b) ss

 

netstat은 이제 ss로 대체되었습니다.

아직도 netstat 명령을 사용한다면 할배 리눅서를 인증하는 셈입니다. 어서 빨리 ss를 사용하세요. (심지어 ss는 훨씬 빠르답니다. netstat는 시스템에 부담을 많이 줍니다.)

 

 

==================================

2-2. 네트워크 인터페이스 및 라우팅, 설정 관련 명령어

a) ifconfig, route

b) ip

c) nmcli

 

몇 년 전부터 nmcli를 사용하여 네트워크를 설정 합니다. 

/etc 밑에 있는 설정파일을 직접 에디터로 수정하는 것은 호랑이 담배피던 시절의 옛날 방식입니다.

심지어 과거에 사용되던 방식은 CentOS8부터는 아예 deprecated되었습니다. nmcli 쓰는 방법에 익숙해져야 합니다.

혹시 network manager를 꺼야만 한다는 인터넷의 옛날 문서를 보고 있다면... 음 이젠 시대가 바뀌었습니다.

 

==================================

2-3. 패킷 캡처 명령어

a) tcpdump

b) wireshark, tshark

 

==================================

2-4. 네임 서비스 질의 명령어

a) nslookup

b) dig

 
설마 아직까지 nslookup만 쓰고 있으신가요?

Part 3 : 서버 애드민

 

==================================

3-1. 레드햇 계열 패키지 설치 명령어

a) 패키지가 뭔가요? 설치라면 무조건 make; make install로 해결한다.

b) rpm

c) yum

d) dnf

 

dnf는 차세대 방식이므로 2016년을 기준으로 아직은 몰라도 상관은 없습니다. 그러나 yum은 잘 사용해야겠지요.

간혹 X윈도우를 사용하면서 packagekit와 충돌나는 경우를 해결하지 못한다면 당신은 리눅스 초보입니다.

 

==================================

3-2. 데비안 계열 패키지 설치 명령어

a) 패키지가 뭔가요? 설치라면 무조건 make; make install로 해결한다.

b) dpkg

c) apt-get, apt-cache

d) aptitude

d) apt

 

아직도 중간에 - 를 타이핑하기 위햇 apt-get, apt-cache를 타이핑하시나요?

아예 X윈도우에서 패키지 관리 프로그램을 사용하신다고요? 실제 실무 환경에서는 X윈도우를 쓰지 않기 때문에 실무에서는 불가합니다.

 

==================================

3-3. PID 1번 (ancestor process)

a) init

b) systemd

 

systemd가 등장한 뒤로 /etc/inittab 혹은 /etc/rc.d/rc.local은 구시대 유물입니다. 다만 모든 리눅스가 systemd 기반은 아닙니다. 구형 리눅스나 몇몇 마이너 배포판들은 systemd를 선택할 수 있거나 혹은 호환성이나 가벼움 때문에 옛날 방식을 사용하기도 합니다.

 

==================================

3-4. 스케줄러

a) at, cron

b) anacron

c) systemd.timer

 
요새는 cron보다는 systemd.timer를 쓴답니다. 
cron은 이제 구시대의 유물이 되어버렸습니다. systemd 기반에서는 systemd.timer로 사용해야 합니다.

 

==================================

3-5. 서비스 제어 명령어

a) service, update...*

b) systemctl

 

service는 과거 SysV init 구조에서 사용하던 명령어입니다.

이제 몇몇을 제외한 최근 리눅스 대부분이 systemd 기반으로 전환되었기 때문에 systemctl 명령을 사용합니다.

systemctl 외에 journalctl, loginctl, hostnamectl, timedatectl, localectl, machinectl 등 자매품도 있습니다.

 

==================================

3-6. 커널 설정 변경하기

a) sysctl

b) tuned-adm

 

sysctl로 직접 커널 파라메터를 수정하는 것은 이제 옛날 방법입니다.

요새는 dynamic adaptive system tuning daemon인 tuned를 사용하는 방법을 씁니다.

 

==================================

3-7. 부트 파라메터 설정

a) 직접 편집하기

b) grubby

 

vi로 직접 grub 설정을 편집하는 것은 위험합니다. 이젠 되도록이면 grubby를 쓰셔야 합니다.

 

==================================

3-8. stat계열 명령어

a) vmstat, iostat ...

b) dstat

 
요샌 python으로 쉽게 플러그인을 만들어 쓸 수 있도록 되어있고, 입맛에 따라 field 조절이 가능한 dstat도 많이 씁니다. 이 외에 stat계열은 아니지만 이평화님이 작성하신 guider (https://github.com/iipeace/guider)도 좋습니다.
 

Part 4 : 디스크 관리

 
==================================

4-1. 파티션 편집, 관리 명령어

a) fdisk

b) cfdisk, sfdisk

c) parted

 

==================================

4-2. 마운트/언마운트 명령어

a) mount

b) udisksctl

 
mount도 여전히 쓰이지만 좀 더 편리한 udisksctl을 써보세요.
 

==================================

4-3. 마운트, 파일 시스템, 블록 장치 조회 명령어

a) mount, fdisk -l

b) lsblk, blkid, findfs

c) findmnt

 

마운트 포인트 확인은 요새 findmnt쓰는거 아시죠? 이 명령어 처음 본다면 아재, 혹은 할배 인증입니다. (findmnt는 기능이 다양하고 유용한 옵션이 많으므로 man findmnt로 꼭 맨페이지를 읽어보시기를 권장합니다)

 


 

배움에는 육체적인 나이보다 새로운 것을 빠르게 받아들이는 정신적 나이가 더 중요한 법입니다. 과거의 기술만 알고 새로운 것이 나왔는지 찾아보는 노력이 없다면 아무리 어려도 정신적인 나이는 할배가 됩니다.

 

그러나 재미를 위해 만든 셀프 테스트이므로, 너무 심각하게 받아들이거나 자학할 필요는 없습니다. 모르면 새로 배우면 되죠. ^^그냥 생각나는대로 썼기 때문에 나중에 다른 기능들이 추가될 수도 있습니다.

 

 

* History

2023-06-28 pigz 압축 프로그램 추가

2023-01-26 텍스트 탐색(grep, sed, awk, ack, ag, rg) 부분 추가 

2020-10-04 4개의 파트로 분할 정리, 몇 가지 추가

2019-10-13 systemd-run 추가

2018-05-10 nslookup, dig, 파티션 편집, 마운트/언마운트, 마운트/블록상태 명령어 추가

2016-11-22 source 와 dot 명령어의 잘못된 설명 반영, vi 명령어에 대한 잘못된 설명 반영 (송민철님의 제보)

2016-11-21 초안

반응형
Comments