Linux 명령어

김호준·2021년 12월 7일
0

리눅스 명령어 정리

1. pwd

  • pwd는 Print Work Directory의 약자로 현재 작업중인 디렉토리 절대경로를 보여준다.
옵션설명
-L
--logical
심볼릭을 포함하더라도 pwd 환경 변수를 사용
-P
--physical
심볼릭 정보를 무시하고 출력

2. ls

  • List Segments의 약자로 파일과 디렉토리의 모든 정보를 제공한다.
옵션설명
-a숨김파일 포함 파일목록 조회
-l지정한 디렉토리의 내용을 자세하게 출력
-d지정된 디렉토리의 정보 출력
-n파일 및 디렉토리 정보 출력시 UID, GID를 사용
-R하위 경로와 그 안에 있는 모든 파일들도 같이 나열
-F파일 형식을 알리는 문자를 각 파일 뒤에 추가
ls *.exe확장자가 exe인 목록 조회

3. ll

  • ll 이란 ls 명령어에 -l 옵션을 준 형태이다.
  • ls -l 이란 long 옵션으로 상세히 출력하라는 의미이다.

4. su

  • 현재 계정에서 로그아웃하지 않고 다른계정으로 전환하는 명령어로 root계정의 환경변수를 가져오지 않고 root 계정으로 전환한다. 즉, 현 계정의 환경변수를 그대로 사용하게된다.
  • 사용법 : su [변경하고자 하는 사용자 ID] 이때, 아이디를 입력하지 않는다면 su root 와 동일하게 동작한다.

5. sudo

  • 현재 계정에서 단순히 root 권한만을 빌리는 것으로 하나의 명령에 대하여 일시적으로 root 권한을 사용하는 것이며, 실행 전 현재 사용자의 비밀번호를 입력해야 한다.

6. cd

  • 디렉토리를 이동하는 명령어
항목설명
cd [디렉토리 경로]이동하려는 디렉토리로 이동
cd.현재 디렉토리
cd ..한 단계 상위 디렉토리로 이동
cd /최상위 디렉토리로 이동
cd $ 변수명변수에 저장된 경로로 이동
cd ~
cd $HOME
cd
사용자 홈 디렉토리로 이동
cd ~계정명입력한 사용자의 홈 디렉토리로 이동
cd -이전 경로로 이동

7. cat

  • cat은 concatenate 또는 catenate에서 따온 이름으로 파일의 내용을 출력하거나 여러 파일을 연결해주는 명령어이다.
  • $ cat [옵션][파일명] 으로 사용한다.
1. 일반적인 사용법은 다음과 같다. ( 한 개 이상의 파일도 출력할 수 있다. ) 
  ex) $ cat file
  ex) $ cat file1 file2 file3
  
2. 파일을 여러개 합쳐 하나의 큰 파일을 만들 때 사용된다. 
   여기서 주의할 점은 만들어지는 새로운 파일은 기존의 파일이 아니라 새로운 파일
  이어야 한다.
  ex) $ cat file1 file2 > newFile
  
3. 기존의 파일에 입력한 파일의 내용을 덧붙여준다. 즉, file1의 내용이 기존 파일
  file2의 맨 끝에 붙어서 새로운 파일이 생성된다.
  ex) $ cat file1 >> file2
  
4. 새로운 파일을 만들 때 사용한다. 해당 명령어를 사용한 이후에 표준입력으로 
  키보드에 입력한 내용을 파일에 저장하게 된다. 입력이 끝나면 CTRL + d 를
  입력하여 새로운 내용이 저장된 파일을 생성한다.
  ex) $ cat > new_file
옵션설명
-b줄번호를 화면 왼쪽에 나타낸다. 비어있는 행은 제외한다.
-n줄번호를 화면 왼쪽에 나타낸다. 비어있는 행도 포함한다.
-e제어 문자를 ^ 형태로 출력하면서 각 행의 끝에 $를 추가한다.
-s연속되는 2개이상의 빈 행을 한행으로 출력한다.
-vtab과 행 바꿈 문자를 제외한 제어 문자를 ^ 형태로 출력한다.
-E행마다 끝에 $ 문자를 출력한다.
-T탭(tab) 문자를 출력한다.
-A-vET 옵션을 사용한 것과 같은 효과를 본다.

8. mv

  • 파일이나 디렉토리를 이동시키거나 파일의 이름을 바꾸는 등 파일처리를 할 때 사용하는 명령어이다.
  • mv [option]   [첫번째 인자값]   [두번째 인자값] 처럼 사용한다.
  • 한개의 파일뿐만 아니라 여러개의 파일을 한번의 명령어로 이동시킬 수 있으며, * 을 사용하여 디렉토리 안에 있는 파일들을 한번에 이동시킬 수 도 있다.
현재 디렉토리에 있는 test.txt 파일을 디렉토리 내부의 new_folder 디렉토리로 이동
ex) mv test.txt new_folder

현재 디렉토리에 있는 test.txt 파일을 new_test.txt라는 파일로 이름 바꾸기
ex) mv test.txt new_test.txt

/user/jtaewu 경로의 test.txt 파일을 /user/jtaewu 디렉토리로 이동
ex) mv test.txt /user/jtaewu/new_folder

/user/jtaewu 경로 test.txt 파일을 /user/guest 디렉토리에 new.txt로 바꾸어 이동
ex) mv /user/jtaewu/test.txt /user/guest/new.txt
옵션설명
-i기본적으로 .bashrc에 alias되어 있는 옵션으로, 이동할 위치에 동일한 파일이 있을 경우 사용자에게 확인
-u이동할 파일이 이동할 위치에 있는 파일보다 최근 파일일 경우에만 이동한다.
-b대상 파일이 이미 있어 지워지는 것을 대비해 백업파일을 생성한다.
-r대상 파일이 이미 있어도 사용자에게 어떻게 처리할지를 묻지 않는다.
-v파일을 옮기는 과정을 자세하게 보여준다.
-s-b 옵션을 이용하여 백업할 경우 백업파일에서 사용할 파일 이름의 꼬리 문자를 지정한다.

9. mkdir

  • mkdir은 make Directory의 약자로 새로운 디렉토리를 만들 때 사용하는 리눅스 명령어이다.
  • 경로를 지정하지 않으면 현재 경로를 Default로 설정한다.
  • 생성할 디렉토리를 여러개 나열하여 한번의 명령어로 복수의 디렉토리를 생성할 수 있다.
현재 디렉토리에 dir1 디렉토리를 만든다.
ex) mkdir dir1

디렉토리를 생성할 때 상위(부모) 디렉토리가 없으면 함께 만든다. 
ex) mkdir -p dir1/dir2

/home/user/위치에 new_folder 디렉토리 생성
ex) mkdir /home/user/new_folder

디렉토리를 생성할 때 권한까지 지정한다.
ex) mkdir -m 700 dir5
옵션설명
mkdir -m디렉토리의 접근 권한을 설정한다. (Default: 755)
mkdir -p여러 덱스의 하위 디렉토리를 생성시에 사용한다.
mkdir -v디렉토리 생성시 메세지를 출력한다.
mkdir -zSELinux 보안 컨텍스트 설정을 한다. (직접 확인 필요)
mkdir --help도움말을 출력한다.
mkdir --versionmkdir 정보를 출력한다.

10. cp

  • copy의 약자로 디렉토리나 파일을 복사하는 명령어이다. 이때 대상 파일이나 대상 디렉토리가 없다면 새로운 파일이나 디렉토리를 만들어 복사한다.
  • 만약 파일이나 디렉토리가 있다면 복사하려는 파일이나 디렉토리가 이미 존재하는 파일이나 디렉토리에 덮어 씌여진다.
  • 사용법
    • 파일복사 : cp [option]  [원본파일]  [대상파일]
    • 파일을 다른 디렉토리에 복사 : cp [option]  [원본파일]  [목적지]
    • 디렉토리 복사 : cp [option]  [원본 디렉토리]  [대상 디렉토리]
원본 파일을 원본 파일이 존재하는 위치에 대상파일 이름으로 복사한다.
( 같은 경로에 hello2 이름으로 복제된다. )
$ cp hello hello2

원본 파일을 목적지 디렉토리 원본 파일과 동일한 이름으로 복사한다.
$ cp hello ../copy
 
 원본 디렉토리를 원하는 경로에 복사한다. 이때 원본 디렉토리의 이름을 대상 디렉토리에
복사할 때 이름은 같다.
$ cp -r copy ./example/

대상 파일과 같은 이름의 파일을 백업파일으로 생성하려 하면 ~을 붙혀진다.
$ cp -bf hello hello
옵션설명
-i복사대상 파일이 있을 경우 사용자에게 복사에 대한 실행여부를 묻는다.
-f복사대상 파일이 있을 경우, 사용자에게 확인 없이 강제로 복사한다.
-r, -R디렉토리를 복사할 경우 하위 디렉토리 파일 모두 복사한다.
-v복사 진행 상태를 출력한다.
-d복사대상 파일이 심볼릭(기호, 상징) 파일이면, 심볼릭 정보를 그대로 유지한 상태로 복사한다.
-p원본 파일의 소유주, 그룹, 권한, 시간정보를 보존하여 복사한다
-a원본 파일의 속성, 링크, 정보들을 그대로 유지하면서 복사한다.

11. chmod

  • 리눅스의 파일이나 디렉토리의 권한을 변경하는 명령어이다.
  • 기본적으로 $ chmod [옵션][모드][파일명] 으로 사용한다.
옵션설명
-v모든 파일에 대해 모드가 적용되는 진단(diagnostic) 메시지 출력.
-f에러 메시지 출력하지 않음.
-c기존 파일 모드가 변경되는 경우만 진단(diagnostic) 메시지 출력.
-R지정한 모드를 파일과 디렉토리에 대해 재귀적으로(recursively) 적용.
  • ls -l 명령어를 이용해 파일이나 디렉토리를 자세하게 살펴보면 다음과 같은 권한을 확인할 수 있다.
  • -rw-r--r-- 에서 맨 앞의 - 는 file인지 directory인지 구분하는 symbol로 디렉토리인 경우 d라는 symbol로 표기된다.
  • 뒤의 rw-r--r--로 표시되는 부분이 권한을 나타내는데 3개씩 끊어서 맨 앞의 3자리가 user 즉, 소유자(owner)의 권한이고 중간 3자리는 group에 대한 권한 마지막 3자리는 others에 대한 권한이다.
  • r은 read로 파일에 저장된 데이터를 읽을 수 있는 권한이고, w는 write로 파일에 데이터를 쓸 수 있는 권한이며 마지막으로 x는 execute로 파일을 실행할 수 있는 권한이다.
  • 이 권한을 8진수로 표현하면 rwx 권한을 모두 갖는 경우 7이 된다. 각 권한을 숫자값으로 표현하면 r=4, w=2, x=1이기 때문에 r + w + x = 7이 되는 것이다.
- test.txt 파일에 대해 user의 모든 권한을 부여하고 group과 others는 모든 권한 제외
  ex) chmod 700 test.txt
  
- test.txt 파일에 대해 실행 권한 추가부여
  ex) chmod +x test.txt
  
- test.txt 파일에 대해 group에 write 권한 부여
  ex) chmod g+w test.txt
  
- test.txt 파일에 대해 others의 모든 권한 박탈
  ex) chmod o-rwx test.txt

12. chown

  • Linux에서 파일이나 디렉토리는 Owner, Group에 속해있는데 chown은 해당 Owner 또는 Group을 변경하는 명령어로 아래와 같이 사용한다.
  • $ chown [옵션][User:Group] [파일 또는 디렉토리]
  • 위와 같이 ls -l 명령어를 이용했을 때, Owner는 김호준이며 Group은 197121로 되어있는 것을 확인할 수 있다.
옵션설명
-c변경된 파일만 자세하게 보여준다
-f변경되지 않은 파일에 대해서 오류 메세지를 보여주지 않는다.
-v작업 상태를 자세하게 보여준다.
-R경로와 그 하위 파일들을 모두 변경한다.
- Owner를 root로 변경하는 예제 ( root로 병경하기 때문에 sudo를 사용해야 한다.)
  ex) $ sudo chown root file1.txt
  
- owner를 홍길동으로 Group을 한국인으로 변경하는 예제 
  ex) $ chown 홍길동:한국인 file1.txt

13. netstat

  • netstat은 네트워크 관련한 정보를 보는 유틸리티로 현재 리슨중인 포트, 모든 내외부 / 연결 정보 등을 확인할 수 있는 명령어이다.
  • $ netstat [옵션] 으로 사용한다.
1. TCP 프로토콜 연결 상태를 확인
ex) $ netstat -at

2. UDP 프로토콜 연결 상태를 확인
ex) $ netstat -au

3. 모든 네트워크에서 연결을 대기중인(LISTEN) 프로그램 중 PID와 프로그램 명과
  도메인 네임을 출력한다.
ex) $ netstat -nap

4. 네트워크 서비스를 제공할 때 유용한 옵션으로 열려있는 포트 번호와 데몬, 그리고 
  그 포트를 사용하는 프로그램에 대한 정보를 상세히 점검할 수 있다. 
ex) $ netstat -atp
옵션설명
-a모든 네트워크 상태 출력[-all]
-c현재 실행 명령을 매 초마다 실행[-continous]
-e확장된 정보 출력
-g멀티캐스트에 대한 그룹별 정보 출력
-i인터페이스별 통계값 출력
-l대기중인 네트워크
-n도메인 주소를 숫자로 출력
-o연결 대기시간 출력
-pPID(프로세스 ID)와 사용중인 프로그램명 출력
-r라우팅 테이블 출력
-s프로토콜 요약 정보 출력
-tTCP 프로토콜만 출력
-uUDP 프로토콜만 출력
-v버전 출력
-wRAW 프로토콜만 출력
-A프로토콜별로 출력
-M마스커레이딩 정보 출력

14. ifconfig

  • 네트워크 인터페이스를 설정하거나 확인하는 명령어로 IP주소, 서브넷마스크, MAC주소, 네트워크 상태 등을 확인, 설정할 수 있다.

  • 인수가 없는 ifconfig 명령은 활성화된 인터페이스 세부사항을 아래와 같이 요소들을 포함하여 표기한다.

    요소설명
    enp0s3네트워크 인터페이스
    flags네트워크 카드의 상태 표시
    mtu네트워크 인터페이스의 최대 전송 단위(Maximum Transfer Unit)
    inet네트워크 인터페이스에 할당된 IP 주소
    netmask네트워크 인터페이스에 할당된 넷마스크 주소
    broadcast네트워크 인터페이스에 할당된 브로드캐스트 주소
    inet6네트워크 인터페이스에 할당된 IPv6 주소
    prefixlenIP 주소에서 서브 넷 마스크로 사용될 비트 수
    scopeidIPv6의 범위. LOOPBACK / LINKLOCAL / SITELOCAL / COMPATv4 / GLOBAL
    ether네트워크 인터페이스의 하드웨어 주소
    RX packets받은 패킷 정보
    TX packets보낸 패킷 정보
    collision충돌된 패킷 수
    Interrupt네트워크 인터페이스가 사용하는 인터럽트 번호
  • 자주 쓰이는 ifconfig 예제

1. 모든 네트워크 인터페이스 구성 확인
  ex) $ ifconfig -a
  
2. 해당 인터페이스 정보만 확인
  ex) $ ifconfig [인터페이스 이름]

3. 해당 인터페이스 비활성화 처리
  ex) $ ifconfig [인터페이스 이름] down
  
4. 해당 인터페이스 활성화 처리 (UP, BROADCAST, RUNNING MULTICAST)
  ex) $ ifconfig [인터페이스 이름] up
      $ ifconfig [인터페이스 이름] running
      
5. 해당 인터페이스 IP 변경하기
  ex) $ ifconfig [인터페이스 이름] IP
  
6. 넷마스크 변경
  ex) $ ifconfig [인터페이스 이름] netmask [넷마스크 변경값]
  
7. 브로드캐스트 주소 변경
  ex) $ ifconfig [인터페이스 이름] broadcast [브로드캐스트 변경값]

15. vi

  • 리눅스에서 일반적으로 사용하는 화면 편집기로 윈도우의 메모장과 같은 기능이다. 하지만 명령이 매우 단순하여 빠르게 편집할 수 있다.

vi의 세가지 모드

모드설명
명령모드  vi를 실행시키면 기본적으로 나타나는 모드로 커서의 이동, 수정, 삭제, 복사 붙이기, 탐색 등을 한다. 입력모드 전환키인 i,a,o,I,A,O 등을 입력하면 입력모드로 전환되고 명령모드로 다시 전환하려면 Esc 키를 누르면 된다.
입력모드  입력모드 이외에도 편집모드, input mode, insert mode 등으로 불리며, 글자를 입력하는 문서를 만드는 모드이다.
   명령 모드에서 입력 전환키를 눌러서 전환하면 화면 아래에 '-- INSERT --' 라고 표시된다.
콜론모드   명령 모드에서 ' : ' 키를 입력했을 때 화면 맨 아랫줄에서 명령을 수행하는 모드로 저장, 종료, 탐색, 치환 및 vi 환경 설정 등의 역할을 하는 모드이다.

파일 만들기 & 편집하기

  • vi new.txt 를 입력하면 해당 경로에 해당 파일명이 존재하면 해당 파일을 열어서 보여주고, 존재하지 않을 경우 파일명과 동일한 이름을 갖는 새 파일을 생성하여 오픈한다.
  • 위의 상태에서 입력모드로 전환하는 명령어(i,a,o)를 이용하여 글자를 입력할 수 있다. 이 상태를 '입력모드'라고 한다. 입력모드에서 Esc를 눌러 '명령모드'로 다시 돌아올 수 있다.

편집기 종료

:q 를 입력하면 vi 편집기가 종료하는 명령어이다.
:q! 는 변경된 내용이 있더라도 저장하지 않고 무조건 종료되는 명령어이다.
:wq 는 변경된 내용을 저장하고 종료하는 명령어이다.

입력모드 전환 명령어

단축키설명
i현재 커서의 위치부터 입력
I
[ shift + i ]
현재 커서 줄의 맨 앞에서부터 입력
a현재 커서의 위치 다음 칸부터 입력
A
[ shift + a ]
현재 커서 줄의 맨 마지막부터 입력
o현재 커서의 다음 줄에 입력
O
[ shift + o ]
현재 커서의 이전 줄에 입력

커서 이동 명령어

  • 커서이동은 키보드의 화살표를 이용하여 수행할 수도 있다.
  • 해당 명령어들은 키보드에 화살표나 page down, page up 버튼이 없었을 때 사용했던 명령어들로 화살표는 사용하지만 페이지 업다운은 Ctrl+f와 Ctrl+b 를 사용하는 습관을 들이자
명령어설명
h커서를 왼쪽으로 한 칸 이동 ( ⬅와 같은 의미 )
j커서를 아래로 한 칸 이동 ( ⬇ 와 같은 의미 )
k커서를 위로 한 칸 이동 ( ⬆ 와 같은 의미 )
l커서를 오른쪽으로 한 칸 이동 ( ➡ 와 같은 의미 )
w다음 단어의 처음으로 이동
^줄의 첫 문자로 이동
$줄의 맨 끝으로 이동 ( :$ 는 줄의 제일 끝으로 이동 )
0첫 번째 열로 이동 ( :0은 줄의 제일 처음으로 이동 )
G
( Shift + G )
제일 끝 행으로 이동
gg
( g + g )
제일 첫 행으로 이동
nGn번째 행으로 이동
:숫자 + Entern번째 행으로 이동
H(Head)
( Shift + h )
화면의 첫 줄로 이동
M(Middle)
( Shift + m )
화면의 중간으로 이동
L(Last)
( Shift + l )
화면의 끝 줄로 이동
[Ctrl] + b이전 화면으로 이동 (Page Up과 같다)
[Ctrl] + d반 정도 화면 이동 (스크롤 중간 정도 내린거 같은것)
[Ctrl] + f다음 화면으로 이동 (Page Down과 같다)
n%입력한 n 퍼센트에 해당하는 줄로 이동

삭제, 복사, 붙여넣기 명령어

명령어설명
x현재 커서가 위치한 문자를 삭제 (del과 같은 의미)
dw단어 삭제
dd현재 커서의 행 삭제
숫자 dd현재 커서부터 숫자만큼의 행 삭제
yy현재 커서가 있는 행을 복사
숫자 yy현재 커서부터 숫자만큼의 행을 복사
p복사한 내용을 현재 행 이후에 붙여넣기
p
( shift + p )
복사한 내용을 현재 행 이전에 붙여넣기

되돌리기 및 검색 명령어

명령어설명
u직전에 내린 명령을 취소
/문자열 + enter문자열에 입력한 문자와 같은 문자열을 현재 커서가 위치한 곳부터 아래 방향으로 검색
/문자열 + enter문자열에 입력한 문자와 같은 문자열을 뒤에서부터 검색 (즉 위 방향으로 검색!)
n찾은 문자 중 다음 문자로 이동
N
(shift + n)
n이 아래로 검색을 계속 내려가는 거라면 N은 위로 검색을 계속 진행하는 것

16. tail

  • $ tail [옵션][파일명] 으로 사용한다.
  • tail은 파일의 내용을 뒤에서부터 출력해주는 명령어이다. 기본적으로 tail은 입력파일의 마지막 10줄을 출력하는데 로그파일의 모니터링 용도로 주로 사용된다.
명령어설명
-c K
--bytes=K
뒤에서부터 입력한 숫자(K) bytes 만큼의 문자를 출력합니다. 해당 옵션과 함께 +K 처럼 +를 사용하면 앞에서 K번째의 문자부터 끝까지 출력 한다.
-n K
--lines=K
뒤에서부터 K개의 줄을 출력한다. 해당 옵션과 함께 +K 처럼 +를 사용하면 앞에서 K번째 줄부터 끝까지 출력한다. 기본값은 10으로 해당 옵션을 주지 않으면 하위 10개의 줄을 출력한다.
-f
--follow[={name | descriptor}]
계속해서 파일의 상태를 감시하며 파일에 내용이 뒤에 추가될 때 마다 새로 추가된 내용을 보여준다. 기본값은 descriptor이다.
-q
--quiet
--silent
파일의 헤더를 출력하지 않는다 즉, 상단에 파일 이름을 출력하지 않는 것이다.
-v
--verbose
파일의 헤더를 출력한다. 즉, 상단에 파일 이름을 같이 출력한다.
-F--follow=name --retry 의 옵션과 같다.
tail 명령어 실행 도중 파일명이 변경되었더라도 tail 명령어를 실행했을 때 사용한 파일명의 파일 내용을 계속 출력한다.
-max-unchanged-stats=N-f or --follow=name 과 함께 쓰이며 파일이 변경되지 않았더라도 N번 후에 파일을 다시 확인한다.
-pid=PID-f or -follow 와 함께 쓰이며, 옵션으로 준 PID가 종료되면 해당 tail 옵션도 종료한다. 특정 프로세스의 로그를 남길 때 유용하다.
retry파일에 접근할 수 없는 상황이 되었을 때 파일을 읽으려고 꾸준하게 시도하는 옵션으로 --follow=name 과 함께 쓰인다.
-s
--sleep-interval=N
-f or --follow와 함께 쓰이며 해당 파일을 확인할 때 N초만큼 sleep 상태였다가 파일을 확인한다.
--pid=PID 와 함께 쓰이면 적어도 N 초 간격에 한번으로 해당 프로세스를 확인한다.
기본적인 (Default 10줄) 사용법으로 파일 2개 이상 가능
ex) $ tail test.txt
ex) $ tail test.txt test2.txt

n 옵션 예제로 하위 n개의 줄을 출력
ex) $ tail -n 3 test.txt

n(+) 옵션 예제로 앞에서부터 n개의 줄을 출력
ex) $ tail -n +3 test.txt

17. systemctl

  • 시스템을 제어하는 명령어로 기본적으로 아래와 같이 사용된다.
  • # systemctl [명령][서비스명] 에서 서비스명을 입력할 때 [서비스명].service를 모두 입력해야 하는 경우도 있다.
명령어설명
start서비스를 시작
stop서비스 중지
status서비스 상태 확인 (서비스가 구동중인지 확인)
restart서비스 재시작 (중지 -> 시작) 으로 보통 변경한 설정 후에 많이 사용된다.
reload서비스를 중지하지 않고 설정값을 반영 (서비스가 중지되면 안되는 경우에 사용)
enableenable (시스템이 재부팅하면 자동으로 서비스 실행하도록 등록)
disableenable한 서비스를 해제
  • systemctl 명령어 사용 예제
- 모든 서비스 목록 확인하기
  ex) # systemctl list-units --type service [--all]
  
- 모든 서비스의 현재 활성화 상태 보기
  ex) # systemctl list-unit-files --type service
  
- 설정들을 데몬에 즉시 반영하기 위한 명령어
  ex) # systemctl daemon-reload
  
- 서비스와 관련된 프로세스까지 모두 종료
  ex) # systemctl kill [서비스명]
  
- 서비스를 disable 했는데도 계속 보이면 리셋시키는 명령어
  ex # systemctl reset-failed

18. forever

  • node.js는 한번 오류가 생기면 프로그램 자체가 에러가 발생되며 종료되는 특징이 있어서 조금만 실수하면 서버가 죽을 수 있는 위험이 있는데 forever 명령어를 사용하여 에러가 발생 시 서버가 죽지 않고 자동으로 다시 실행시켜주는 node.js의 무중단 관리도구이다.
  • $ forever [명령어][대상] 의 형태로 사용한다.
1. $ forever start [파일]
  - Node.js를 실행시키는 명령어로 forever start를 사용한다. 
  ex) $ sudo forever start index.js

2. $ forever list
  - $ sudo forever list를 이용하여 forever를 통해 실행되어 동작중인 백그라운드 
   데몬의 정보를 확인할 수 있다. 
   
3. $ forever stop
  - $ sudo forever stop [프로세스 식별 번호] 를 이용하여 forever으로 실행한
   프로세스를 종료할 수 있다. 즉 서버를 정지시키는 기능이다.

19. kill

  • kill 명령어는 이름 때문에 프로세스를 강제로 종료시키는 명령어로 오해하기 쉽지만 실제로는 프로세스에 시그널(signal)을 보내는 명령어이다.

  • 실제로 어떤 그널을 보낼지 지정하지 않으면 기본적으로 15번 SIGTERM 시그널을 보내게 되는데 해당 SIGTERM의 기본동작이 프로그램 종료이기 때문이다.

  • $ kill -l 사용하면 아래와 같이 시그널의 숫자와 이름이 출력된다.

  • 기본적으로 $ kill -[보낼 시그널] PID 로 사용하는데 지정된 PID를 갖는 프로세스에 지정된 시그널이 전달되는 구조이다.

20. rm

  • rm은 remove의 약자로 파일이나 디렉토리를 삭제할 때 사용하는 명령어이다.
  • rm으로 지운 파일은 복구하기 어렵기 때문에 두세번 확인하는 습관을 들이는 것이 필요하다 !
  • $ rm [옵션] [파일 또는 디렉토리]
옵션설명
-f강제로 파일이나 디렉토리를 삭제하고 대상이 없는 경우에는 메세지를 출력하지 않는다.
-r디렉토리 내부의 모든 내용을 삭제
-d비어있는 디렉토리들만 제거
-i매번 삭제할때마다 사용자에게 삭제할것인지 묻는다.
-l3개의 이상의 파일을 삭제하거나 디렉토리 내부가 비어있지 않을때만 삭제할것인지 묻는다.
-v삭제되는 대상의 정보를 출력
  • 경로를 지정하지 않으면 현 위치를 Default로 지정된다.
  • 비어있지 않은 디렉토리는 -r 옵션 없이 삭제할 수 없다.
- test.txt 파일 삭제
   ex) rm test.txt ne_folder

- /home/user/test.txt 삭제
   ex) rm /home/user/test.txt

- new_folder 디렉토리 삭제
   ex) rm -r new_folder

- 여러개의 파일 삭제 
   rm [삭제 대상1] [삭제 대상2] [삭제 대상3] .....
   ex) rm test1.txt test2.txt test3.txt

- 현재 위치의 모든 파일 제거
   ex) rm -rf *

- 현재 위치의 .txt로 끝나는 모든 파일 제거
   rm *.txt

21. jps

  • JVM 위에서 실행되고 있는 프로세스들을 보여주는 명령어이다.
  • $ jps [options] [hostid] 을 기본으로 사용된다.
옵션설명
-q클래스 이름, JAR 파일 이름, main 메서드에 전달된 인자를 모두 생략하고 JVM 아이디(보통 OS 프로세스 아이디와 동일. 반드시 그럴 필요는 없음)만 표시한다.
-mmain 메서드에 전달된 인자를 표시한다.
-l애플리케이션 main 클래스의 전체 패키지 이름 또는 JAR 파일의 전체 경로를 표시한다.
-vJVM에 전달된 인자를 표시한다.
-V클래스 이름, JAR 파일 이름, main 메서드에 전달된 인자를 모두 생략한다.

22. firewall-cmd

  • 부팅시 기본적으로 firewalld 방화벽 서비스가 자동 시작되도록 설정되어있으며, firewall-cmd 명령을 통해 방화벽을 확인하고 설정하는 명령을 수행할 수 있다.
1. firewall 상태 확인 (실행중은 running, 실행중이 아닐 때 not running을 출력)
  ex) firewall-cmd --state
  
2. 방화벽 다시 로드
  ex) firewall-cmd --reload
  
3. 존(Zone) 출력하기
  3-1. 존(Zone) 목록을 출력
  ex) firewall-cmd --get-zones
  
  3-2. 기본 존을 출력
  ex) firwall-cmd --get-default-zone
  
  3.3. 활성화된 존을 출력
  ex) firewall-cmd --get-active-zones
  
4. 사용 가능한 서비스 및 포트 출력
  ex) firewall-cmd --list-all
  
5. 서비스 / 포트 추가 및 제거
  5-1. ftp 서비스 추가
    ex) firewall-cmd --add-service=ftp
  5-2. ftp 서비스 제거
    ex) firewall-cmd --remove-service=ftp
  5-3. 21 tcp 포트 추가
    ex) firewall-cmd --add-port=21/tcp

23. du

  • du는 Disk Usage를 의미하며, 저장된 디렉토리의 디스크 사용량을 표시하는 명령어이다.
  • $ du [옵션] [파일] [디렉토리]
  • 참고로 디스크 사용량은 df 명령어로 확인할 수 있다.
    ex) $ df -h
옵션설명
-a디렉토리 말고도 모든 파일에 대한 정보를 출력
-k결과 값을 KB 단위로 출력(기본값)
-d몇 단계 하위 디렉토리까지 출력할지 설정
-m결과 값을 MB 단위로 출력
-h사용자가 이해하기 쉬운 용량의 단위(KB,MB,GB)를 표시(1M를 1,048,576단위로 계산)
-H사용자가 이해하기 쉬운 용량의 단위(KB,MB,GB)를 표시(1M를 1,000,000단위로 계산)
-ii노드의 사용정보를 표시함
-l하드 링크의 용량을 모두 계산함
-s사용량의 총 합계만 출력 함
-S
(shift + s)
하위 디렉토리를 합치지 않고, 각각을 나누어서 계산하며 지정된 디렉토리 내의 파일과 모든 하위 디렉토리의 용량, 내용까지 볼 수 있음.
-T각 파일시스템들이 사용하고 있는 파일시스템 종류를 추가로 표시해 줌

24. echo

  • $ echo [옵션][문자열]
  • 지정한 문자열을 출력하는 명령어로 문자열과 개행문자를 덧붙여 표준출력으로 출력하는 명령어이다.
옵션설명
-n마지막에 따라오는 개행문자 (newLine) 문자를 출력하지 않음
-e문자열에서 역슬래시 (\) 와 조합되는 이스케이프 문자를 인용부호로 묶어 인식
  • 이스케이프 문자 종류 및 내용
    • 이스케이프 문자는 모니터나 프린터의 속성 등을 제어하기 위해 장치에 보내는 특수 문자열을 의미한다.
    • 이스케이프 문자들은 옵션 -e 와 함께 사용한다.
이스케이프 문자설명
\a경고음 소리 출력
\b백스페이스
\c마지막 개행문자를 출력하지 않음
\f폼 피드형식으로 출력
\n개행 문자 출력
\r개리지 리턴
\t수평 탭
\v수직 탭
\\역슬래시
\nnnASC|| Code 가 nnn(8진수)인 문자
profile
Go-getter Developer

0개의 댓글