15. 쉘의 특성

 

 

 

 

1) 리다이렉션

2) 파이프

3) 쉘 자체의 기능

4) 변수

5) 메타 캐릭터

6) 히스토리

7) 엘리어스

8) 환경 파일

 

 

 

 

 


 

 

 

 

 

* TERM

# export TERM=vt100

 

 

 

* LANG($HOME/.bashrc)

# export LANG=ko_KR.UTF-8

 

 

 

* PATH($HOME/.bash_profile)

# export PATH=$PATH:/root/bin

 

 

 

* HISTTIMEFORMAT(/etc/profile)

# export HISTTIMEFORMAT="%F %T "

 

 

 

* HOME, PWD, LOGNAME, USER, UID

 

 

 

 

 


 

 

 

 

 

메타 캐릭터(Shell Metacharacter)

'' "" `` \ ;

 

 

 

 

명령어 히스토리(Command History)

HISTFILE=512

HISTFILE=$HOME/.bash_history

HISTFILESIZE=512

HISTTIMEFORMAT="%F %T "

 

 

 

 

엘리어스(Alilas)

# alias cp='cp -i'

# alias

# unalias cp

 

 

 

 

환경 파일(Environment File(s))

/etc/profile

$HOME/.bash_profile

$HOME/.bashrc

 

 

 

 


 

 

 

 

 

16. 프로세스 관리

 

 

 

 

 

프로세스 정보(/proc/PID/*)

PID, PPID, Control Terminal

프로세스 관리1

프로세스 실행

fg) # ls

bg) # ls &

 

 

 

 

bash# gedit

-----------+ +----->

| |

| |

| |

+----> gedit +-+

 

 

 

 

-----------+----------->

|

|

|

+----> gedit

 

 

 

 

 

 

[실무예] gedit & : 백그라운드로 프로세스를 실행하는 경우

 

* 시간이 오래 걸리는 프로그램 실행시(EX: /root/bin/backup.sh &)

* GUI 환경을 사용하는 프로그램(EX: nm-connection-editor &)

프로세스 확인

# ps aux | grep rsyslogd

# ps -ef | grep rsyslogd

프로세스 종료

# kill -1|-2|-9|-15 PID

[참고] killall CMD, pkill CMD

# kill PID PID

# killall httpd

# pkill httpd

프로세스 관리2(잡(Job) 관리)

잡 실행

fg) # ls

bg) # ls &

잡 확인

# jobs

# fg %1

# bg %1

<CTRL + Z>

잡 종료

# kill %1

 

 

 

 

 

프로세스 모니터링

 

 

top - 17:51:27 up 1 day, 8 min, 4 users, load average: 0.12, 0.16, 0.10

Tasks: 2 total, 0 running, 2 sleeping, 0 stopped, 0 zombie

Cpu(s): 7.4%us, 1.5%sy, 0.0%ni, 90.9%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%st

Mem: 515340k total, 500336k used, 15004k free, 63108k buffers

Swap: 1052248k total, 0k used, 1052248k free, 255872k cached 

 

 

 

# top

# top -u user01

1) 정열기능: cPu, Mem

2) 첫번째 줄:

* uptime 출력 내용: 최소 300일에 한번씩은 서버를 재부팅한다.

* 1분/5분/15분 부하측정치 (나누기) CPU 개수/Core 개수 >= 1

= 0.05 (나누기) 4 >= 1

3) 두번째 줄:

* 좀비 프로세스 검색 방법

# ps -elf | awk '$2 == "Z" {print $0}'

# kill -9 PID

4) 세번째 줄:

* %us(usr), %sy(sys), %id(idle), %wa(wait)

%us + %sy >= 80% (그럼 CPU 증설 고려)

5) 네번째/다섯번 줄:

* total/free

 

 

 

[실무 예] 서버 리소스 모니터링 툴 - CPU/MEM/DISK/NET

* CPU/MEM : top/(X)htop

* DISK : iotop

* Network : (X)ntop

 

 

lsof CMD

# lsof

# lsof /tmp

# lsof -c sshd

# lsof -i

pmap CMD

# pmap PID

pstree CMD

# pstree

# pstree -alup PID

nice/renice CMD

# nice -(-20~19) CMD

# renice (-20~20) PID

 

 

 

[실무예] 백업 스크립트/데이터 수집 스크립트 실행시

# nice -10 /root/bin/backup.sh &

 

 

 

[실무예] CPU 많이 점유하는 프로세스가 존재하는 경우

# renice 10 PID

 

 

 


 

 

 

17. 원격접속 & 파일전송

 

sCMD(ssh, scp, sftp)

 

ssh CMD

# ssh IP

# ssh IP CMD

scp CMD

# scp source destination

# scp [-r] file1 172.16.6.249:/test

# scp [-r] 172.16.6.249:/test/file1 /test

sftp CMD

 

 

 

[실무예] public key authentication

ServerA --> ServerB

# ssh-keygen -t rsa

# ssh-copy-id -i ~/.ssh/id_rsa.pub root@ServerB

# ssh ServerB

 

 

 

 

 

 

 

 

FTP(vsftpd) 관련 패키지 설치

# yum install ftp vsftpd

# systemctl start vsftpd

 

 

 

 


 

 

 

 

[Q&A] HISTTIMEFORMAT 변수에 대해서

-------------------------------------------------------------------

HISTTIMEFORMAT 변수를 /etc/profile에 정의하는 경우

* /etc/profile 파일은 모든 사용자가 로그인할 때 읽혀지는(실행되는) 내용을 담고 있다.

* 따라서, 변수를 /etc/profile에 정의한 경우 새로 로그인하여 변경된 내용을 적용한다.

* 변수를 /etc/profile 정의한 후 바로 확인할 수도 있는데, 이런 경우에는 다음과 같은 형식을 사용한다.

. /etc/profile (source /etc/profile)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90

+ Recent posts