명령 설명 ex
echo 출력하고자 하는 변수를 출력할 때 사용하는 명령어이다. 파이썬의 print와 같은 명령어이다. echo $b
pwd 현재 디렉토리를 확인하는 명령어이다. $ pwd
whoami 접속한 사용자가 누구인지 확인하는 명령어이다. $ whoami
mv 파일의 이름을 바꾸거나 파일을 다른 디렉토리로 이동하는 명령어이다. mv 기존파일명 새로운파일명
chown 파일이나 디렉토리의 소유자를 변경하는 명령어이다. 소유자와 파일에 관련된 권한 정보는 ls -l 명령어로 확인할 수 있다. chown 그룹:소유자
su 접속 유저를 바꾸는 명령어 su - 유저이름
접속 유저를 root 유저로 바꾸자. $ su -
whatis 명령어의 간단한 설명을 확인할 수 있다. $ whatis mkdir
man 명령어의 메뉴얼을 확인할 수 있다.
메뉴얼을 확인하고는 q를 눌러 메뉴얼 화면에서 빠져나와야 한다.
$ man mkdir
cd Change Directory 명령어로 디렉토리를 이동하는 명령어이다. $ cd .., $cd /home
ls 현재 디렉토리에 있는 폴더와 파일을 확인하는 명령어
-l 옵션: 폴더, 파일들의 정보를 자세히 출력한다.
-d 옵션: 디렉토리를 검색하는 옵션
$ ls -l *.txt
mkdir 현재 디렉토리에 새로운 디렉토리를 생성하는 명령어이다.
-p 옵션: 디렉토리를 만들면서 한번에 하위 디렉토리를 생성하는 옵션
mkdir -p /test01/test02/test03
touch 파일의 용량이 0인 파일을 생성하는 명령어이다.
여러 파일을 한 번에 생성할 수 있는데 각 파일은 공백(화이트 스페이스)로 구분한다.
$ touch a.txt b.txt c.txt e.txt f.txt
rm 파일이나 디렉토리를 삭제하는 명령어이다.
리눅스는 휴지통이 있지만 명령어로 삭제할 때는 파일이 바로 삭제되기 때문에 복구할 수 없다.
-r 옵션: 현재 디렉토리 밑에 있는 모든 파일과 디렉토리를 삭제한다.
-f 옵션: 삭제 여부를 물어보지 않고 삭제한다.
-rf 옵션: 현재 디렉토리 밑에 있는 파일과 디렉토리를 삭제 여부를 뭍지 않고 삭제한다.
$touch bbb.txt
$rm bbb.txt
rmdir 디렉토리를 삭제하는 명령어이다. $rmdir ddd
alias 자주 수행하는 명령어들을 쉽게 사용할 수 있도록 설정하는 명령어이다.
alias 사용자명령어=”리눅스 명령어”
$ alias ll='ls -alF'
unalias alias 명령을 삭제한다. $ unalias ll
cat 파일의 내용을 화면에 출력하는 명령어이다. $ cat emp.txt
명령어 >> 파일 redirection 화면에 출력되는 결과를 파일로 저장하는 명령어이다.
기존에 같은 파일의 이름이 없으면 파일을 생성하고 있으면 기존 파일 뒤에 덧붙인다.
$ cat emp.txt >> emp2.txt
명령어 > 파일 파일을 생성하는데 기존에 같은 이름의 파일이 있으면 그냥 덮어쓴다. $ cat > test.txt
현재 터미널 입력을 파일로 생성한다.
more 문서의 내용을 화면에 출력할 때 페이지 단위로 볼 수 있는 명령어이다. 문서 내 이동
Space: 전진키
b: 후진키
f: 다음 페이지
more emp2.txt
head 문서의 상위 몇 줄을 출력하는 명령어이다. $ head -20 jobs.txt
tail 문서 하위 몇 줄을 출력하는 명령어이다. $ tail -10 jobs.txt
wc 파일 안의 단어의 개수 또는 라인수를 출력하는 명령어이다.
-l: 라인 수만 출력한다.
-w: 단어의 개수만 출력한다.
-c: 철자의 개수만 출력한다.
$ wc jobs.txt
순서대로 라인 수, 단어의 개수, 철자의 개수를 의미한다.
grep ‘단어’ 파일명 파일 안에 포함된 특정 단어나 구문을 검색하는 명령어이다.
-i: 대소문자를 구분하지 않고 검색한다.
$ grep 'SCOTT' emp.txt
emp.txt에서 SCOTT이라는 단어가 포함된 행을 출력한다.
명령어 | 명령어 pipe 명령어. | 로 표현하며 앞의 명령어와 뒤의 명령어를 연결하여 사용할 때 사용한다. `$ ls -l
sort 데이터를 특정 컬럼을 기준으로 정렬하는 명령어이다.
-k: 내림차순 정렬
-rk: 오름차순 정렬
-n: 숫자를 정렬할 때 사용하는 옵션이다.
$ sort -nk 6 emp.txt
awk 특정 컬럼을 출력하고자 할 때 사용하는 명령어이다.
awk 조건 컬럼선택 대상파일
예제1. emp.txt에서 직업만 출력하자. $ awk '{print $3}' emp.txt
3번 컬럼이 SALESMAN 이면 출력 awk '$3=="SALESMAN" {print $2, $3}' emp.txt
$n 컬럼, $0은 모든 컬럼을 의미한다.
출력은 ‘{print 컬럼번호컬럼번호}’로 출력한다.
uniq 중복된 라인을 제거하는 명령어이다. 결과에서 중복을 제거해서 출력하자.
`$ awk ‘{print $3}’ emp.txt
diff 파일1 파일2 두 파일간의 차이점을 찾아서 알려주는 명령어이다. $ diff emp.txt emp2.txt
find 검색하고자 하는 파일을 찾을 때 사용하는 명령어이다. $ find /root -name 'emp.txt' -print
cp 파일을 복사하는 명령어이다. $ cp emp.txt emp400.txt
tar tar은 여러 파일을 하나로 합쳐주는 명령어이다. 압축을 하려면 -z 옵션을 사용해야 한다.
-c: 여러 개의 파일을 하나로 만드는 옵션
-v: 압축되는 과정을 출력하라는 옵션
-f: 생성되는 파일명을 지정
-x: 묶어있는 파일을 풀라는 옵션
-C: 압축이 풀릴 위치를 지정하는 옵션
-z: 실제 파일 크기를 압축하는 옵션
tar cvf 압축파일명 압축파일대상
tar xvf 압축파일명 압축을 해제할 위치
sed sed 명령어는 검색 뿐만 아니라 내용을 변경할 수 있다. 반면 grep 명령어는 파일의 특정 내용을 검색하는 기능만 가진다. sed ‘s/기존데이터/변경데이터’ 파일명

[Linux] ls, ps, find, grep, awk 명령

파일, 디렉토리의 크기

ls 옵션

  • -h, --human-readable : with -l and -s, print sizes like 1K 234M 2G etc.
1
ls -lh /home

파일, 디렉토리 전체 날짜

1
2
3
4
5
6
7
8
9
 ls --time-style=long-iso -al             
total 156
dr-xr-x--- 12 root root 4096 2022-05-06 13:22 .
drwxr-xr-x 18 root root 4096 2022-04-01 14:02 ..
-rw------- 1 root root 1201 2021-11-19 22:38 anaconda-ks.cfg
drwx------ 3 root root 4096 2022-03-31 12:01 .ansible
-rw-r--r-- 1 root root 804 2022-02-03 10:50 authorized_keys
-rw------- 1 root root 28346 2022-05-06 13:22 .bash_history
-rw-r--r-- 1 root root 18 2021-03-15 04:35 .bash_logout

오늘 생성한 파일

1
2
3
#  ls -al --time-style=+%D | grep `date +%D`
dr-xr-x--- 12 root root 4096 05/06/22 .
-rw------- 1 root root 28428 05/06/22 .bash_history

ps 명령

p는 사용자의 프로세스 PID, 명령어 등을 알 수 있다.

ps 명령어 출력 항목

이름 설명
USER (BSD)
UID (System V)
프로세스 소유자의 이름
PID 프로세스의 식별 번호
PPID 부모 프로세스의 PID
%CPU CPU 사용 비율의 추정치 (BSD)
%MEM Memory 사용 비율의 추정치(BSD)
VSZ K 단위 또는 페이지 단위의 가상 메모리 사용량
RSS 실제 메모리 사용량
TTY 프로세스와 연결된 터미널
S (System V)
STAT (BSD)
현재 프로세스의 상태 코드
TIME 총 CPU 사용 시간
COMMAND 프로세스의 실행 명령행
STIME 프로세스가 시작된 시간 혹은 날짜
C (System V)
CP (BSD)
짧은 기간 동안의 CPU 사용률
F 플래그
PRI 실제 실행 우선순위
NI nice 우선순위 번호

ps 명령 옵션:

옵션 설명
-A 모든 프로세스를 출력
a (BSD) 터미널과 연관된 프로세스를 출력, x 옵션과 같이 사용하여 모든 프로세스를 출력할 때 사용
-a 세션 리더를 제외하고 데몬 프로세스처럼 터미널에 종속되지 않은 모든 프로세스를 출력
-e 커널 프로세스를 제외한 모든 프로세스를 출력
-f 출력을 풀 포맷으로 표기 (유닉스 스타일). UID, PID , PPID 등이 함께 표시
-l(System V)
l (BSD)
출력을 긴 포맷으로 표기. 프로세스의 정보를 길게 보여주는 옵션으로 우선순위와 관련된 PRI 값과 NI 값을 확인
-o 출력 포맷을 지정
-M 64비트 프로세스들을 출력
-m 프로세스뿐만 아니라 커널 스레드도 출력
-p 특정 PID를 지정하여 출력
-r 현재 실행 중인 프로세스 출력
u (BSD) 프로세스의 소유자를 기준으로 출력
-u [사용자] 특정 사용자의 프로세스 정보를 출력, 사용자를 지정하지 않는다면 현재 사용자 기준으로 출력
x (BSD) 데몬 프로세스처럼 터미널에 종속되지 않은 프로세스를 출력
-x 로그인 상태에 있는 동안 아직 완료되지 않은 프로세스를 출력.
*유닉스 시스템은 사용자가 로그아웃한 뒤에도 임의의 프로세서가 계속 동작 가능 -> 해당 프로세서는 자신이 실행시킨 쉘이 없어도 계속 자신의 일을 수행하는 데 이 프로세스는 해당 옵션 없이는 확인이 불가능

모든 프로세스

프로세스 정보를 컬럼 UID PID PPID C STIME TTY TIME CMD 를 표시한다.

  • System V: -ef
  • BSD : aux

System V 계열 옵션을 사용한 모든 프로세스 보기

1
2
3
4
5
6
$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Mar18 ? 00:00:10 /sbin/init
root 2 1 0 Mar18 ? 00:00:00 /init
root 8 2 0 Mar18 ? 00:00:00 plan9 --control-socket 7 --log-level 4 --server-fd 8 --pipe-fd 1
0 --log-truncate

BSD 계열 옵션을 사용한 모든 프로세스 보기

1
2
3
4
5
6
:~$ ps aux | more
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 22184 13372 ? Ss Mar18 0:10 /sbin/init
root 2 0.0 0.0 2776 1928 ? Sl Mar18 0:00 /init
root 8 0.0 0.0 2776 132 ? Sl Mar18 0:00 plan9 --control-socket 7 --log-level 4 --server-f
d 8 --pipe-fd 10 --log-truncate

프로세스의 긴 정보

  • -el : 모든 프로세스를 긴 정보 형식으로 출력: 한 F, S, PRI, NI 등 출력.
1
2
3
4
5
6
7
~$ ps -el |more
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1 0 0 80 0 - 5546 - ? 00:00:10 systemd
5 S 0 2 1 0 80 0 - 694 - ? 00:00:00 init-systemd(Ub
0 S 0 8 2 0 80 0 - 694 - ? 00:00:00 init
4 S 0 50 1 0 79 -1 - 26934 - ? 00:00:06 systemd-journal
4 S 0 76 1 0 80 0 - 6106 - ? 00:00:23 systemd-udevd

tty 정보

ps -t [tty 명] : 해당 tty의 프로세스 출력

tty는 로그인 사용자 사용하는 시스템 터미널의 번호이다. 보통 로그인시 tty 에 접속되어 로그인 쉘이 가동되어 터미널에 접속하게 되고 가상의 pseudo terminal 번호를 사용한다.

다음은 pts 3번에 접속한 결과

1
2
$ tty
/dev/pts/3

해당 3번 터미널의 프로세스를 출력

1
2
3
4
$ ps -t 3
PID TTY TIME CMD
517366 pts/3 00:00:00 bash
543401 pts/3 00:00:00 ps

PID

ps -p PID : 해당 PID의 프로세스 정보를 출력

1
2
3
4
5
6
7
$ ps -p 517366
PID TTY TIME CMD
517366 pts/3 00:00:00 bash

$ ps -p 1
PID TTY TIME CMD
1 ? 00:00:10 systemd

사용자 아이디

`ps -u [사용자명]: 사용자 아이디에 해당하는 프로세스 정보를 출력

1
2
3
4
5
6
7
8
9
10
$ ps -u root
PID TTY TIME CMD
1 ? 00:00:10 systemd
2 ? 00:00:00 init-systemd(Ub
8 ? 00:00:00 init
50 ? 00:00:06 systemd-journal
76 ? 00:00:23 systemd-udevd
146 ? 00:00:00 cron
154 ? 00:00:01 systemd-logind
157 ? 00:00:02 wsl-pro-service

Filtering

grep, awk, cut 등 명령과 조합해 사용

grep

grep : 특정 문자열 찾는 명령어

1
2
3
4
[ grep  주요 옵션 ]
-i 대소문자 구분하지않고 검색
-n 줄 번호를 함께 출력
-x 패턴과 단어 전체가 일치하는 라인 출력

특정 파일내에서 특정 단어 찾기

1
grep "찾을 문자열"  FileName

ps 명령에서 특정 문자열 찾기

1
ps -ef |grep python

BSD 형식의 ps 명령 결과에서 찾기

1
ps aux | grep python

grep 명령어는 로그에서 특정 문자열로 검색할때 자주 사용하기도함

단어의 대소문자 구분없이 단어찾기

1
grep -i  "찾을 문자열"  FileName

몇번째 줄에 단어가 포함되어 있는지 찾기

1
grep -n "찾을 문자열" FileName

cut 명령령

AWK

1
ps -u qkboo -f | grep python | awk '{print $2, $9}'

파일 이름, 크기만 나오게 awk 사용

1
ls -lh / | awk -v OFS='\t' '{print $5, $9}