오토에버 클라우드 2기 19일차
오토에버 클라우드 2기 19일차
리눅스에서 데몬과 백그라운드 차이
백그라운드 프로세스 (Background Process)
- 정의: 사용자가 명시적으로 실행했지만, 터미널과의 연결을 끊고 뒤에서 실행되도록 만든 프로세스
- 특징:
- 일반적으로 명령 뒤에
&기호를 붙여 실행 (command &) - 작업 제어 (job control)의 대상이 됩니다.
jobs,fg,bg등의 명령어로 상태를 확인하거나 foreground로 전환 - 실행한 터미널 세션과 연결되어 있어, 터미널이 종료되면 함께 종료 (이를 방지하기 위해
nohup명령어를 사용하기도 합니다.) - 표준 출력, 표준 에러는 기본적으로 터미널 (리디렉션을 통해 변경 가능)
- 일반적으로 명령 뒤에
데몬 (Daemon)
- 정의: 시스템 서비스 등을 제공하기 위해 백그라운드에서 지속적으로 실행되는 프로세스
- 특징:
- 일반적으로 시스템 부팅 시 자동으로 시작되거나, 필요에 따라 별도의 서비스 관리자에 의해 실행
- 터미널과는 완전히 분리되어 있으며, 사용자 세션에 종속되지 않음 즉, 사용자가 로그아웃해도 계속 실행
- 일반적으로 부모 프로세스가
init프로세스(PID 1) 데몬 프로세스는 보통 스스로를 백그라운드로 만들고 부모 프로세스를 종료 - 표준 입력은
/dev/null로 리디렉션되고, 표준 출력과 표준 에러는 보통 로그 파일이나 시스템 로그로 리디렉션 - 이름에
d로 끝나는 경우가 많음 (예:sshd,httpd)
| 특징 | 백그라운드 프로세스 | 데몬 |
|---|---|---|
| 실행 방식 | 사용자가 명시적으로 실행 후 백그라운드로 전환 | 시스템 시작 시 또는 서비스 관리자에 의해 자동 실행 |
| 터미널 연결 | 연결됨 (기본) | 분리됨 |
| 사용자 세션 종속성 | 종속될 수 있음 | 종속되지 않음 |
| 부모 프로세스 | 실행한 쉘 | init (PID 1) |
| 작업 제어 | 대상이 됨 (jobs, fg, bg) | 대상이 아님 |
파일 송수신
리눅스에서 파일 송수신과 메일 송수신은 서버·클라이언트 측 설정이 모두 필요하다 크게 FTP 서버(vsftpd) 구축과 FTP 클라이언트가 있다
FTP와 vsftpd 소개
- FTP(File Transfer Protocol): TCP 기반(보통 포트 21)으로 파일을 주고받는 프로토콜
- vsftpd: “Very Secure FTP Daemon”(매우 안전한 FTP 데몬)을 뜻하며, 가볍고 보안성 높은 FTP 서버 소프트웨어
vsftpd 설치·설정
설치
1 2 3 4 5 6
# Debian/Ubuntu sudo apt update sudo apt install vsftpd # CentOS/RHEL sudo yum install vsftpd
기본 설정 파일 편집 (
/etc/vsftpd.conf)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
# 익명 로그인 비활성화 anonymous_enable=NO # 로컬 사용자 로그인 허용 local_enable=YES # 업로드(쓰기) 허용 write_enable=YES # chroot(접근 제한) 설정 chroot_local_user=YES # 패시브 모드 포트 범위 설정 (방화벽 열어줘야 함) pasv_enable=YES pasv_min_port=10000 pasv_max_port=10100
서비스 재시작·자동 시작 등록
1 2
sudo systemctl restart vsftpd sudo systemctl enable vsftpd
방화벽 열기
1 2 3
# 포트 21, pasv 포트 범위 허용 sudo ufw allow 21/tcp sudo ufw allow 10000:10100/tcp
FTP 클라이언트 사용법
기본
ftp명령어1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
# 서버 연결 ftp your.ftp.server.com # 로그인 (ID/PW 입력) Name: youruser Password: **** # 파일 목록 조회 ls # 다운로드 get remote_file.txt # 업로드 put local_file.txt # 디렉터리 이동 cd uploads lcd ~/Downloads # 종료 bye
lftp (더 강력한 대체 클라이언트)
1 2 3 4 5 6 7 8
sudo apt install lftp lftp your.ftp.server.com -u youruser # mget/mput 으로 와일드카드 전송 mget *.jpg mput *.log # 백그라운드 전송, 재시도 기능 제공
GUI 클라이언트
- FileZilla: 크로스플랫폼 FTP/SFTP 지원
- WinSCP(Windows) 등
셸 프로그래밍
셸 스크립트는 Unix나 Linux 또는 POSIX(Portable Operating System Interface)를 지원하는 운영체제인 Mac OS등에서 일반적으로 사용하는 명려어들과 if, for와 같은 프로그래밍적인 요소로 이루어진 인터프리터 기반의 스크립트 언어
1. shebang (#!)
스크립트 첫 줄에 위치하며, 이 파일을 해석할 인터프리터를 지정
1
#!/bin/bash
#!/usr/bin/env bash형태로도 자주 쓰이며, 시스템 경로에 있는 bash 를 찾아 실행
2. 변수 (Variables)
선언과 할당
1
2
NAME="김민정"
COUNT=5
- 등호(
=) 양옆에 공백 불가 - 값을 읽어올 때는
$NAME,${COUNT}형태로 참조
환경 변수
1
export PATH="/usr/local/bin:$PATH"
export하면 자식 프로세스까지 변수 전파
3. 함수 (Functions)
1
2
3
4
5
6
greet() {
local name="$1" # 지역 변수 선언
echo "안녕하세요, $name 님"
}
greet "김민정"
local로 함수 내부 변수를 제한- 인수는
$1,$2…$@로 접근
4. 제어문 (Control Structures)
조건문
1
2
3
4
5
6
7
if [[ $COUNT -gt 3 ]]; then
echo "3보다 큽니다"
elif [[ $COUNT -eq 3 ]]; then
echo "3입니다"
else
echo "3보다 작습니다"
fi
-eq, -ne, -gt, -lt숫자 비교- 문자열 비교는
=또는==
반복문
1
2
3
4
5
6
7
for i in {1..5}; do
echo "번호: $i"
done
while read line; do
echo "읽은 줄: $line"
done < file.txt
6. 문자열 및 배열
문자열 조작
1
2
3
STR="hello world"
echo "${STR:0:5}" # hello
echo "${STR/world/unix}" # hello unix
배열
1
2
3
arr=(apple banana cherry)
echo "${arr[1]}" # banana
echo "${arr[@]}" # 모든 요소
This post is licensed under CC BY 4.0 by the author.