리눅스
리눅스에서는 모든 것은 파일이라는 철학을 따른다. (마우스, 키보드와 같은 모드 디바이스 관련 기술도 파일과 같이 다룸)
유닉스는 여러 프로그램이 서로 유기적으로 각자 일을 수행하면서 전체 시스템이 동작하도록 하는 철학을 따른다.
- ubuntu 접속 명령어 : ssh -i seono.pem ubuntu@퍼블릭 IPv4 주소
- whoami : 현재 로그인한 사용자 ID를 알려준다. ( root : 슈퍼관리자 ID )
- sudo 명령어 : 사용자 ID지만 root 권한으로 실행 가능한 프로그램 ( eg. sudo apt-get update )
- pwd : 현재 디렉토리 위치
- ls : 파일에 대한 정보 (ls -al : 숨김 파일 포함)
- chmod : 파일 권한 변경
(eg.
cdmod 400 mysecurity.pem : 소유자가 읽기만 가능 /
chmod -R 777 directory : 하위 디렉토리까지 모든 권한인 777 을 줄 때 -R을 붙여준다 )
- cat : 파일 보기
- vi : 파일 만들기 (:wq 로 아무것도 쓰지 않고 저장하고 나온다.)
- rm : 강제 파일 삭제하기 (rm -rf 폴더명 : 폴더안에 있는 파일 모두 삭제)
리다이렉션과 파이프
표준 입력 스트림 : stdin /표준 출력 스트림 : stdout / 오류 출력 스트림 : stderr
일반적으로 plain text로 콘솔에 출력된다.
리다이렉션 (redirection)
표준 스트림 흐름을 바꿔줌, 출력 경로를 바꿈. > , < / 기존 파일에 추가는 >> , <<
- ls > files.txt : ls로 출력되는 표준 출력 스트림의 방향을 files.txt 로 덮어씀 (files.txt 에 ls 로 출력되는 결과가 저장)
- head < files.txt : files.txt의 파일 내용이 head 라는 파일의 처음부터 10 라인까지 출력해주는 명령으로 넣어짐 (files.txt의 앞 10라인이 출력)
파이프 (pipe)
출력 스트림을 다른 프로세스의 입력 스트림으로 연결한다.
ls | grap files.txt : 특정 파일이 있는지 찾을 때 사용함.
포그라운드와 백그라운드 프로세스
foreground process : 쉘에서 해당 프로세스 실행을 명령한 후, 해당 프로세스 수행 종료까지 사용자가 다른 입력을 하지 못함.
( 프로세스 실행 취소 - ctrl + c / 실행 중지하는 명령어 - ctrl + z )
foreground process : 사용자 입력과 상관없이 실행됨. (쉘에서 해당 프로세스 실행 시 맨 뒤에 & 붙여줌)
리눅스 프로세스 제어 명령어
ps : 프로세스 상태 확인
option
-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
|
로그인 상태에 있는 동안 아직 완료되지 않은 프로세스를 출력.
*유닉스 시스템은 사용자가 로그아웃한 뒤에도 임의의 프로세서가 계속 동작 가능 -> 해당 프로세서는 자신이 실행시킨 쉘이 없어도 계속 자신의 일을 수행하는 데 이 프로세스는 해당 옵션 없이는 확인이 불가능
|
출력 항목
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 우선순위 번호
|
kill : 프로세스 종료 시킴 / -9는 작업 강제 종료 옵션이다.
- kill % 작업 번호(jop number) , kill 프로세스 ID(pid)
하드링크와 소프트링크
cp 명령 : 파일 복사
cp -rf * ../folder/ - 하부폴더 포함하여 현재폴더에 있는 모든 것들을 folder에 복사
하드링크 : ln A B
A와 B는 동일한 데이터를 가리킴. A가 바뀌면 B도 바뀜.
소프트링크 : ln -s A B
윈도우 OS의 바로가기와 같음.
ubuntu
리눅스 패키지 시스템의 다양한 배포판 중 하나
최신 인덱스 정보 업데이트 : sudo apt-get update
VIM 에디터
- Vim : Vi impreved 에서 앞글자만 딴 이름이다. Vi에 자동화, 시각화 메뉴를 추가한 프로그램
- Vi : 전통적인 유닉스 에디터 (Visual Editor)
- 이맥스(Emacs)
vim 모드
1. 일반(명령) 모드 : 처음 실행하거나 입력/명령 모드에서 ESC 입력 시 - 찾기, 커서 이동 등
2. 명령(명령행) 모드 : 일반모드에서 :입력 시 - 저장, 파일 읽기, vim 설정 등
3. 입력(편집) 모드 : 일반 모드에서 a, i, o 키 입력 시 - 내용 입력
4. visual 모드 : 일반 모드에서 v 입력 시 - 블럭 복사/붙여넣기
입력, 삭제, 저장 명령어
입력
i : 포커스 잡힌 커서 위치에서 편집 모드 시작
a : 포커스 잡힌 커서 위치 바로 다음에서 편집모드 시작
삭제(일반모드)
x : 커서의 한 문자 삭제
파일 저장
:w 현재 오픈된 파일 저장
:q 저장하지 않고 quit
:wq 저장하고 종료
:q! 강제 종료
쉘스크립트
파일의 가장 첫 라인은 '#!/bin/bash' 로 시작하고 'filename.sh'와 같은 형태로 파일 이름을 작성함.
(eg. chmod 764 hello.sh)
echo 함수를 이용하여 화면에 쉘 명령어를 출력할 수 있음.
myinfo=("seon" 30 "it")
echo ${myinfo[*]}
와 같이 리스트 변수로 만들어 출력도 가능하다.
- 리눅스에서 여러 파일을 묶는 것을 archive(아카이브) 라고 한다. 확장자는 .tar
압축 시 : tar -cvzf [압축된 파일 이름] [압축할 파일이나 폴더명]
압축 해제 시 : tar -xvzf [압축 해제할 압축 아카이브 이름]
Bash 쉘스크립트 개발 시작하기
이 책은 처음으로 리눅스로 시스템을 운영하게 되면서 Bash 쉘로 스크립트를 작성하게 되는 개발자를 위해서 도움이 되는 리눅스의 기본 개념과 기본 명령어, 스크립트 작성 Tip을…
wikidocs.net
출처 :
https://www.fun-coding.org/linux_basic5.html#gsc.tab=0
https://gomguard.tistory.com/76
https://blog.naver.com/PostView.nhn?blogId=tmk0429&logNo=222318530824