리눅스 용어 정리 (04.17~18)

유영·2023년 4월 18일
0

Linux

목록 보기
2/11

system 관련

shutdown : system 종료
ex) shutdown [옵션][시간 "메세지"]
halt : system 종료
poweroff : system 종료
reboot :system 재부팅
shutdown -r now : system 재부팅


디렉토리 관련

pwd :현재 자신이 위치한 디렉토리
cd : 디렉토리 이동
ls : 폴더내에서의 파일 및 폴더들을 표시
ex) ls [옵션][경로/파일명]
mkdir : 디렉토리 생성
ex) mkdir [옵션] 디렉토리명
rmdir : 디렉토리 삭제
ex) rmdir 경로


FILE 관련

touch : 파일크기가 0인 파일 생성시 사용
cp : 파일 복사(디렉토리 내부까지 복사하기 위해서는 cp -R 이라는 옵션을 붙인다.)
ex) cp [옵션] 원본(복사하기) 복사본(복사할 위치)
mv : 파일 이동
ex) mv [옵션] 이동전 이동후
rm : 파일 삭제 (디렉토리 삭제시 rm -R사용)
cat : 파일의 내용을 화면에 출력
ex) cat[옵션] 파일명
less : more 와 비슷
find : 특정파일 검색
grep : 특정 패턴을 이용해서 파일 검색
chmod : 특정파일 또는 디렉토리의 퍼미션 수정
chown : 파일이나 디렉토리의 소유자, 소유그룹 수정


network 관련

netstat : 네트워크 상태
nbstat : ip충돌발생시 찾기 위한 명령어
traceroute : 목적지 경로 검색 명령어


프로세스 관련

ps : 현재 실행되고 있는 프로세스 목록 출력
pstree : 프로세스의 정보를 트리 형식으로 출력
top : 리눅스 시스템의 운용상황을 실시간으로 전반적인 상황을 모니터링 하는 기능
kill : 특정 프로세스에게 특정 시그널을 보내는 명령어
killall : 특정 프로세스 모두 종료


계정 관련

useradd : 새로운 사용자계정 생성
password :비밀번호 설정
userdel : 계정 지우기
usermod : 사용자 계정 정보 수정


cat

명령 뒤에 파일명을 적는 것만으로
파일의 모든 내용을 표준 출력(standard output)에 출력할 수 있습니다.
cat은 concatenate의 약자로, 여러 파일들의 내용을 연결하여 출력시켜줍니다.
특정 파일의 내용을 간단하게 확인해보고자 할 때에 많이 사용됩니다.

cat [OPTION]... [FILE]...

OPTION
-n모든 라인 앞에 라인 번호 출력. (빈 라인도 번호 출력)
-b비어 있지 않은 라인에만 번호 출력.
-E라인의 마지막에 $ 기호 출력. (빈 라인도 $ 기호 출력)
-T탭 문자를 ^I로 바꿔서 출력.
-s두 번 이상 연속된 빈 라인(empty line) 출력 안함.
-v탭(TAB)과 줄바꿈(LFD)을 제외한 nonprinting 문자를 ^, M-를 사용하여 표시.
-e-vE와 결과 같음. 줄바꿈(LFD)을 포함한 nonprinting 문자 표시.
-t-vT와 결과 같음. 탭(TAB)을 포함한 nonprinting 문자 표시.
-A-vET와 같음. 탭(TAB), 줄바꿈(LFD)을 포함한 nonprinting 문자 표시.
  1. cat file1
    cat 명령 뒤에 파일 이름을 입력하면 그 파일의 내용을 출력합니다.

  2. cat file1 file2 file3
    여러 개의 파일을 전달하여 파일 내용을 연속해서 출력할 수 있습니다.

  3. cat -n file1 file2 file3
    cat 명령의 n 옵션을 사용하면 행 번호를 표시한다.

사용 예명령 옵션
파일 내용 출력cat FILE
파일 생성cat > FILE
라인마다 번호 출력cat -n FILE
라인 끝에 $ 문자 출력cat -E FILE
탭을 ^I 로 출력cat -T FILE
반복된 공백 라인 무시cat -s FILE
파일 복사, 합치기, 추가cat FILE > OUT
파일 사이에 내용 추가cat FILE1 - FILE2
파일 내용을 페이지 단위로 출력cat FILE
파일 내용 필터링cat FILE
모든 파일 내용 출력cat *
특정 확장자를 가진 파일 내용 출력cat *.txt

리눅스 cat 명령어로 파일 만들기
1. cat > file1 (내용을 입력하고 ctrl + d를 눌러 저장한다.)
리다이렉션 기호(>)를 사용하여 입력한 내용으로 새로운 파일을 만듭니다.
2. cat file1
입력한 내용이 파일에 저장된 것을 확인할 수 있습니다.
3. cat >> file1 (내용을 입력하고 ctrl + d를 눌러 저장한다.)
> 기호를 사용하면 기존에 있는 파일 내용을 지우고 저장하고
>> 기호를 사용하면 기존 파일 내용 뒤에 연속해서 기록합니다.

리눅스 cat 명령어로 파일 병합(연결)하기
1. cat file1 file2 > file3
cat 명령과 리다이렉션 기호로 여러 파일을 연결(병합)하여 하나의 파일을 만듭니다.
2. cat file1 > file4
하나의 파일을 전달하여 파일 복사 효과를 누릴 수 있습니다.

간단하게 짧은 문서를 출력하려면 cat
긴 출력 결과를 끊어서 보고 싶으면 more
긴 문서를 조금 더 꼼꼼하게 확인하고 싶으면 less
문서의 머리부분을 확인하고 싶으면 head
꼬리부분을 보고 싶거나 로그를 실시간으로 확인하고 싶으면 tail
편집하고 싶으면 vim


cd

cd는 change directory의 약자로, 다른 디렉토리로 이동할 때 사용하는 명령어입니다.
다시 이전의 디렉토리로 돌아가려면 cd ..을 입력하면 됩니다.
cd .. : 상위 디렉토리로 이동합니다. 예를 들어 현재 위치가 /user/jtaewu라면 /user로 이동합니다.
cd . : 현재 위치한 폴더로 이동합니다. 사실상 기능은 새로고침과 동일합니다.
cd - : 이전에 위치했던 폴더로 이동합니다. 윈도우의 뒤로 가기와 동일합니다.
cd / : ROOT 디렉토리로 이동합니다.
cd ~ : 홈 디렉토리로 이동합니다.


touch

touch는 본래 파일의 생성 날짜 및 시각을 수정할 때에 사용하는 명령어지만,
내용물이 비어있는 파일을 생성할 때에도 사용합니다.
내용물이 존재하는 파일을 생성할 때에는 vim이나 nano 등의 텍스트 편집기를 일반적으로 사용하지만,
텍스트 편집기의 종류가 다양하며, 내용이 많으므로 이에 대한 내용은 여기에서 언급하지 않겠습니다.
여기에서 pwd의 실행 결과를 hi.txt에 저장해봅시다.
어떤 명령어의 실행 결과를 파일 내에 저장할 때에는 >를 사용합니다.
아래와 같이 입력하면 아무 것도 뜨지 않는데,
리눅스에서 명령어를 입력했을 때 아무 것도 출력되지 않으면
이는 해당 명령어의 수행이 성공했음을 의미합니다.

touch test.dat
touch 명령 다음에 파일이름을 입력하면 그 파일의 타임스탬프를 현재시간으로 업데이트합니다.

stat test.dat
stat 명령을 이용하여 타임스탬프(atime, mtime, ctime) 정보를 확인할 수 있습니다.
atime은 접근시간, mtime은 수정시간, ctime은 변경시간을 나타냅니다.

touch 명령어 뒤에 입력한 파일이 없을 때는 새로운 빈 파일을 하나 생성합니다.
touch f1 f2 f3 f4 f5
한번에 여러 개의 빈 파일을 만들 수 있습니다.


df (disk free, 디스크 여유 공간 확인)

df 명령을 사용하면 리눅스 시스템 전체의 (마운트 된) 디스크 사용량을 확인할 수 있습니다.
파일시스템, 디스크 크기, 사용량, 여유공간, 사용률, 마운트지점 순으로 나타납니다.
USB메모리나 SD카드의 저장공간도 여기서 확인이 가능합니다.

df -h
-h 옵션을 사용하면 사람이 보기 좋게 메가(M), 기가(G) 단위로 디스크 공간을 확인할 수 있습니다.


du (disk usage, 디렉토리 디스크 사용량 확인)

df 명령어가 시스템 전체의 디스크 공간을 확인하는 명령어라면,
du 명령은 특정 디렉토리를 기준으로 디스크 사용량을 확인할 수 있습니다.

du -h
-h 옵션을 사용하여 디스크 사용량을 K, M, G 단위로 확인이 가능합니다.

디렉토리 이름을 지정하지 않으면 현재 디렉토리를 기준으로 디스크 사용량을 출력합니다.
디렉토리 안에 있는 서브 디렉토리의 디스크 사용량도 표시합니다.

DISK 용량 확인

df -h -- 디스크 파티션, 용량 정보 → 나오는 정보 : Size Used Avail Use% Mounted on
fdisk -l -- 하드디스크 확인
du -sk -- 현재 폴더의 사용량(kb)
du -sk /home -- /home 폴더의 사용량(kb)


pwd

pwd는 print working directory의 약자로, 현재 위치하고 있는 경로를 출력하는 명령어입니다.
리눅스에서의 경로는 디렉토리를 의미하므로, pwd를 입력하면 해당 명령어를 입력한 디렉토리를 출력합니다.

mkdir

mkdir은 make directory의 약자로, 현재 위치에서 새로운 디렉토리를 만들 때 사용합니다.
mkdir 만들어질디렉토리의이름의 형태로 사용하며,
여러 개의 디렉토리를 만들 때에는 만들어질 디렉토리의 이름을 공백으로 구분하여 나열합니다.

rmdir

rmdir은 remove directory의 약자로, 특정 디렉토리를 삭제할 때 사용합니다.
마찬가지로, 여러 개의 디렉토리를 삭제할 때에는 공백으로 디렉토리를 구분하여 명령어 다음에 나열하면 됩니다. 주의할 점은 rmdir로는 내용물이 비어있는 디렉토리만 삭제할 수 있다는 점입니다.
내용물이 존재하는 디렉토리를 삭제할 때에는 이후에 소개할 rm 명령어를 사용합니다.

mv

mv는 move의 약자로, 파일을 이동시킬 때와 파일의 이름을 변경할 때 사용합니다.
먼저 파일을 이동시킬 때에는 mv 이동대상파일 이동시키고자하는디렉토리의 형태로 아래와 같이 명령어를 입력해주면 됩니다. 파일의 이름을 변경하고자 할 때에는 mv 변경대상파일이름 변경될파일_이름의 형태로 명령어를 입력해줍니다.

cp

cp는 copy의 약자로, 파일을 다른 위치에 복사하고자 할 때에 사용합니다. 현재 directory1에 위치해 있는 hello.txt를 directory2로 이동시키려면 아래와 같이 명령어를 입력하면 됩니다. cp는 파일을 복제한 새로운 파일을 생성하는 것이므로, 원본 파일을 삭제하지 않습니다. 즉, directory1과 directory2에 동일한 내용을 가진 파일이 존재하게 됩니다.


cmdline : command line of the process

environ – environmental variables
fd – file descriptors
limits – contains information about the limits of the process
mounts – related information

Is

Is는 list의 약자로, 현재 위치한 디렉토리 내에 존재하는 모든 파일 및 하위 디렉토리의 목록을 출력해줍니다.
Is에는 다양한 옵션을 붙여 사용할 수 있는데, 대표적으로 -I과 -a가 많이 사용됩니다.
Is -I을 입력하면 각 파일 및 디렉토리의 세부 정보까지 출력할 수 있습니다.
이 때 출력되는 세부 정보는 권한, 소유자, 그룹, 용량, 생성 시각 등의 정보를 포함합니다.
또한, Is -a를 사용하면 숨김처리된 디렉토리들까지 목록 상에 조회할 수 있습니다.
참고로, 리눅스에서 파일명 앞에 .을 붙이면 해당 파일을 숨길 수 있습니다.
아래의 .hiddenFile은 숨겨진 파일 예시를 위해 생성한 텍스트 파일입니다.

여러 개의 옵션을 조합해서 사용할 수 있습니다.
옵션을 조합할 때에는 - 옆에 사용하고자 하는 옵션을 의미하는 알파벳을 나열해줍니다.
참고로, Is -a와 Is -aI의 결과를 보면 .과 ..을 확인할 수 있는데,
.은 현재 위치한 디렉토리, ..은 현재 위치한 디렉토리의 상위 디렉토리를 의미합니다.


proc

  • 리눅스 루트 디렉토리 바로 아래에 있는 폴더 ( /proc)
  • 일종의 가상 파일 시스템으로 동작중인 프로세스의 상태정보, 하드웨어 정보, 시스템정보 등 알 수 있다.
  • /proc엔 현재 실행중인 PID와 같은 이름의 폴더들이 생성된다.
  • ps라는 명령어는 이 폴더의 내용을 조회해서 보여 준다.

-l : 파일들을 나열할때 자세히 출력한다.
-a : 경로안의 모든 파일을 나열한다.(숨김파일도 포함)
-R : 위치한 디렉토리 하부 디렉토리의 파일까지 모두 출력한다.
-h : 파일크기를 해석파기 편하게 출력한다.
-r : 출력 결과를 내림차순으로 정렬한다.
-t : 출력 결과를 파일이 수정된 시간을 기준으로 정렬한다.

ls 명령어의 모든 옵션들
-A : .와 ..을 제외하고 목록을 출력합니다.
-b : 알파벳 순으로 목록을 출력합니다.
-B : ~로 끝나는 백업파일을 제외하고 목록을 출력합니다.
-c : 마지막으로 변경된 시간을 목록을 출력합니다.
-C : 파일이나 디렉토리를 열로 목록을 출력합니다.
-d : 지정 경로에 있는 최상위 디렉토리의 목록만 출력합니다.
-D : emacs를 위한 출력행태를 생성합니다.
-f : 정렬하지 않고 출력합니다. 컬러을 해제합니다.
-F : 실행파일은 *, 경로 /, 소켓=, 링크 @ 등의 지시자로 출력합니다.
-g : 사용자 권한을 출력하지 않는다.
-G : -l 과 같이 사용시 그룹권한을 출력하지 않는다.
-h : K, M, G 단위를 사용하여 파일 크기를 사람이 보기 좋게 표시합니다.
-H : 심볼릭 링크의 실제 참조하는 목록을 출력합니다.
-i : 파일의 인덱스 값을 출력합니다.
-I (대문자 i) : 지정 파티션을 제외하고 출력합니다.
-k : 용량을 킬로바이트로 출력합니다.
-l : 자세한 내용을 출력합니다. 내용 > 권한, 파일 수, 소유자, 그룹, 파일크기, 수정일자, 파일이름
-lu : mtime (수정 시간)을 atime(접근 시간)을 출력합니다. (default는 수정 시간)
-lc : mtime (수정 시간)을 ctime(변경 시간)을 출력합니다. (default는 수정 시간)
-L : 심볼릭 링크의 정보를 출력할때 원본 파일의 정보를 출력합니다.
-m : 콤마로 구분하여 출력합니다.
-n : 사용자와 그룹권한을 숫자로 표시합니다.
-i : 그룹권한을 출력하지 않는다.
-p : 디렉토리에 /를 추가합니다.
-q : 그래픽이 아닌 문자 대신에 ?를 출력합니다.
-Q : 파일, 디렉토리를 쌍따옴표 안에 출력합니다.
-r : 반대로 출력합니다. (default는 알파벳 순서)
-R : 하위 디렉토리까지 출력합니다.
-s : 블록에 할당된 크기를 출력합니다.
-S : 파일 크기 순으로 정렬하여 출력합니다.
-t : 파일이 수정된 시간 기준으로 정렬하여 출력합니다.
-T : 8대신 COLS을 지정하여 출력합니다.
-u : -lt와 같이 사용시 생성 시간 기준으로 출력하고 -l과 사용시 생성시간 출력이름순으로 출력합니다.
-U : 컬러을 유지하면서 정렬하지 않고 출력합니다.
-w : width 길이를 설정하여 출력합니다.
-x : 상세출력되는 리스트를 파일이름으로 하나의 라인에 출력합니다.
-X : 확장자의 알파벳순으로 정렬하여 출력합니다.
-Z : SELinux 보안 모듈을 출력합니다.

ps

  • 프로세스의 현재 상태를 출력한다.

  • 유닉스와 리눅스 모두에서 명령어와 옵션이 같음

  • 경로 : /bin/ps

  • 문법 : ps[옵션]

  • 옵션 : 전체 프로세스와 관련된 옵션
    -A : 모든 프로세스를 출력한다.
    -N : -A 옵션과 비슷하나 ps 프로세스를 제외하고 출력한다.
    -a : 세션 리더 및 터미널에 속하지 않는 프로세스를 제외하고 출력한다.
    -d : 세션 리더를 제외한 모든 프로세스를 출력한다.
    -e : 커널 프로세스를 제외한 모든 프로세스를 출력한다.

  • 예제
    # ps -ef | grep [프로세스명]


grep 명령어

리눅스에서 grep 명령어는 특정 파일에서 지정한 문자열이나 정규표현식을 포함한 행을 출력해주는 명령어입니다. 특히 tail이나 ls 등 다양한 명령어와 조합하여 응용되는 경우가 많아서 이 grep명령어는 리눅스에서 능숙하게 사용할 줄 알아야 하는 기본 명령어입니다.

grep [옵션][패턴][파일명]

# 특정 파일에서 'error' 문자열 찾기
grep 'error' 파일명

# 여러개의 파일에서 'error' 문자열 찾기
grep 'error' 파일명1 파일명2

# 현재 디렉토리내에 있는 모든 파일에서 'error' 문자열 찾기
grep 'error' *

# 특정 확장자를 가진 모든 파일에서 'error' 문자열 찾기
grep 'error' *.log

정규표현식으로 찾기

# 특정 파일에서 문자열이 포함된 행을 찾는다.
grep '^[ab]' 파일명 

# 특정 파일에서 a로 시작하는 모든 단어를 찾는다.
grep 'a*' 파일명 

# 특정 파일에서 a로 시작하고 z로 끝나는 5자리 단어를 찾는다.
grep 'a...z' 파일명 

# 특정 파일에서 a,b,c로 시작하는 단어를 모두 찾는다.
grep [a-c] 파일명

# 특정 파일에서 apple 또는 Apple로 시작하는 단어를 모두 찾는다.
grep [aA]pple 파일명 

# 특정 파일에서 a나 b로 시작되는 모든 행을 찾는다.
grep '^[ab]' 파일명 

# 특정 파일에서 apple로 시작되고 0나 9의 숫자로 끝나로 시작되는 모든 행을 찾는다.
grep 'apple'[0-9] 파일명

logrotate

리눅스에서 서버를 운영하시다 보면 로그를 보고 서버의 상태 혹은 장애를 대비합니다 그래서 대부분의 모든로그는 남기도록 설정하는데 이러한 로그들은 시간이 점점 지나면서 엄청난 크기로 커지게 됩니다.

엄청난 크기로 커지기 전에 로그들을 잘관리하도록 설정하는 기능이 logrotate 입니다.


<apache 로그파일 관리하기>

웹서비스를 운영하다보면, 로그파일 용량이 계속 늘어나 디스크 용량을 가득 채워서 서버에 장애가 발생한는 경우가 있다.

이런 경우는 log rotate를 설정하여, 주기적으로 로그파일을 순환하고, 오래된 파일은 삭제를 해 줘야 한다.

1. logrotate를 이용한 logfile 관리
리눅스의 기본 패키지인 logrotate 패키지를 이용해서 apache의 로그를 주기적으로 순환시키고 오래된 로그는 삭제 하는 설정이다.
/etc/logrotate.d 디렉토리에 아래와 같이 apache log를 관리 하도록 설정 파일을 생성한다.

[root@localhost logrotate.d]# cat /etc/logrotate.d/apache

/usr/local/apache/logs/*_log {
weekly
rotate 8
missingok
create 0600 root root
postrotate
/bin/kill -HUP `cat /usr/local/apache/logs/httpd.pid 2>/dev/null` 2> /dev/null || true
endscript
}

위 설정은 일주일 단위로 로그파일의 이름을 변경하여 순환시키며, 8주간 보관하고 8주가 지난 로그파일은 삭제 하도록 하는 설정이다.
설정을 변경하여 필요한 기간만큼 보관하고 자동으로 삭제가 가능하다.

2. apache rotatelogs 명령을 이용한 logfile 관리
apache 설정파일 내에서 rotatelogs 명령을 이용하여 로그파일을 관리 하는 설정이다.
rotatelogs는 아파치에 포함된 프로그램이며, httpd.conf 파일의 로그 설정이나 httpd-vhosts.conf 파일의 가상호스트 설정에서
아래와 같은 형태로 설정해서 apache log파일을 rotate 할 수 있다.

CustomLog “|/usr/local/apache/bin/rotatelogs logs/add4s.com-access_log 86400” common
-> /usr/local/apache/logs/add4s.com-access_log 파일을 만든다.
순환 기간(86400초)이 지나면, /usr/local/apache/logs/add4s.com-access_log.nnnn 의 형태로 로그파일을 순환시킨다.(nnnn은로그를 시작한 시스템시간이다 )

CustomLog “|/usr/local/apache/bin/rotatelogs logs/add4s.com-access_log 50M” common
-> 이 설정은 로그파일 크기가 50 메가바이트가 될때마다순환한다.

ErrorLog “|/usr/local/apache/bin/rotatelogs logs/add4s.com-errorlog.%y-%m-%d-%H%M_%S 50M”
-> 이 설정은 에러로그 파일 크기가 50 메가바이트가 될때마다 add4s.com-error_log.yy-mm-dd-HH_MM_SS와 같은 형태로 오류로그 파일을 만들어서 순환시킨다.

apache rotatelogs 설정은 주기적으로 새로운 로그파일을 생성하기는 하지만,
시간이 지난 로그파일을 삭제하지는 않기 때문에,
주기적인 삭제가 필요한 경우는 cron 설정으로 오래된파일을 주기적으로 찾아서 삭제하는 스크립트가 별도로 필요하다.


리눅스 터미널로 mysql 접속하고 데이터베이스 확인하기
/usr/local/mysql/bin/mysql -u root -p
위의 명령어로 접속하면 된다.

show databases -> 기존에 만들어진 전체 데이터베이스 목록 조회
use 데이터베이스 이름 -> 해당 데이터베이스 확인
show tables -> 데이터베이스에 존재하는 테이블 목록 확인
desc from 테이블 이름 -> 데이터베이스에 있는 특정 테이블 구조 확인 (describe)

0개의 댓글