운영체제에서 사용자가 입력하는 명령어를 읽고 해석해서 운영체제가 이해 할 수 있도록 도와주는 명령어 해석기.
즉 운영체제의 커널과 사용자 사이를 이어주는 역할.
Linux에서의 쉘 종류는 다음과 같다.
1. Bourne Again Shell (bash)
: 본쉘 기반의 쉘. 리눅스의 표준쉘이다 (프롬프트 : #, 경로 : /bin/bash)
2. Boume Shell (sh)
: 유닉스7버전의 기본 쉘 (프롬프트 : $, 경로 : /bin/sh)
3. C Shell (csh)
: C언어 기반으로 개발된 쉘 (프롬프트 : %, 경로 : /bin/csh)
4. Korn Shell (ksh)
: 본쉘을 확장해서 만들어진 쉘. C쉘의 여러 기능이 추가 (프롬프트 : $, 경로 : /bin/ksh)
5. TENEX C Shell (tcsh)
: C쉘과 통합된 쉘 (프롬프트 : >, 경로 : /bin/tcsh)
운영체제의 쉘(Shell)을 이용하여 한줄씩 순차적으로 읽으면서 명령어들을 실행시키는 인터프리트(interpret) 방식의 컴파일되지 않은 프로그램.
쉘(Shell)에서 사용 할 수 있는 명령어들의 조합을 모아서 만든 배치(batch) 파일.
#!/bin/bash
로 시작파일이름.sh
' 이다#내용
으로 처리한다명령어 | 설명 | 예시 |
---|---|---|
clear | console에 있는 명령어를 모두 지운다 | |
ctrl + c | 프로세스 종료 | |
cat | 파일의 내용을 텍스트로 출력한다 | cat test.txt |
pwd | 현재위치의 디렉토리를 출력 | |
cd 경로명 | 현재 디렉토리 위치를 다른위치로 이동 | cd test |
cd / | 최상위 경로로 이동 | |
cd .. | 현재경로의 한칸 상위경로로 이동 | |
cd ~/ 경로명 | 어느경로에 있던 해당 경로에 direct로 이동 | cd ~/ test |
./ | 현재폴더의 위치를 의미 | |
ls | 현재 위치한 디렉토리에 있는 폴더와 파일 확인할 때 사용 | |
ls -al | 현재 위치한 디렉토리에 있는 폴더와 파일을 자세하게 확인 | |
ls --all | 숨겨진 파일을 볼 수 있다 (파일명앞에 . 이 붙어있다) | |
mkdir | 폴더를 생성 | mkdir user |
rm -r | 폴더를 삭제 | rm -r user |
touch | 파일을 생성 | touch test.txt |
rm | 파일을 삭제 | rm test.txt |
cp | 파일을 복사 | cp a.txt b.txt (a.txt파일을 b.txt라는 이름의 파일로 복사) |
mv | 파일을 다른 디렉토리 위치로 이동. 혹은 파일 이름을 변경할때 사용 | |
mv 변경전파일명 변경후 파일명 | 기존 파일의 이름을 변경 | mv b.txt c.txt (b.txt파일이 c.txt파일로 변경) |
mv 이동시킬파일명 폴더명 | 파일을 특정폴더로 이동 | mv b.txt user |
ln -s 파일명 바로가기파일명 | 바로가기 파일을 생성 | ln -s a.txt a-link.txt |
apt-cache search 파일명 | apt저장소목록에 특정파일이 있는지 조회 | apt -cache search tomcat |
apt list | grep 파일명 | apt 저장소목록을 |(파이프라인)을 타서 grep 명령어로 특정 파일명만 추려낸다 | apt list | grep tomcat |
apt update | apt 저장소 목록 최신화 업데이트 | |
apt install -y 파일명 | apt저장소 목록의 파일을 설치 | apt install -y tomcat9 |
apt remove 파일명 | 설정파일을 제외한 나머지를 지운다 | apt remove tomcat9 |
apt --purge remove 파일명 | 모든파일을 지운다 | apt --purge remove tomcat9 |
add-apt-repository PPA파일이름 | PPA 저장소파일 추가 | add-apt-repository ppa:rivergod/tomcat8.5 |
add-apt-repository --remove PPA파일이름 | 잘못된 버전의 PPA 저장소를 삭제 | add-apt-repository --remove ppa:rivergod/tomcat8.5 |
netstat 옵션명 | 네트워크 연결상태, 라우팅테이블, 인터페이스 상태를 보여준다 | netstat -nlpt (도메인주소를 숫자로, 대기중인 네트워크, PID 및 사용중인 프로그램명, TCP 프로토콜 출력) |
service --status-all | 등록된 서비스들의 목록을 볼 수 있다. [+] 는 실행중인서비스 [-]는 실행중이지 않은 서비스 | |
service 서비스명 start | 서비스를 실행한다 | service tomcat8 start |
service 서비스명 restart | 프로세스를 종료한경우 다시 서비스를 실행할때 사용 | service tomcat8 restart |
service 서비스명 stop | 서비스를 종료 (종료가 안되거나 서비스로 등록이 안되어있는 프로세스는 kill 명령어로 강제종료) | service tomcat8 stop |
systemctl list-unit-files | 실행중인 전체서비스 목록을 출력 | |
systemctl status 서비스명 | 서비스의 상태를 확인 | systemctl status tomcat8 |
systemctl stop 서비스명 | 서비스를 종료 (종료가 안되거나 서비스로 등록이 안되어있는 프로세스는 kill 명령어로 강제종료) | systemctl stop tomcat8 |
systemctl start 서비스명 | 서비스를 실행 | systemctl start tomcat8 |
systemctl restart 서비스명 | 프로세스를 종료한경우 다시 서비스를 실행할때 사용 | systemctl restart tomcat8 |
kill -l | 서비스를 강제종료를 할 수 있는 옵션들 출력 | |
ps -ef | 현재 실행중인 프로세스 전체 출력 | |
ps -ef | grep 서비스이름 | 특정 서비스의 프로세스 정보를 출력 | ps -ef | grep tomcat8 |
ps -ef | grep 서비스이름 | grep -v grep | 특정 서비스의 프로세스 정보 중 grep 명령어의 정보를 제외하고 출력 | ps -ef | grep tomcat8 | grep -v grep |
ps -ef | grep 서비스이름 | grep -v grep | awk '{print $번호}' | 특정 서비스의 프로세스 정보중 grep 명령어 정보를 제외하고 출력되는 정보를 배열단위로 끊어서 확인 | ps -ef | grep tomcat8 | grep -v grep | awk '{print $1}' ==> tomcat8이 출력된다 |
vim 파일명 | 일반모드 편집기능 활성화 | yy : 현재행 복사 p : 붙여넣기 ctrl+b : 위로 한 화면 스크롤 ctrl+f : 아래로 한 화면 스크롤 x : 현재커서의 문자삭제 $ : 행의 맨끝으로 이동 |
sudo passwd root | 최고관리자 root의 비밀번호를 설정 | |
chmod 소유자권한번호 그룹권한번호 그외사용자번호 파일명 | 파일명에 대한 권한을 소유자, 그룹, 그외사용자 별로 read, write, execute 권한을 덮어쓰기로 부여 ( r=4 w=2 x=1 -=0 ) | chmod 646 test.txt |
chmod u+(rwx중아무거나),g+(rwx중아무거나),o+(rwx중아무거나) 파일명 | 파일명에 대한 권한을 소유자(u), 그룹(g), 그외사용자(o) 별로 read, write, execute 권한을 추가로 부여 ( r=4 w=2 x=1 -=0 ) | chmod u+x,g+wx,o+x test.txt |
chown 소유자명:그룹명 파일명 | 그룹의 소유자를 변경 | chown root:ubuntu text.txt |
find / -name 파일명 | 최상위 경로인 / 부터 파일명의 위치를 찾는다 | find / -name tomcat8 |
tail -f 파일명 | 실시간(-f)으로 파일명의 마지막부분을 출력해서 로그파일의 최근 변경내역을 확인 | tail -f catalina.out |
tail -f 원래파일명 > 옮길파일명 | 표준출력의 방향을 원래파일명에서 옮길파일명으로 변경 | tail -f catalina.out > mylog.out |
nohup | 리눅스에서 프로세스를 실행한 터미널의 세션 연결이 끊어지더라도 지속적으로 동작하게 해주는 명령어 (뒤에 & 를 붙이면 백그라운드로 실행) | nohup java -jar *.jar & |
백그라운드에서 출력 종류에 따라 redirection을 나눌수있다 ( 0 : 표준입력 스트림, 1 : 표준출력 스트림, 2 : 표준오류 스트림 ) | nohup java -jar v1-0.0.1-SNAPSHOT.jar 1>log.out 2>err.out & | |
source | 강제로 적용시키는 명령어 | source ./. bashrc |
export | 환경변수를 설정하는 명령어 | |
tar | 파일을 압축하거나 풀때 사용하는 명령어 | tar -csf hello.tar a.txt b.txt |
cron | 자동 재시작 명령어 | |
echo | 표춘출력 모니터로 글자를 출력 | echo "안녕" |
timedatectl | 시간 관련 명령어 | timedatectl list-timezones | grep Seoul |
출처
- easyup 개발자를 위한 AWS DevOps 입문 강의