
CTRL + zbg %작업 번호fg %작업 번호작업 번호가 지시하는 작업을 포그라운드로 전환
# 실습
# 작업 생성
sleep 200
# 포그라운드 작업 중지
Ctrl + z
# 작업 번호가 [1]번인 작업을 백그라운드 작업으로 전환(Running)
bg %1
# 작업 번호가 [1]번인 작업을 포그라운드 작업으로 전환
fg %1
nohup 명령 &at [옵션] [시각]
옵션
-l : 현재 실행 대기 중인 명령의 전체 목록을 출력-r 작업 번호 : 현재 실행 대기 중인 명령 중 해당 작업 번호를 삭제-m : 출력 결과가 없더라도 작업이 완료되면 사용자에게 메일로 알려줌-f 파일 : 표준 입력 대신 실행할 명령을 파일로 지정작업 확인
/var/spool/cron/atjobs 파일에 작업이 기록되는데 수행할 명령이 없으면 삭제됨ls -l /var/spool/cron/atjobs
at -l
atq예약된 작업 삭제
at -d 작업 번호atrm 작업 번호사용 제한
📌 crontab
- 리눅스 시스템에서 특정 시간에 특정 작업을 자동으로 실행하게 해주는
예약 작업 스케줄러
- Cron Table 의 약어
cron이라는 daemon(백그라운드 프로세스)이 이 테이블을 보고 있다가 정해진 시간이 되면 명령어를 실행
- cron 은 Linux/Unix 계열 운영체제에서 특정 시간이나 주기에 맞춰 명령어나 스크립트 같은 작업을 자동으로 실행시켜주는 스케줄러이다.
crontab[-u UserID] [Option] [fileName]
-e : 사용자의 crontab 파일을 편집-l : crontab 파일의 목록을 출력-r : crontab 파일을 삭제
요일: 0-일요일, 1-월요일, … , 6-토요일*이면 해당 항목의 모든 값을 의미- : 값의 범위를 지정할 수 있음., : 반복에 대한 값 목록을 정의할 수 있음/ : 범위와 함께 사용 가능.
crontab -lcrontab -r# 편집기 선택하기
crontab -e
# 편집기를 선택하고 작성
42 1 * * * ls -l > ~developowl/cron.out
# vim 설정 파일
vi ~/.vimrc
# 설정 내용 입력
set number # 줄 번호 표시
set autoindent # 줄 바꿈 시 이전 줄의 들여쓰기 유지
set smartindent # if, for 등 문법에 맞춰 자동으로 들여쓰기
syntax on # 코드 문법 강조
crontab 관련 파일
crontab 로그
/etc/rsyslog.d/50-default.conf 파일에 접근하여 cron 로그를 활성화 시켜주면 됨.sh 파일은 항상 실행 전 권한 부여하기
sudo chmod 700 /aaa.sh

/etc/apt/sources.list.d/ubuntu.sources 파일에 저장되어 있음apt-cache statsapt-cache search 패키지 이름apt-cache show 패키지 이름apt-cache pkgnamesapt-get [option] 서브 명령
옵션
-d : 패키지를 내려받기만 수행-f : 의존성이 깨진 패키지를 수정하려고 시도-h : 도움말 출력-y : 설치 여부를 묻는 부분을 생략서브 명령
update : 패키지 저장소에서 새로운 패키지 정보를 가져옴, 설치한 후 맨 처음 한 번 수행upgrade : 현재 설치된 패키지 업그레이드install 패키지명 : 패키지를 설치remove 패키지명 : 패키지를 삭제purge 패키지명 : 패키지를 삭제download 패키지명 : 패키지를 현재 디렉토리로 내려 받기autoclean : 불완전하게 내려받았거나 오래된 패키지를 삭제clean : /var/cache/apt/archives에 캐시되어 있는 모든 패키지를 삭제하여 디스크 공간을 확보check : 의존성이 깨진 패키지를 확인패키지 자동 정리 및 삭제하기
sudo apt-get autoremove디스크 공간 정리
sudo apt-get clean패키지 다운로드
sudo apt-get download xterm패키지의 소스 관련 서브 명령: source
sudo apt-get --downloadonly source 패키지명sudo apt-get source 패키지명sudo aptget --compile source 패키지명fedora의 rpm과 같은 명령이 dpkgdpkg [option] 파일명 또는 패키지명
-l : 목록을 출력-l 패키지명 : 패키지의 설치 상태를 출력-s 패키지명 : 패키지의 상세 정보를 출력-L 패키지명 : 패키지를 설치할 때 사용한(설치된) 파일의 목록을 출력-c .deb 파일 : 파일의 내용을 출력-i .deb 파일 : 해당 파일을 설치-r 패키지명 : 패키지 삭제-P 패키지명 : 패키지와 설정 파일 모두 지움-x .deb 파일 디렉토리 : 해당 파일을 디렉토리에 풀어놓기(Sandbox)snap [option] 명령-h : 도움말을 출력disable : 스냅 서비스 중지download 스냅명 : 다운로드enable : 스냅 서비스와 실행 파일의 사용을 시작find 스냅명 : 조회info 스냅명 : 상세정보 출력install 스냅명 : 설치list : 목록 이름 출력remove 스냅명 : 삭제tar 기능[옵션] [아카이브 파일] [파일명]
기능
c : 새로운 tar 파일 생성t : tar 파일의 내용을 출력x : 원본 파일을 추출 (압출 풀기)r : 새로운 파일을 추가u : 수정된 파일을 업데이트옵션
f : 아카이브 파일이나 테이프 장치를 지정하는데 파일명을 -로 지정하면 tar 파일 대신 표준 입력에서 읽어들임v : 처리하고 있는 파일의 정보를 출력h : 심볼릭 링크의 원본 파일을 포함p : 파일을 복구할 때 원래의 접근 권한을 유지j : bzip2로 압축하거나 해제z : gzip으로 압축하거나 해제자주 사용하는 옵션
cvf : 압축xvf : 압축 해제tvf : 내용 확인uvf : 업데이트rvf : 파일 추가압축과 압축 해제
mkdir ex_archive
cd ec_archive
mkdir sample1 sample2 sample3
# sample1을 가지고 sample1.tar 로 압축
tar cvf sample1.tar sample1
# 압축된 파일의 내용을 확인
tar tvf sample1.tar
# sample1 디렉토리 삭제: rmdir sample1 OR rm -r sample1
rm -r sample1
# 현재 디렉토리에 sample1.tar 파일의 압축을 해제
tar xvf sample1.tar
# 압축 파일에 내용 추가
tar rvf sample1.tar sample2
# 에러 발생 - 디렉토리를 추가할 수 없음

z 옵션을 추가헤서 압축을 하면 압축 파일의 사이즈르르 줄일 수 있음tar czvf sample1.tar.gz sample1 test.txt
tar cjvf sample1.tar.bz sample1 test.txtAWS) S3 ↔ Glacier
- S3: 파일 그대로 저장
- Glacier: 파일을 압축하여 저장
gz 를 사용gzip [옵션] [파일명]-d : 해제-l : 정보 출력-r : 하위 디렉토리를 탐색하여 압축-t : 압축 파일 검사-v : 압축 정보를 화면에 출력-9 : 최대한 압축gunzip sample1.tar.gz.gz → 원본) 압축 파일이 사라지고 원본 파일만 남게 됨.bzip2 [옵션] [파일명]-d : 해제-l : 정보 출력-t : 압축 파일 검사-v : 압축 정보를 화면에 출력--best : 최대한 압축# sample1.tar 파일의 사이즈 줄이기
bzip2 sample1.tar
# 압축 해제
bunzip2 sample1.tar.bz2
.bz2 로 대체(replace)함wget [옵션] ... [URL] ...
기본 다운로드
wget https://~~/file.zip파일 이름 변경
wget -O 파일명 https://~~/file.zip다운로드 이어서 받기(중단된 경우)
https://~~/file.zip백그라운드에서 다운로드
https://~~/file.zip속도 제한
wget --limit-rate https://~~/file.zip웹사이트 미러링
wget -m https://~~.com-r : 하위 디렉토리까지 따라가면 다운로드-np : 상위 디렉토리로 이동하지 않도록 제한-k : 로컬에서 오프라인으로 보기 편하도록 링크를 변환터미널 환경에서 다양한 프로토콜을 사용해서 데이터를 전송하거나 가져오는 도구
서버와의 데이터 통신 및 API 테스트에 최적화되어 있어 개발자들이 거의 필수적으로 사용하는 도구
curl [옵션] [URL]
웹 페이지 소스 보기
curl https://example.com파일로 저장
curl -o 파일이름 https://example.comcurl -O https://example.comHTTP 헤더 확인
curl -l https://example.com리다이렉트 자동 추적
curl -L http://google.com📌 Redirection
- Forwarding → 보통 Read
- 요청의 흐름을 이어가면서 이동
- 이전의 요청을 갖고 있음
- Redirection → 보통 CUD
- 요청의 흐름을 끊고 이동
- 요청을 새로 만듦
REST API 테스트 할 때 많이 사용하는 옵션
-X : 사용할 HTTP 메서드-d : 전송할 데이터-H : 헤더 정보를 추가자주 사용하는 옵션: -fsSL
f : HTTP 오류가 발생하면 아무것도 출력하지 말고 실패 처리s : 에러 메시지 표시하지 않음S : s와 함께 사용하는데, 진짜 에러가 난 경우에만 메시지를 출력L : 리다이렉트된 경우 추적해서 데이터를 가져옴sh 나 bash 로 연결된 스크립트 파일을 실행할 때 사용
| wget | curl | |
|---|---|---|
| 주요 목적 | 단순 파일 / 사이트 다운로드 | 데이터 전송 및 API 테스트 |
| 재시도 | 재시도 가능 | 재시도하지 않음 |
| 재귀적 다운로드 | 가능 | 가능하지 않음 |
| 복잡성 | 단순하고 직관적 | 매우 다양한 프로토콜 및 옵션 제공 |
리눅스의 부팅은 PC 전원을 켜는 순간부터 리눅스가 완전히 동작해서 로그인 프롬프트가 출력될 때까지를 의미
부팅에 필요한 서비스가 시작되도록 설정해야 하고 부팅 과정에서 문제가 발생한 경우 이를 해결하기 때문에 이해를 해야 함
부팅 과정


ROM BIOS(==펌웨어) 라고도 함MBR(Master Boot Record) : 컴퓨터에 장착된 키보드, 디스크 상태를 확인하고 부팅할 장치를 선택해서 부팅 디스크의 섹터에서 512B 를 로딩.운영체제 중에서 부팅할 운영체제나 부팅 방법을 선택할 수 있도록 메뉴를 제공
우분투에서는 부트 로더로 GRUB를 사용하는데 기본적으로 멀티 부팅이 아니라면 GRUB 메뉴를 출력하지 않고 바로 부팅 작업을 진행
부팅할 GRUB 메뉴를 출력하고자 한다면 /etc/default/grub 파일을 수정하면 되는데, GRUB_TIMEOUT_STYLE=hidden 으로 되어 있어서 부팅 메뉴가 출력되지 않음
GRUB_TIMEOUT=0 부분의 0을 수정해서 값을 설정하면 그 값이 메뉴가 출력되는 시간이 파일을 수정한 경우 sudo update-grub 명령을 수행
리눅스 커널을 메모리에 로딩하는 역할을 수행
/boot 디렉터리 아래에 vmlinuz-버전명의 형태로 제공daemon 을 모두 실행한 뒤 로그인 프롬프트 화면을 출력
소프트웨어를 사용할 준비 완료
부팅 끝
GUI를 사용하면 부팅 과정에서 보여지는 메시지가 출력되지 않고 부트 스플래시라는 이미지가 출력됨
GUI 환경에서도 부팅 메시지를 출력하고자 하는 경우에는 /etc/default/grub 파일에서 GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash” 부분을 삭제한 후 sudo update-grub 를 수행
부팅한 후 이 메시지를 확인하고자 하면 /var/log/dmsg 혹은 /var/log/bootstrap.log 을 확인. (more 사용 권장)