리눅스(Linux)
https://www.redhat.com/ko/topics/linux/what-is-linux
Linux(리눅스)란?
Linux는 OS의 기본 구성 요소인 커널과 함께 번들로 제공되는 툴, 애플리케이션, 서비스로 구성되는 소스 코드가 공개된 오픈소스 소프트웨어 운영 시스템을 뜻합니다.
www.redhat.com
리눅스는 오픈소스 운영 체제(OS)이다. 운영체제는 CPU, 메모리, 스토리지처럼 시스템의 하드웨어와 리소스를 직접 관리하는 소프트웨어이다. 서버에 리눅스를 설치하면 해당 OS가 서버의 하드웨어 자원을 관리하고 사용하는 역할을 한다.
우리는 커맨드라인을 통해 컴퓨터에 직접 액세스할 수 있다. 사용자는 커맨드라인을 통해 그래픽 사용자 인터페이스(GUI)가 요청할 수 없는 하드웨어 작업을 수행하도록 소프트웨어에 요청한다. 커맨드라인은 다양한 운영 체제에서 사용할 수 있고, 대개 Linux와 연결된다. 이는 커맨드라인과 오픈소스 소프트웨어가 연결되면 사용자는 컴퓨터에 무제한으로 액세스할 수 있기 때문이다.
결론은 GUI를 통해서도 컴퓨터의 많은 자원에 접근하고 제어할 수 있으나 CLI는 보다 세밀한 제어와 고급 기능, 자동화를 가능하게 하며 시스템 관리자나 개발자가 복잡한 작업을 수행하는 데 더 적합하다. 물론 GUI가 편리하고 직관적이긴 하다.
😕 참고로 리눅스는 엔터프라이즈(상용) 배포판과 커뮤니티 배포판이 있다. 말 그대로 돈내고 쓰는 것과 무료의 차이인데(아주 줄여서 얘기하자면 그렇다.), Fedora가 커뮤니티용이고 Red Hat이 엔터프라이즈용이다.
쉘(Shell)
쉘은 사용자가 운영 체제와 상호 작용할 수 있도록 하는 인터페이스이다. 명령어를 입력하여 시스템을 제어하고 프로그램을 실행하는 역할을 한다. 쉘은 명령어 인터프리터로, 사용자가 입력한 명령어를 해석하고 실행하는 기능을 제공한다. 대표적인 쉘 종류는 Bash(유닉스 계열), Zsh, Fish, PowerShell(Windows 환경) 이 있다.
쉘 스크립트(Shell Script)
운영체제의 쉘을 이용하여 한 줄씩 순차적으로 읽으면서 명령어들을 실행시키는 인터프리트(interprete) 방식의 컴파일되지 않는 프로그램이다. 주로 '.sh' 확장자를 가지며, 쉘 스크립트를 작성할 때 쉘 명령어와 제어 구조(조건문, 반복문 등)를 사용할 수 있다.
쉽게 말하자면 쉘에서 실행할 수 있는 명령어들을 개발자가 작성하여 파일로 저장한 것이 쉘 스크립트이다. 결국 이는 명령어의 모음으로, 특정 작업을 자동화하거나 반복적인 작업을 간편하게 수행하도록 도와준다. (.class 파일처럼 코드가 작성된 파일이라는 거다.)
1. 파일로 작성 후 실행해야 한다.
2. 파일의 가장 위쪽 첫 라인은 #!/bin/bash 로 시작한다.
3. 쉘 스크립트 파일은 코드 작성 이후 실행 권한을 부여해야 한다. (실행은 ./test.sh 입력 후 엔터)
4. 확장자는 일반적으로 '.sh' 이다.
5. 주석은 #내용 으로 처리한다.
기본 쉘 명령어
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 |
삽입 모드를 종료하고 명령 모드로 돌아가려면 'ESC'를 누른다.
줄 번호 표시 | |
:set nu | 줄 번호 표시 |
:set nonu | 줄 번호 표시 해제 |
텍스트 편집 명령어 | |
yy | 현재 줄 복사 |
p | 복사한 줄 붙여넣기 |
dd | 현재 줄 삭제 |
ndd | 현재 줄부터 n줄 삭제 |
u | 마지막 명령 취소(undo) |
Ctrl+r | 취소한 명령 다시 실행(redo) |
이동 명령어 | |
gg | 파일의 처음으로 이동 |
G | 파일 끝으로 이동 |
0 | 현재 줄의 처음으로 이동 |
$ | 현재 줄의 끝으로 이동 |
:n | n번째 줄로 이동 |
검색 및 바꾸기 | |
/pattern | pattern을 앞으로 검색 |
?pattern | pattern을 뒤로 검색 |
n | 같은 방향으로 다음 검색 결과로 이동 |
N | 반대 방향으로 다음 검색 결과로 이동 |
:/s/old/new | 현재 줄에서 old를 new로 변경 |
:/s/old/new/g | 현재 줄에서 old를 new로 모두 변경 |
파일 조작 명령어 | |
:w | 파일 저장 |
:q | vi 종료 |
:wq | 파일 저장 후 종료 |
:q! | 저장하지 않고 종료 |
텍스트 수정 명령어 | |
r<char> | 커서 위치의 문자 char로 대체 |
cw | 현재 단어 수정(단어 삭제하고 입력 모드로 전환) |
c$ | 현재 커서부터 줄 끝까지 수정(삭제하고 입력 모드로 전환) |
s | 현재 문자 삭제하고 입력 모드로 전환 |
S | 현재 줄 삭제하고 입력 모드로 전환 |
'개발 > 리눅스' 카테고리의 다른 글
[Linux] top 명령어로 서버 상태 파악하기 (1) | 2024.07.05 |
---|