실무에서 자주 사용하는 리눅스 기본 명령어 모음 [공사중]
- ◈『OS』/Command
- 2023. 2. 27.
제가 실무 운영을 하면서 자주 사용하는 리눅스 명령어를 나열하려고 합니다. 보시면 리눅스/유닉스 공부를 조금 해보셨다면 에이.. 다 아는 명령어인데라고 하실 텐데, 네 맞습니다. 누구나 다 아는 기본적인 명령어입니다. 명령어와 약간의 옵션을 혼합해서 사용하면 간단한 실무 업무는 초보 관리자라도 운영을 하실 수 있을 겁니다. 저도 시스템 관리 운영을 하고 있지만 간혹 같은 계열(유지보수)에서 일하시는 분들 중에 기본적인 명령어도 몰라서 물어보시는 분이 있다고.. 명령어를 자세히 보면 약자로 쓰이는 경우가 많습니다. 파일을 이동「# 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」 옵션을 많이 사용합니다.
계속 업데이트 예정
생각보다 너무 길어질 것 같아서 일단 작성 및 검증한 곳까지만 먼저 업로드를 합니다.
잘못된 내용이나 정보 공유는 환영 합니다.