실무에서 자주 사용하는 리눅스 기본 명령어 모음 [공사중]

    제가 실무 운영을 하면서 자주 사용하는 리눅스 명령어를 나열하려고 합니다. 보시면 리눅스/유닉스 공부를 조금 해보셨다면 에이.. 다 아는 명령어인데라고 하실 텐데, 네 맞습니다. 누구나 다 아는 기본적인 명령어입니다. 명령어와 약간의 옵션을 혼합해서 사용하면 간단한 실무 업무는 초보 관리자라도 운영을 하실 수 있을 겁니다. 저도 시스템 관리 운영을 하고 있지만 간혹 같은 계열(유지보수)에서 일하시는 분들 중에 기본적인 명령어도 몰라서 물어보시는 분이 있다고.. 명령어를 자세히 보면 약자로 쓰이는 경우가 많습니다. 파일을 이동「# mv = move (움직이다)」, 파일을 복사 「# cp = copy (복사하다)」, 목록 「# ls = list (리스트를 순서대로 나열하다)」 같은 형태로 말이죠. 단어와 대조해서 기억하면 좀 더 쉽게 접근할 수 있지 않을까 합니다. 명령어도 영어단어도 알게 되는 일석이조!

    ◇ 테스트 환경

    Rocky Linux release 8.6 (Green Obsidian)

     

    ※ 넘어가기 전 참고

    ① 리눅스 OS를 설치하면 기본적으로 모든 시스템 명령어는 「/bin (Symbolic Link)」 또는 「/usr/bin」 경로에 모여 있습니다. 대체로 명령어 이름 뒤에 「--help」 옵션을 입력하면 어떻게 사용하는지에 대해 나오지만 이 많은 옵션을 전부 사용하지는 않습니다. 그중 실무에서 자주 사용하는 필요한 옵션만 기억하시면 됩니다. 기본기에 익숙해지면 좀 더 다양한 옵션을 응용하여 편하게 운영을 하실 수가 있습니다.

    ② 명령어를 실행할 때 어떤 경로에 있던 위치 상관없이 바로 실행이 가능한 이유는 절대경로 「$PATH」가 미리 잡혀있기 때문입니다. 이게 무슨 뜻이냐면 만약 PATH경로가 안 잡혀 있다면 명령어를 실행하기 위해 「/bin/df」 또는 「/usr/bin/df」 명령어가 있는 경로를 모두 입력을 해야 하므로 매우 번거로운 상황이 발생합니다. 그래서 바로 명령어 「df」를 입력할 수 있도록 메인 「/etc/profile」 환경변수 파일에 이미 지정이 되어 있습니다. 일반 사용자들은 「~사용자 홈 디렉터리/.profile 또는 /.bash_profile」 파일을 읽어 들이며 사용자별로 있다는 뜻은 각자의 환경에 맞게 설정이 가능합니다.


    1. 명령어# df, du

    「df」는 파일 시스템 디스크 공간의 전체 사용량을 출력

    명령어 사용 예시

    [root@]# df
    ▷기본적으로 1KB 단위로 출력합니다. -k 옵션이랑 같은 결과
    [root@]# df -h [대문자 -H]
    ▷ 소문자는 사용자가 보기 좋게 1KB=1024B기준으로 계산하여 25KB/250MB/2.5GB 형태로 출력, 대문자는 계산하기 편하게 1KB=1000B기준으로 출력, 계산이 정확하지 않으므로 기본적으로는 소문자로만 이용
    [root@]# df -i
    ▷ -i는 inodes의 약자이며 아이노드의 사용량을 출력. 「Inode=index(인덱스)-node」 줄임말이라고 보면 됩니다. 리눅스 파일이나 디렉터리를 생성할 때 빠른 경로를 찾기 위해 일종의 고유 번호를 부여합니다. 이 하나의 파일(디렉터리) 안에 각종 정보들이 모여있는데 이것을 일종의 「Block(블록)」이라고 말하기도 합니다. 그래서 이런 경우가 발생할 수 있습니다. Inodes 파일(디렉터리) 개수는 최대 생성할 수 있는 양이 정해져 있는데요, 「# df -h」 명령어에서 디스크 용량 사용률(%)은 여유가 있으나 「# df -i」 아이노드 사용률(%)이 FULL=100%가 발생하면 더 이상 파일을 생성할 수 없기 때문에 한 번씩 확인해 보는 습관이 필요합니다. 예시로 데이터베이스나 시스템 로그에서 디스크가 여유가 있음에도 "「No space left on device」 디바이스 공간이 부족합니다" 같은 메시지를 보셨다면 아이노드를 한번 확인해 보면 좋습니다.

     

    「du」는 현재 디렉터리 경로의 디렉터리 또는 모든 파일 사용량을 출력

    명령어 사용 예시

    [root@]# cd /var/log/ [해당 경로를 예시로]
    [root@]# du -a
    ▷ 현재 디렉터리 아래의 모든 파일과 디렉터리 하위까지 포함 사용 정보를 출력, 그리고 기본적으로 1KB 단위로 출력합니다. -k 옵션이랑 같은 결과
    [root@]# du -ch [--total]
    ▷ -c 옵션은 모든 파일의 디스크 사용 정보를 출력하고 나서 합계를 같이 출력, 즉 /var/log의 해당 경로가 얼마만큼의 용량을 사용하는지 확인할 때 유용합니다. -h 옵션은 동일하게 사용자가 보기 좋게 1KB=1024B기준으로 계산하여 25KB/250MB/2.5GB 형태로 출력
    [root@]# du -sh
    ▷ -s 옵션은 summarize의 약자이며 해당 경로 전체 용량 합계만 표시
    [root@]# du -sh * | more
    ▷ 해당 경로에서 모든 디렉터리 및 파일 용량을 표시. 현재 경로일 경우는 「 * 」만 붙이고 다른 경로에서 확인할 경우는 절대경로 「# du -sh /var/log/*」로 잡으면 됩니다.


    2. 명령어# cd, pwd

    「cd」는 디렉터리를 이동하는 명령이며 가장 기본적이면서도 자주 사용하는 명령어입니다. 「pwd」 현재의 경로를 출력. 디렉터리가 많은 경로라면 이 2가지는 자연스럽게 같이 사용하게 됩니다. 옵션이 있긴 하지만 사용할 일이 잘 없네요.

    ※ 명령어 사용 예시

    [root@]# cd /var/log/ ▷ 해당 디렉터리 경로로 이동
    [root@]# pwd
    /var/log
    ▷ 현재 경로를 출력
    [root@]# cd ..
    [root@]# pwd
    /var
    ▷ 상위 디렉터리로 이동
    [root@]# cd ~foxydog
    [root@]# pwd
    /home/foxydog
    「# cd ~사용자이름」 「# cd ~」 붙이면 해당 경로로 이동되는 이유는 변수에 설정되어 있기 때문입니다. 일반 계정을 생성하면 「/etc/passwd」 정보에 값이 들어가며 예시에 나와있는 계정 [foxydog]=「foxydog:x:989:985::/home/foxydog:/bin/bash」으로 이동되도록 변수가 등록 되어 있습니다. 경로 위치 변경도 가능합니다.


    3. 명령어# ls

    「ls」는 현재 디렉터리 경로의 파일 목록 리스트를 출력

    ※ 명령어 사용 예시

    [root@]# ls ▷ 파일 목록 리스트를 출력, 기본적으로 세로 기준으로 숫자 다음에 알파벳 순으로 나열된다. 옵션중에 -b 가 있습니다. C언어 이스케이프 형태의 문자로 나열한다는 옵션이 있는데 테스트시에는 같은 결과가 나오네요.
    [root@]# ls -a ▷ -a 옵션은 all의 약자이며 .을 포함하여 모든 파일 목록 리스트를 출력, 「.bashrc」형태로 파일명 앞에 「.」붙어있다면 숨긴속성 파일입니다.
    [root@]# ls -l [= ll] ▷ 파일의 상세한 정보를 긴 리스트의 포맷으로 출력, 특정 파일만 확인할 경우는  「# ls -l 파일명」, 디렉토리를 조회 할 경우는 「# ls -ld 디렉터리 명」으로 사용 하면 됩니다. 「# ll」 명령어와 동일하게 작동하는 이유는 시스템 명령어를 단축시키기 위해 Alias(별명) 설정이 되어 있기 때문에 입니다. 「# alias」명령어를 입력하면 설정되어 있는 값을 확인 할 수 있습니다.
    [root@]# ls -al  .을 포함하여 모든 파일의 상세한 정보를 긴 리스트의 포맷으로 출력
    [root@]# ls -altr ▷ 추가로 -t 옵션은 가장 최근에 변경된 파일의 순으로 정렬, -r 옵션은 정렬의 순서를 역방향으로 합니다. 그래서 -tr 옵션을 같이 사용하면 가장 최근에 변경된 파일의 역순으로 보기 편하게 정렬해서 출력을 합니다.
    [root@]# ls -Slh | more -S 옵션은 파일 크기가 가장 큰 것부터 출력, 비정상적인 큰파일을 찾을때 좋습니다. -h 옵션은 동일하게 사용자가 보기 좋게 1KB=1024B기준으로 계산하여 25KB/250MB/2.5GB 형태로 출력, 만약 반대로 출려하려면 -r 옵션을 주면 됩니다.
    [root@]# ls -i  Inodes 파일의 고유 인덱스 값을 출력


    4. 명령어# touch

    「touch」은 0바이트 빈파일을 생성하거나 기존 파일의 시간을 변경하는 명령어

    ※ 명령어 사용 예시

    [root@]# touch [Name] ▷ 안쓰일것 같지만 의외로 사용하게 되는 명령어, 아무 옵션 없이 사용하면 0바이트 [Name]으로 파일이 생성됩니다.

    생성하려는 [Name]이 이미 있다면 파일을 생성 또는 변경한 시간을 현재 시스템(Date)시간 기준으로 변경을 합니다.
    참고사항 -d -t 같은 직접 날짜를 지정하는 옵션도 있지만 사용빈도가 거의 없습니다. 파일 생성 및 변경 시간은 내가 언제 작업을 했는지에 대한 증거자료 입니다. 관리자가 임의로 파일 시간을 변경할 일은 거의 없습니다.

    ▷ 테스트용 파일을 만들거나 NAS 스토리지 환경에서 쓰기(파일이 생성이 되는지)가 되는지등 간단한 테스트 할 때 좋습니다.


    5. 명령어# mkdir, rmdir

    「mkdir」 디렉터리(폴더)를 만드는 명령어. 「rmdir」은 디렉터리를 삭제하는 명령어

    ※ 명령어 사용 예시

    [root@]# mkdir [Name] ▷ [Name] 이름으로 디렉터리를 생성. 「# mkdir [Name1] [Name2]」 이렇게 하면 동시에 디렉터리를 생성할수도 있습니다.
    [root@]# mkdir -v [Name] ▷ [Name] 이름으로 디렉터리를 생성할때 메시지를 출력. 스크립트를 만들때 쓰면 좋습니다.
    [root@]# mkdir -m [권한] [Name] ▷ [Name] 이름으로 디렉터리를 생성할때 권한을 바로 지정할 수 있습니다. 옵션이 없으면 기본적으로 「755 = drwxr-xr-x」 으로 생성
    [root@]# mkdir -p [Name1/Name2] ▷ 하위디렉터리까지 같이 생성. 몇 단계까지 되는지는 모르겠지만 개인적으로 테스트시에는 9단계까지도 생성이 되었습니다.
    [root@]# rmdir [Name] ▷ 디렉터리를 삭제. 단 비어있는 상태의 폴더만 삭제합니다. 필자는 「rm」명령어를 주로 사용하다보니 디렉터리만 삭제하는 명령어를 잘 사용하지는 않습니다. 빈 디렉터리만 삭제를 하니 안정성에서는 좋음


    6. 명령어# rm

    「rm」 파일 또는 디렉터리(하위포함) 삭제하는 명령어

    ※ 명령어 사용 예시

    [root@]# rm [Name]

    = alias 설정에 의해 결과값이 같음

    [root@]# rm -i [Name]
    ▷ [Name] 파일을 삭제. 「# rm [Name1] [Name2]」 이렇게 하면 동시에 삭제 할 수도 있습니다. 디렉터리는 바로 삭제 불가능합니다. 옵션 필요

    -i 옵션은 삭제할때마다 사용자에게 물어봅니다. 참고로 「# alias」 설정에 기본으로 alias rm='rm -i'」 들어가있습니다. 실수를 줄이기 위해 사용하는 것을 권고 또는 「$HOME/.bashrc」 파일에서도 확인 가능
    [root@]# rm -f [Name] -f 옵션은 --force 약자로 파일이나 디렉터리를 강제로 삭제 . 그래서 삭제가 처리되더라도 별도의 메시지가 출력되지 않음 ※ 매우 위험한 옵션, 주의 필요
    [root@]# rm -r [Name] -r 옵션은 --recursive의 약자이며 [Name] 디렉터리를 삭제. 만약 하위에 디렉터리나 파일이 있으면 선택적으로 삭제를 할 수 있습니다. 하지만 -f 옵션을 포함하면 묻지 않고 모두 삭제합니다.
    [root@]# rm -v [Name] -v 옵션은 --verbose의 약자이며 지워지는 파일의 정보를 화면에 출력. 단일로 사용하는 경우는 없으며 -f 옵션과 같이 사용하는 경우가 많습니다.


    7. 명령어# mv

    「mv」 파일 또는 디렉터리를 이동하거나 이름을 변경하는 명령어

    ※ 명령어 사용 예시

    [root@]# mv [원본Name] [목적지Name]

    = alias 설정에 의해 결과값이 같음

    [root@]# mv -i [원본Name] [목적지Name]
    ▷ [원본Name]의 파일 또는 디렉터리를 [목적지Name]으로 이동하거나 이름을 변경

     -i 옵션은 동일한 [Name]이 있으면 덮어 쓸 건지 물어본다. 참고로 「# alias」 설정에 기본으로 alias mv='mv -i'」 들어가있습니다. 실수를 줄이기 위해 사용하는 것을 권고 또는 「$HOME/.bashrc」 파일에서도 확인 가능
    [root@]# mv -b [원본Name] [목적지Name] -b 옵션은 --backup의 약자로 이동할 경로에 동일한 이름이 있다면 기존파일 백업 [Name~] 생성 후 덮어쓰기, 사용빈도는 높지는 않습니다. 그이전에 덮어쓰려고 하는 파일을 미리 「# cp」 명령어로 복사 후 진행하는 경우가 많음
    [root@]# mv -f [원본Name] [목적지Name]  -f 옵션은 --force 약자로 파일이나 디렉터리를 강제로 덮어쓰기 . 그래서 처리되더라도 별도의 메시지가 출력되지 않음 ※ 매우 위험한 옵션, 주의 필요
    [root@]# mv -v [원본Name] [목적지Name]  -v 옵션은 --verbose의 약자이며 덮어쓰기 파일의 정보를 화면에 출력. 단일로 사용하는 경우는 없으며 -f 옵션과 같이 사용하는 경우가 많습니다.


    8. 명령어# cp

    「cp」 파일 또는 디렉터리를 지정된 경로에 복사하는 명령어

    ※ 명령어 사용 예시

    [root@]# cp [원본Name] [복사Name]

    = alias 설정에 의해 결과값이 같음

    [root@]# cp -i [원본Name] [복사Name]
    ▷ [원본Name]의 파일 또는 디렉터리를 [복사Name]으로 복사

     -i 옵션은 동일한 [Name]이 있으면 덮어 쓸 건지 물어본다. 참고로 「# alias」 설정에 기본으로 alias cp='cp -i'」 들어가있습니다. 실수를 줄이기 위해 사용하는 것을 권고 또는 「$HOME/.bashrc」 파일에서도 확인 가능
    [root@]# cp -a [원본Name] [복사Name] -a 옵션은 --archive의 약자로 파일 또는 디렉터리(하위 포함)를 복사할 때 소유자, 그룹, 권한, 시간 정보와 같은 속성까지 동일하게 복사
    [root@]# cp -r [-R] [원본Name] [복사Name]  -r -R옵션은 --recursive의 약자이며 [Name] 디렉터리(하위 포함) 복사
    [root@]# cp -p [원본Name] [복사Name] -p 옵션은 --preserve의 약자이며 원본 파일의 소유자, 그룹, 권한, 시간 정보를 그대로 보존하여 복사
    [root@]# cp -b [원본Name] [복사Name]  -b 옵션은 --backup의 약자로 복사할 경로에 동일한 이름이 있다면 기존파일 백업 [Name~] 생성 후 덮어쓰기, 사용빈도는 높지는 않습니다.
    [root@]# cp -f [원본Name] [복사Name]  -f 옵션은 --force 약자로 파일이나 디렉터리를 강제로 덮어쓰기 . 그래서 처리되더라도 별도의 메시지가 출력되지 않음 ※ 매우 위험한 옵션, 주의 필요
    [root@]# cp -v [원본Name] [복사Name]  -v 옵션은 --verbose의 약자이며 덮어쓰기 파일의 정보를 화면에 출력. 단일로 사용하는 경우는 없으며 -f 옵션과 같이 사용하는 경우가 많습니다.

     「CP」 옵션이 조금 많긴 합니다만 필자는 이 옵션을 수정한 파일을 덮어쓰기 하거나 원본 파일을 수정할 때 기존 원본파일을 백업하는 용도로만 이용합니다. 그래서 다른 옵션은 거의 사용하지 않고 오직 원본 파일의 속성을 그대로 보존하기 위해 「-arp」 옵션을 많이 사용합니다.


    계속 업데이트 예정

    생각보다 너무 길어질 것 같아서 일단 작성 및 검증한 곳까지만 먼저 업로드를 합니다.

    잘못된 내용이나 정보 공유는 환영 합니다.

     

    Designed by JB FACTORY