Linux Programmer

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

컴퓨터 관련/리눅스, 유닉스

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

sunyzero 2016. 11. 21. 17:05

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

 

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

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

 

* 사용방법

아래 명령어나 기능 중에 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

d) bzip2

e) xz

f) zstd

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

특히 무지막지하게 빠르면서도 압축 효율이 좋은 zstd는 가히 압축의 최고봉이며 점점 많이 사용되어지고 있습니다. xz으로 몇분이 걸리는 압축 작업이 zstd로는 단 몇초에 끝날 정도로 차이가 많이 난답니다.

 


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은 이제 구시대의 유물이 되어버렸습니다.

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

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

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

2019-10-13 systemd-run 추가

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

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

2016-11-21 초안

34 Comments
  • 프로필사진 Benjamin 2016.11.22 01:12 으아... 자학하고 갑니다. 이거 2탄이 나와도 재밌겠습니다.
  • 프로필사진 sunyzero 2016.11.22 11:35 신고 노력해보겠습니다. ^^
  • 프로필사진 Yowu 2016.11.22 01:14 신고 :wq 씁니다.. source 씁니다.. ifconfig 씁니다.. apt 씁니다.. yum 씁니다.. netstat 씁니다.. expr 씁니다.. service 씁니다.. wireshark 씁니다.. 우분투 13.04부터 리눅스에 입문했습니다..ㅜㅜ
  • 프로필사진 sunyzero 2016.11.22 11:36 신고 그냥 재미로 만든거라 틀린것도 있습니다. 송민철님이 알려주셔서 틀린 내용은 다시 반영했습니다.
  • 프로필사진 CHANN 2016.11.22 01:40 재밌네요ㅋㅋㅋㅋㅋ
  • 프로필사진 sunyzero 2016.11.22 11:37 신고 재미로 만든건데, 재밌으셨다면 소기의 목적을 달성했네요 ㅎㅎ
  • 프로필사진 한빛가람 2016.11.22 07:54 신고 자.. 제가 쓰는 모든 명령어로 미루어 보아 아재라는걸 증명하게 되었습니다. 하하.. 아재였군요..
  • 프로필사진 sunyzero 2016.11.22 11:37 신고 ㅎㅎ 사실은 저도 아재입니다.
  • 프로필사진 굼매 2016.11.22 17:54 . :wq! ifconfig apt-get yum netstat expr service tcpdump
    아재 아닌분을 보고싶습니다
    아재의눈물
  • 프로필사진 sunyzero 2016.11.26 20:58 신고 그냥 재미로 만든거니 큰 의미를 두실 필요까지는 없을것 같습니다. ^^
  • 프로필사진 FrancescoJo 2016.11.22 20:31 으어 내가 아재라니
  • 프로필사진 sunyzero 2016.11.26 20:59 신고 그냥 재미일뿐입니다. 재미로 봐주세요.
  • 프로필사진 정재훈 2016.11.23 13:24 전 신세대 인듯합니다 ㅎ
  • 프로필사진 sunyzero 2016.11.26 20:59 신고 축하드립니다. ^^
  • 프로필사진 제자 2016.12.01 20:07 강의 때 말씀하신거다 ㅋㅋㅋ
  • 프로필사진 sunyzero 2016.12.02 23:06 신고 반갑습니다. ^^ 많은 분들이 좋아하셔서 제2탄을 준비중입니다. ㅎㅎ
  • 프로필사진 할배 2020.08.15 15:03 안녕하세요 할배입니다.
  • 프로필사진 sunyzero 2020.08.20 16:49 신고 안녕하세요. ^^
  • 프로필사진 Minimalist Programmer 2021.02.01 08:59 신고 안녕하세요.

    할아재입니다.

    많이 배우고 갑니다.
  • 프로필사진 sunyzero 2021.02.01 21:47 신고 안녕하세요. ^^;
  • 프로필사진 y 2021.02.03 09:55 잘 읽고 갑니다. 그런데 systemd 계열은 따로 파일을 작성해야 하는 것 아닌가요?
  • 프로필사진 sunyzero 2021.02.03 18:56 신고 systemd-run을 이야기 하시는 것인지요?

    systemd-run은 따로 파일을 작성하지는 않습니다.
  • 프로필사진 할배 2021.02.05 13:54 안녕하세요. 할배입니다. 이거 알면 젊은이 되는건가요?
  • 프로필사진 sunyzero 2021.02.07 16:33 신고 그럼요. 제가 이걸 알고나서 요즘 배고프면 응애응애하고 다닙니다. ^^
  • 프로필사진 세벌 2021.02.08 10:15 a b c 다 모르면 엄청 신세대인 거죠? :)
  • 프로필사진 sunyzero 2021.02.08 20:42 신고 아~ 그렇군요. 아예 리눅스조차 모르면 진정한 신세대가 되겠습니다. -_-;
  • 프로필사진 할배 2021.02.20 18:19 모든 새로운 리눅스가 systemd로 돌아가는것은 아닙니다. Gentoo의 기본 init 시스템은 OpenRC입니다. Chrome OS는 Upstart를 쓴다고 하네요. https://en.wikipedia.org/wiki/Upstart_(software)

    "많은 리눅스가 systemd로 돌아간다"정도가 괜찮을것 같습니다.
  • 프로필사진 sunyzero 2021.02.22 00:26 신고 좋은 말씀 감사합니다. 말씀하신 내용을 추가하여 수정해두었습니다.

    다만 약간 틀린 이야기가 있는데, Gentoo의 경우도 systemd를 선택할 수 있게 되어있습니다. 또한 openrc는 init가 아닙니다. 서브 시스템입니다.

    또한 upstart의 경우도 수정된 init계통이며, systemd가 나오기 전에 과도기로 사용되던 시스템입니다. 과거 fedora도 잠깐 upstart를 채용했던 적이 있습니다. (다만 여러 문제점이 있어서 대부분 퇴출되었습니다)

    위키의 경우는 전문적인 부분은 생각보다 틀린 내용도 있기 때문에 조심스럽게 접근하시는게 좋습니다.
  • 프로필사진 할배 2021.02.24 05:41 답변감사합니다.

    새로고침을 해도 다음의 문장이 보이는데, 빠뜨리신듯 합니다.
    >> 3-5 서비스 제어 명령어
    >> 이제 새로운 리눅스는 전부 systemd 기반에서 작동하므로 systemctl 명령을 사용합니다.

    ---------------------
    마이너한 부분이지만, 틀린부분 이라고 지칭하신부분을 수긍할수 없어서 사족을 달아봅니다.

    OpenRC는 init binary를 대체하는 것은 아니지만 init *system*으로 스스로를 칭합니다.
    https://github.com/openrc/openrc/#openrc-readme
    이문서의 범위안에서는 OpenRC를 "init 시스템"으로 부르는것이 잘못된 내용은 아닌것 같습니다. 이 문서에서는 init *system*에 기반한, 서비스 daemon들의 시작/중단에 관한 명령어 설명이 중심이며, 그런 관점에서는 init binary가 systemd냐 아니냐 보다는, init system이 systemd냐 openrc냐의 분류가 더 어울립니다.

    ubuntu에서 openrc 설치할수 있습니다. apt-get install openrc 하면 됩니다. 그렇지만 기본 init시스템이 systemd이기에 ubuntu를 systemd를 (기본적으로) 사용하는 배포판으로 분류하는것은 타당해보입니다.

    제가 쓴 댓글의 내용은, Gentoo의 *기본* init 시스템은 OpenRC이고, 따라서 모든 새로운 리눅스가 systemd로 돌아가는것은 아니라는 의미입니다. 젠투에서 systemd를 설치할수있다는것이 제가 쓴 내용이 어떻게 틀렸다는것인지는 수긍가지는 않네요.
    -----------
    저도 위키를 100% 맹신하는것은 아니지만, 해당 문서의 어느 부분에 동의할수 없었는지 알려주셨으면 좋았을것 같습니다.
  • 프로필사진 sunyzero 2021.06.10 18:41 신고 먹고 사는게 바빠서 댓글관리를 전혀 못했습니다. 대댓글을 달아주셨는데 답변을 못드려 죄송합니다.

    일단 할배님 말씀과 wiki도 일리가 있으며, 제가 꼭 맞다고는 생각지 않습니다. 관점에 따라서 할배님 말씀이 맞을 수도 있다고 봅니다.

    하지만 제 생각을 일단 정리하면, init는 과거 tty를 관리하던 바이너리의 구조로 유닉스의 철학답게 스몰하게 만들어져 있습니다. 코드를 봐도 정말 하는 기능이 별로 없습니다. rc system은 여기에 run level과 run command 관련 스크립트의 추가 정도입니다.

    init system은 그냥 바이너리의 구조로서 정말 하는 일이 없고 daemon 서비스의 시작, 중단에 대해서는 init가 관여하는 것이 아니며, 이는 rc 스크립트들이 합니다. systemd가 처음 나왔을 때 공격받았던 것이 바로 init 체계 자체를 대체했지만 init가 하는 일과 rc관련 스크립트가 하는 일들의 구분이 없고, 아예 갈아 엎어서 통합 시스템화 되었기 때문도 있습니다. systemd를 재앙이라고 하는 경우도 있었습니다.

    당시 init와 systemd로의 전환에서 가장 비난 받은 지점이 가장 큰 차이라고 생각합니다. 그리고 그것은 바로 중앙집중화된 수직 체계입니다. 그에 비해 openrc는 init자체를 변경한 것은 아니며, 과거 openrc가 처음 나왔을 때는 init를 그대로 사용했습니다(지금도 다른 init를 그대로 사용가능한 것으로 압니다). 그러나 후일 openrc가 init를 재작성했기 때문에 많은 분들이 openrc가 init를 포함한 다른 것이라고 오해할 수 있는 부분이 있다고 보고 있습니다.

    물론 사람에 따라서 init를 재작성한 시점부터는 openrc가 고유의 체계라고 할 수도 있겠지만 작동 방식의 유사성과 특징을 그대로 가지고 있다면 다른 체계라고 보기에 애매하다고 생각됩니다.

    그렇지만 80년대에 System V에서 init는 어떤 것이라고 딱히 정의내린 것은 없기 때문에 openrc측에서 달리 주장할 수도 있겠다 생각됩니다.

    PS. 3-5도 수정했습니다. 다시 한번 감사합니다.
  • 프로필사진 소심 2021.03.10 15:43 혹시 wall 이라고 아시는분? 인정
  • 프로필사진 sunyzero 2021.06.10 18:43 신고 저도 알고 있습니다. ^^
  • 프로필사진 벨라토 2021.09.01 22:32 안녕하세요. 좋은 글 잘 보고 제가 몰랐던 많은 cli 프로그램들을 알 수 있어서 좋았습니다. 한 가지 궁금한 점은 이러한 정보를 어디서 얻으시는지 입니다. 저도 항상 새로운 기술을 계속 배우려고 하는데 이러한 cli 프로그램들이 언제 어떤 채널을 통해서 올라오는지 몰라서 조금 아쉽습니다. 알려주시면 감사하겠습니다.
  • 프로필사진 sunyzero 2021.09.02 21:12 신고 Fedora Linux가 신기술을 적용하는 리눅스인데, 신버전 나올때마다 New features에 변경점을 적어둡니다. 물론 여기에 자세한 내용은 안나오고, 약간 품을 들이셔야 하는데...

    각 패키지의 버전이 크게 업데이트 된 경우에는 좀 더 자세하게 패키지의 세부정보를 다시 확인하면 해당 정보들이 들어 있습니다. (패키지 목록과 히스토리도 fedora 사이트에서 보실 수 있습니다. 아니면 설치 후 dnf, rpm명령어로 change history를 보실 수도 있습니다)
댓글쓰기 폼