3. Linux OS 이용/관리
3.2. 특징/구조
3.2.1. Linux 특징
3.2.1.1. Windows는 사용자들에게 보편적인 OS라면, Linux는 기술자들에게 보편적인 OS이다.
3.2.1.2. 1991년 Linus benedict torvalds에 의해 개발되었다.
3.2.1.3. Linux 특징은 하기와 같다.
다중사용자지원 | Linux의 두드러진 특징은 아니다. |
안정성과 보안성 | Linux의 두드러진 특징은 아니다. 다양한 사람에 의해 자유롭게 수정/보완되기에 안정성과 보안성이 준수된다고 하는데, 오히려 그렇기에 불특정 위험에 노출된 것도 사실이다. |
오픈소스 | 중요한 특징이다. "공짜다." 그리고, "필요하면 아무나 가져가서 니 입맛대로 바꿔서 써라" |
이식성과 확장성 | 1. 오픈소스 소프트웨어임을 원인으로 하는 결과적인 특징이라 할 수 있다. 2. 리눅스는 POSIX(Portable OS Interface Portable Operating System Interface) 표준을 따른다. |
3.2.2. 디렉토리 구조
3.2.2.1. 윈도우에는 환경설정 값을 한 곳에 몰아 넣은 레지스트리(registry, 중앙집중데이터베이스)가 있으나, 리눅스에는 여러 디렉토리에 분산되어 저장되어 있다고 한다. 오랜 기간 유저친화적으로 변화해서 그런가 중앙집중형이 분산형보다 관리가 더 어렵다. 레지스트리도 최상위만 묶어놨지 펼치면 이보다 더 분산적으로 폴더링하기도 어렵다. 애초에 윈도우는 관리자 친화적으로 설게/발전된 OS가 아니다.
디렉토리 | 내용 |
/ | 최상위 디렉토리 |
/boot | Boot loader |
/root | root 계정의 홈 디렉토리 *administrator 폴더 |
/bin | 기본적인 명령어 |
/sbin | 시스템 관리자용 명령어 |
/lib | 부팅에 필요한 핵심 시스템 라이브러리 |
/etc | 시스템 설정 파일(/passwd, /shadow, /group, /fstab, /hostname, /network) |
/dev | 하드 디스크 등 시스템 디바이스 (CD-ROM 등) |
/mnt | 탈부착 장치에 대한 일시적 접속 지점 |
/media | USB, CD-ROM등 장치들의 접속 지점 |
/opt | 추가적인 프로그램들의 설치경로 |
/srv | 서버에서 제공받은 서비스 데이터 파일 |
/tmp | 임시파일 디렉토리(공용 디렉토리) |
/proc | 현재 메모리 위에 있는 프로세스에 대한 파일 |
/var | 시스템 운용 중의 데이터 기록 |
/var/lib | 시스템이나 어플리케이션의 DB, 정보 파일(소프트웨어 라이브러리랑 약간 다름) |
/var/cache | 사용하는 프로그램의 캐시 데이터 |
/var/spool | 처리를 기다리는 프로세스의 임시 저장 공간 |
/var/log | 시스템 로그 파일 |
/var/tmp | 임시/공용 파일 |
/usr | 일반 계정의 공용 디렉토리(설정 DB) |
/usr/bin | 일반 계정의 기본 명령어 |
/usr/sbin | 네트워크 관련 명령어 등 |
/usr/lib | 일반 사용자의 응용 프로그램 라이브러리 |
/usr/include | 표준 라이브러리 헤더 파일 |
/usr/share | 테마, 메뉴얼 등 시스템 공유 파일 |
/home | 사용자 계정별 홈 디렉토리 *실사용 폴더 |
3.2.3. 서비스/데몬(daemon)
3.2.3.1. 리눅스 서비스/데몬은 백그라운드 서비스를 말한다.(부팅시자동실행+백그라운드실행의 결합을 의미하는 경우도 흔하다) 부팅하면 매번 같은 설정을 실행해야 하는 귀찮음을 자동화한 것이다. (service:윈도우의 사용자 친화적 입장 / daemon:리눅스의 기술자 친화적 입장)
3.2.3.2. systemctl list-unit-fiels --type=service (시스템 내 서비스를 나열 확인)

UNIT FILEE | STATE | VENDOR PRESET | |
해당 유닛 파일 이름 | 해당 파일의 설정값 | 해당 파일의 디폴트 설정값 | |
enabled | 부팅시 자동실행 | 좌동 | |
disabled | 부팅시 자동실행X (수동 실행) |
좌동 | |
static | 필요시 자동실행 | 좌동 | |
masked | 실행 금지 상태 | 좌동 |
3.2.3.3. 초기화 시스템이 systemd인 경우 서비스 관리 명령은 하기와 같다.
명령어 | 내용 |
sudo systemctl status ufw.service | 서비스 상태 확인 |
sudo syetemctl start ufw.service | 서비스 시작 |
sudo systemctl stop ufw.service | 서비스 정지 |
sudo systemctl restart ufw.service | 서비스 재시작 |
sudo systemctl enable ufw.service | 부팅시 서비스 활성화 |
sudo systemctl disable ufw.service | 부팅시 서비스 비활성화 |
3.2.3.4. 다른 초기화시스템에 따라서는 하기와 같다.
초기화 시스템 | 서비스 관리 명령 예시 |
SysVinit | sudo service ufw.service status |
Upstart | sudo initctl status ufw.service |
OpenRC | sudo rc-service ufw.service status |
runit | sudo sv status ufw.service |
launchd (macOS) | sudo launchctl list ufw.service |
3.2.4. 스케줄러
3.2.4.1.1. cron(chronos, 시간)이란 주기적인 스케줄링 시스템을 의미한다. 명령어는 아니고 추상적인 개념이다.
3.2.4.1.2. wsl에서는 기본적으로 cron이 비활성상태이기 때문에 활성화시켜줘야 한다.

3.2.4.1.3. cron 관리 명령어는 crontab이며, 구체적인 옵션과 예제는 하기와 같다.
명령어 | 기능 |
sudo crontab -u exampleuser | 다른 사용자(exampleuser)의 cron 환경을 아래의 옵션과 결합해 작업. *sudo 필요 |
crontab -l | 모든 cron 작업 확인 |
crontab -e | cron 작업 추가 (editor 실행) |
crontab -r | 모든 cron 작업 제거 |
crontabl -i | cron 작업 제거시 알람 |
- vim test.sh
- 스크립트 입력 후 저장한다
- test.sh를 실행하는 데몬을 설정하기 위해 실행 권한을 부여한다
- crontab -e로 에디터[1~4]를 지정해서 시간과 커맨드를 입력하고 저장한다
매분 매시 매일 매월 매요일 test.sh 실행 및 그 출력을 testresult에 입력하는 cron -l 옵션은 crontab -e 의 에디터 내용을 그대로 출력한다. corn 전용 cat함수라 볼 수 있다. 1분이 지나자 스크립트를 실행하는 모습. test.sh의 실행 출력을 testresult의 입력으로 받은 것을 확인할 수 있다. 뒷정리 - 구체적인 커맨드 형식은 하기와 같다.
분 | 시 | 일 | 월 | 요일 | 주기 |
* | * | * | * | * | 1분마다 스크립트 실행 |
*/10 | * | * | * | * | 10분마다 스크립트 실행 |
0 | * | * | * | * | 매 시간 0분마다 스크립트 실행 |
5 | */1 | * | * | * | 매 시간 1분마다 스크립트 실행 |
25 | 15 | 5 | * | * | 매월 5일 15시 25분에 스크립트 실행 |
0 | /6 | * | * | 0,6 | 매월 일, 토요일 6시, 12, 18, 24시 정각에 스크립트 실행 |
0 | 0 | 15 | * | 0 | 매월 15일이 일요일인 경우 0시 0분에 스크립트 실행 |
3.2.4.2.1. At은 특정 작업을 단발성으로 실행하는 것으로, 주기적으로 동작하는 cron과 다르다.
3.2.4.2.2. 구체적인 커맨드 형식과 예시는 하기와 같다.
커맨드 및 예시 | 내용 | |
echo "hello" | at now + 5minutes | 시간 상대지정 | |
echo "hello" | at now + 1 hours | ||
echo "hello" | at now + 1 day | ||
echo "hello" | at now + 2 weeks | ||
echo "hello" | at 3:00 PM | 시간 절대지정 | |
echo "hello" | at 15:00 12/25 | ||
echo "hello" | at 06:00 2024-12-31 |
||
atq | 예약된 작업 및 일련번호 나열 | |
atrm 일련번호 | 해당 일련번호 예약 작업 삭제 |
3.2.4.3.1. systemd timers
3.2.4.4.1. 반복루프 스크립팅으로 할 수도 있다. 다만 불필요한 작업을 메모리에 계속 얹어놓는 것이라 비효율적이다. 리눅스에서 이미 내장된 시계가 있음에도 별도로 시스템 자원에다가 초(sec) 세라고 계속 시키는 꼴이기 때문이다.(sleep)
- vim rooptest.sh
- 스크립트 입력 및 저장
- 실행권한부여 및 실행

3.2.4.4.2 반복루프 스크립팅2 (특정시간에 반복)
- vim rooptest2.sh
- 스크립트 입력 및 저장
현재시간을 출력하고 목표 시간 분을 입력으로 받아 해당 시/분/00초에 도달할 떄마다 hello를 출력하는 함수이다. 리눅스 에디터는 $(()), $(), $를 각각 수학연산구문, 명령어구문, 변수호출구문으로 사용하기에 익숙치 않으면 불편하다. - 실행권한 부여 및 실행

3.2.4.4.3 단발 스크립팅
- vim attest.sh
- 스크립트 입력 및 저장
- 실행권한 부여 및 실행
셸 프롬프트가 드러나는 것으로 보아 지정시간에 실행 후 스크립트가 종료된 것을 알 수 있다.
3.2.5. 디스크 관리
3.2.5.1. 파티션 및 파일시스템 설정 등으로 저장장치 자원을 효율적으로 사용하도록 설정할 수 있다.
3.2.5.2. 디스크 관리 명령어는 하기와 같다.
명령어 | 기능 |
fdisk | 디스크 파티션의 생성, 수정, 삭제 |
df | 전체 디스크 사용량 확인 |
mkfs | 파일시스템 생성 |
mount | 파티션이나 저장장치를 특정 디렉토리에 꽂는(연결하는) 것. *사용자 폴더처럼 저장장치/파티션 폴더를 지정하는 명령어라 할 수 있다. |
3.2.5.3. 리눅스는 etx(extended file system)파일 시스템을 사용하며, 구체적인 내용은 하기와 같다.
파일시스템 | since | 특징 | 파일최대크기 | 디스크최대용량 |
ext1 | 초기 Linux | 2GB | 2GB | |
ext2 | 1993 | 간단하고 빠른 속도, 그러나 데이터 손실 우려 | 2TB | 32TB |
ext3 | 2001 | 저널링 기능 도입(데이터 손실 우려 감소) | 2TB | 32TB |
ext4 | 2008 | 전체적인 양적 성능 향상 | 16TB | 1EB |
'CS > OS' 카테고리의 다른 글
운영체제 : 3.Linux OS 이용/관리 : 3.명령어 : 2. 호출/검색/필터링 (1) | 2024.12.05 |
---|---|
운영체제 : 3.Linux OS 이용/관리 : 3.명령어 : 1. 관리일반 (0) | 2024.12.05 |
운영체제 : 3.Linux OS 이용/관리 : 1.계정 관리 (0) | 2024.12.01 |
운영체제 : 2.Windows OS 이용/관리 : 5.네트워크 관리 (0) | 2024.11.29 |
운영체제 : 2.Windows OS 이용/관리 : 4.자원할당 간접 모니터링 (3) | 2024.11.28 |