Gom3rye
Linux 본문
파일 시스템
기본 접근 권한 설정
- 현재 기본 접근 권한 확인
- han.txt 파일을 빈 파일로 생성
- **touch han.txt**
- han.txt 파일의 접근 권한을 확인
- 스크립트를 만들고 실행 할 수 있도록 실행 권한을 줘야 한다.
- **ls -l han.txt # -rw-rw-r-- 1 kyla kyla 0 May 20 00:05 han.txt (실행 권한이 없음)**
- temp 라는 디렉토리를 생성
- **mkdir temp**
- temp 디렉토리의 접근 권한을 확인
- **ls -l # drwxrwxr-x 2 kyla kyla 4096 May 20 00:11 temp**
umask [옵션] [마스크값]
기본 접근 권한 확인 및 변경
- 파일을 생성하고 확인하면 보안 상의 문제로 실행 권한은 부여되지 않는다.
특수 접근 권한 설정
umask 명령으로 확인한 숫자 중 첫 번째 숫자에 대한 부분
- 맨 앞자리가 0이면 일반적인 접근 권한 설정
- 1이면 스티키 비트
- 2이면 SetGID
- 4이면 SetUID
- SetUID: 해당 파일을 실행하면 파일을 실행한 사용자의 권한이 아니라 파일 소유자의 권한이 적용된다.
실습
**touch set.exe
chmod 755 set.exe
ls-l # -rwxr-xr-x 1 kyla kyla 0 May 20 00:47 set.exe**
파일에 SetUID 설정
**chmod 4755 set.exe
ls-l # -rwsr-xr-x 1 kyla kyla 0 May 20 00:47 set.exe**
- 실행 권한이 x → s로 바뀜
프로세스 관리 도구
top
현재 실행 중인 프로세스의 정보를 주기적으로 출력하는데 프로세스의 자세한 요약 정보를 상단에 출력하고 각 프로세스의 정보를 하단에 출력
출력 정보
- PID
- USER
- PR: 우선 순위 값
- NI: Nice 값
- VIRT: 가상 메모리 크기
- RES: 메모리 크기
- SHR: 공유 메모리 크기
- %CPU
- %MEM
- Time+: CPU 누적 이용 시간
- COMMAND: 명령어
top의 내부 명령
- Enter, Spacebar: 다시 출력
- h, ?: 도움말
- k: 프로세스를 종료하는데 종료할 PID를 묻는 대화 상자를 출력
- n: 출력하는 프로세스의 개수를 변경
- u: 사용자에 따라 정렬해서 출력
- M: 메모리 크기에 따라 정렬
- p: cpu 사용량에 따라 정렬
- q: top 명령을 종료
특정 프로세스의 CPU 사용량만 보고 싶을 때 : top -p <PID>
**top -p 1234**
포그라운드 및 백그라운드 프로세스와 작업 제어
포그라운드와 백그라운드
- 사용자가 터미널에서 작업할 때 보통의 경우 한 번에 하나의 프로세스만 실행 가능
→ 어떤 명령을 실행하면 명령이 끝날 때까지 기다려야 다시 터미널을 사용할 수 있다.
어떤 프로세스를 실행하는 도중에 다른 프로세스를 실행해야 하는 경우가 발생할 수 있는데 작업 제어 도구는 이렇게 하나의 터미널에서 여러 프로세스를 실행하고 관리하기 위해 개발
- 포그라운드 작업
- 사용자가 입력한 명령이 실행되어 결과가 출력될 때까지 기다리는 방식으로 동작하는 프로세스
- 실행 도중에는 프롬프트가 보이지 않기 때문에 다른 명령을 수행시킬 수 없다.
- ex. sleep 100 : 100초 동안 대기해야 한다. (→ ctrl + c로 멈춤)
작업 제어
작업 전환, 작업 일시 정지, 작업 종료 등
- 작업 전환 : 포그라운드 → 백그라운드 작업 or 백그라운드 → 포그라운드 작업으로 변환하는 것
jobs [%작업번호]
현재 실행 중인 백그라운드 작업 목록 보기
- %번호 : 작업 번호에 해당하는 작업을 조회
- %+, %% : 작업 순서가 +인 작업 정보를 출력
- %- : 작업 순서가 -인 작업 정보를 출력
jobs 결과 확인
- 앞에 나온 숫자 : 작업 번호로 일련번호 형식
- +: 가장 최근에 접근한 작업
- -: + 전에 접근한 작업
- 공백: 그 이외의 작업
- Running: 현재 실행 중
- Done: 작업이 정상적으로 종료
- Exit: 작업이 비정상적으로 종료
- Stopped: 작업이 잠시 중단, 사용자가 Ctrl+z를 눌렀거나 신호를 받아 일시정지 됨
연습 문제
sleep 1000 명령 2개를 백그라운드로 실행
sleep 1000 &
sleep 1000 &
현재 실행 중인 백그라운드 작업과 정지된 작업을 조회
jobs
백그라운드로 실행 중인 1번 작업을 종료
kill %1
남아있는 백그라운드 작업을 포그라운드로 전환
fg %2
포그라운드 작업을 종료
Ctrl+c
작업 예약
주기적으로 반복하거나 특정 시간에 한 번 수행해야 하는 작업을 예약할 수 있다.
ex. 정해진 시간에 한 번만 실행
at [옵션] [시간]
- 옵션
- I: 현재 실행 대기 중인 명령의 전체 목록을 출력
- r 작업 번호: 현재 실행 대기 중인 명령 중 작업 번호에 해당하는 작업을 삭제
- m: 출력 결과가 없더라도 작업이 완료되면 사용자에게 메일로 알려준다. (메일 서버 기능이 있어야 함)
- f 파일경로: 표준 입력 대신 실행할 명령을 파일로 지정
at 명령이 없는 경우 - 설치해야 한다.
sudo apt install at
시간 설정
at 시간(HH:MMm HHMM)
today, tomorrow, hours, days, weeks 가능
- at 4pm + 3 days: 3일 후 오후 4시
- at 10am Jul 31: 7월 31일 오전 10시에 작업을 수행
- at 1am tomorrow: 내일 새벽 1시
- at 10:00am today: 오늘 아침 10시
at 명령 사용 후 종료는 ctrl+d
모든 명령은 절대 경로로 작성해야 한다.
ex. 아침 6:50분에 사용자 kyla의 홈 디렉토리를 long format(-l 옵션)으로 나열하고, 그 결과를 kyla의 홈 디렉토리에 있는 at.out 파일로 출력
at 06:50 #치고 엔터 누르면
/usr/bin/ls -l ~kyla > ~kyla/at.out #명령어 칠 수 있다.
at 명령 사용 제한
시스템 관리자는 일반 사용자들의 at 명령 사용을 허용하거나 사용하지 못하도록 금지할 수 있다.
- /etc/at.allow 와 /etc/at.deny 파일을 이용
- at.allow 파일에 사용 가능한 사용자 아이디를 작성하고 at.deny에 사용을 금지하는 사용자 아이디를 한 줄에 하나씩 작성하면 된다.
- at.allow 파일이 있으면 이 파일의 사용자만 at 명령이 가능하고 at.deny는 무시한다.
- at.allow 파일이 없고 at.deny 파일이 있으면 at.deny에 작성된 유저를 제외한 모든 유저가 at 명령 사용 가능
- 2개의 파일이 모두 없으면 root만 at명령을 사용할 수 있다.
- 사용자가 모두에 기록되어 있다면 사용 가능하다.
- at.deny 파일이 존재하고 아무런 내용도 없다면 모든 사용자가 at명령을 사용할 수 있다. → 초기 설정
crontab [-u 사용자ID] [옵션] [파일경로]
정해진 시간에 반복 실행하는 명령어
- 옵션
- e: 사용자의 crontab을 편집
- I: crontab 파일의 목록을 출력
- r: crontab 파일을 삭제
- crontab 파일은 사용자별로 1개만 생성된다.
- 시간 설정
- 분 (0-59) 시간 (0-23) 일 (1-31) 월 (1-12) 요일 (0-6) 작업내용
- 요일은 일요일이 0
- 각 항목은 공백으로 구분
- 항목의 값이 *****이면 해당 항목의 모든 값을 의미
- 연산자를 이용하면 값의 범위를 지정할 수 있다. ex. 요일 필드에서 1-5 : 월요일부터 금요일까지
- , 연산자를 이용하면 반복에 대한 값 목록을 정의할 수 있는데 시간 필드에 1,3,5를 설정하면 1시 3시 5시를 의미한다.
- / 연산자를 사용하면 단계 값을 지정할 수 있다. ex. 분 필드에 1-10/2 → 1, 3, 5, 7, 9분에 수행 (2분 마다 수행)
- ex.
- */20 → 20분 마다 수행
- ex. 30 23 1 * * /usr/bin/ls -l ~kyla > ~kyla/cron.out ⇒ 매월 1일 23시 30분에 수행된다.
- 45 22 * * * → 매일 22시 45분에 수행
- 0 17 * * 1 → 매주 월요일 17시에 수행
- 59 23 * * 1-5 → 월요일부터 금요일까지 23시 59분에 수행
- */10 * * * * → 10분 간격으로 수행
crontab 편집 : crontab -e
10 * * * * /usr/bin/ls > ~kyla/cron.out
ctrl+o(저장) 누르고 enter치고 ctrl+x(나가기)
crontab 확인 : crontab -l
crontab 삭제: crontab -r
연습
- 현재 날짜와 시간을 확인
date
- 현재 날짜 및 시간을 5분 단위로 홈 디렉토리의 crontab.out 이라는 파일로 출력하도록 작성
*/5 * * * * date > ~kyla/crontab.out
- crontab 명령으로 설정한 내용을 확인
crontab -l
두 번 이상 실행 되는지 확인하고
- crontab 삭제
crontab -r
crontab 사용 제한
/etc/cron.allow와 /etc/cron.deny 파일을 가지고 사용을 제한한다.
'현대 오토에버 클라우드 스쿨' 카테고리의 다른 글
리눅스를 활용한 패키지 관리 (2) | 2025.05.22 |
---|---|
리눅스를 활용한 시스템 관리 (1) | 2025.05.21 |
Linux (0) | 2025.05.20 |
Linux (0) | 2025.05.20 |
Linux (0) | 2025.05.20 |