본문 바로가기

Programming/국비학원

221021 - 리눅스 - 작업 스케줄링, 네트워크 명령어, 파이프/필터/리디렉션, 프로세스, 응급 복구, GRUB

  • find : 파일 검색

find [옵션] [경로] [표현식]

 

 

  • 옵션
P : 심볼릭 링크를 따라가지 않고, 심볼릭 링크 자체 정보 사용
L : 심볼릭 링크에 연결된 파일 정보 사용
H : 심볼릭 링크를 따라가지 않으나, Command Line Argument를 처리할 땐 예외
D : 디버그 메시지 출력

 

 

 

  • 표현식
name : 해당 이름의 파일을 찾음 (정규 표현식 활용 O)
type : 지정된 파일 타입에 해당하는 파일 검색
user : 해당 유저에게 속한 파일 검색
empty : 빈 디렉토리 혹은 크기가 0인 파일 검색
delete : 검색된 파일/디렉토리 삭제
exec : 검색된 파일에 지정된 명령 실행
path :  문자열 패턴에 해당하는 경로에서 검색
print : 검색 결과 출력 (디폴트 => 검색 항목은 newline으로 구분)
print0 : 검색 결과 출력 (검색 항목은 null로 구분)
size : 파일 크기를 사용하여 파일 검색
mindepth : 검색을 시작할 하위 디렉토리 최소 깊이 지정
maxdepth : 검색할 하위 디렉토리의 최대 깊이 지정
atime : n일 이내에 액세스된 파일을 찾음 access
ctime : n일 이내에 만들어진 파일을 찾음 create
mtime : n일 이내에 수정된 파일을 찾음 modify
cnewer file : 해당 파일보다 최근에 수정된 파일을 찾음

 

 

 

  • ex
find /etc -name "*.conf" //확장자가 conf인 파일 검색
find /home -user centos //centos 사용자 파일 검색
find /usr/bin -size +10k -size -100k //10~100k 크기 파일 검색

 

 

 

 

https://colinch4.github.io/2021-01-14/Linux_Daemon_Cron/

작업 스케줄링
dnf -y install ntsysv  //데몬 설치

 

1. 데몬 : 항상 실행 중인 프로그램 (=상주 프로그램)
ex. 웹서버 => 항상 대기 중이며 클라이언트의 요청을 받을 준비 돼있음

2. cron : 주기적으로 프로그램 실행해주는 소프트웨어
=> 셸 명령어들이 주기적으로 실행하도록 규정해놓은 crontab (cron table) 파일에 의해 구동됨

 

3. at : 일회적인 작업 예약해주는 명령어

 

 

https://jhnyang.tistory.com/68
https://hello-i-t.tistory.com/110
https://soooprmx.com/cron-%EA%B8%B0%EC%B4%88-%EC%84%A4%EC%A0%95%EB%B2%95/
https://webdir.tistory.com/174
https://wlsvud84.tistory.com/32
https://jdm.kr/blog/2

  • crontab

crontab [옵션]

 

 

 

  • 옵션
-l : 현재 crontab에 작성된 내용들을 출력
-e : crontab 내용 작성 및 수정
-r : crontab 내용 삭제
-u : root가 해당 사용자의 crontab 파일을 다룰 때 사용

 

 

 

  • crontab 파일 문법

 

 

 

  • crontab 파일들이 속한 디렉토리

/etc/cron.hourly/, /etc/cron.daily/, /etc/cron.weekly/, /etc/cron.monthly/

 

각 디렉토리 내 스크립트 파일 저장 => 디렉토리별 주기마다 (매 시간, 매일, 매주, 매월 등) 해당 스크립트가 실행됨

 

 

 

  • ex
//run-parts라는 스크립트를 이용해서 해당 디렉토리 내 모든 실행파일 실행

01  *  *  *  * root run-parts /etc/cron.hourly 
//매일 매시 1분에 root 권한으로 /etc/cron.hourly 내 모든 스크립트를 실행한다.

02  4  *  *  * root run-parts /etc/cron.daily
//매일 새벽 4시 2분에 /etc/cron.daily 내 모든 작업을 실행한다.

22  4  *  *  0 root run-parts /etc/cron.weekly
//매주 일요일(0) 4시 22분에 주간 작업들을 실행한다.

42  4  1  *  * root run-parts /etc/cron.monthly
//매월 1일 4시 42분에 월간 작업들을 실행한다.

01 * * * * root echo "This command is run at one min past every hour"
//매시 1분에 실행

17 8 * * * root echo "This command is run daily at 8:17 am"
17 20 * * * root echo "This command is run daily at 8:17 pm"
//매일 8시, 20시 17분에 실행

00 4 * * 0 root echo "This command is run at 4 am every Sunday"
//매주 일요일 4시에 실행

 

 

 

https://tstigma.tistory.com/110

  • ex
wget https://bit.ly/3ScdOFX //3ScdOFX 웹으로부터 설치 (시간 강제 변경 파일)
mv 3ScdOFX openrdate.rpm //이름 변경
dnf -y install openrdate.rpm //파일 설치

gedit /etc/crontab 
//=> 05 05 15 * * root run-parts /etc/cron.monthly 저장

cd /etc/cron.monthly
touch myBackup.sh

//myBackup.sh 작성
#!/bin/sh  //#!: 어떤 프로그램으로 파일을 실행할지 정의 (=쉘스크립트로 실행할 것)
set $(date)
fname="backup-$2$3tar.xz" //월, 일 이름으로 저장
tar cfJ /backup.$fname /home  //home 디렉토리의 내용을 묶어 fname으로 저장 

mkdir /backup

systemctl restart crond  //시간 변경 전 cron 실행

cd

ls -l /backup
//=> 합계 0 

date 111505042022  //시간 강제변경 (아까 설치한 파일 이용)
systemctl restart crond //재실행

ls -l /backup
//=> 합계 4

rdate -s time.bora.net //시간 되돌리기

 

 

※ run-parts
특정 디렉토리 내 스크립트/프로그램을 실행시키는 명령어
알파벳 순서대로 정렬시켜서 실행

 

 

 

 

  • at

1. at 시간
2. 예약 명령어 입력 + enter키
3. 예약할 일
4. ctrl + D (완료)

확인 : at -l
삭제 : atrm 작업번호

 

 

 

  • ex
at 4:00 am tomorrow

dnf -y update

reboot

//ctrl +D 크릭

at -l //at 목록 확인

atrm 번호 //해당 번호 at 예약 삭제

 

 

 

 

https://jjluveeecom.tistory.com/21 
https://rarait.tistory.com/8

네트워크 관련 명령어
  • 네트워크 매니저 설정
nmtui

 

=> 자동/고정 IP 주소 사용 여부 / IP 주소, 서브넷 마스크, 게이트웨이 정보 / DNS 정보 등 설정 가능

 

 

 

 

  • DNS 서버 주소

=> URL을 해당 컴퓨터의 IP주소로 변경해줌

 

https://www.google.com 입력

→ /etc/resolv.conf 파일에 설정된 DNS서버에게 해당 URL의 IP주소를 물어봄

→ 그 IP주소의 컴퓨터로 접속

VMware => 게이트웨이, DHCP 서버, DNS 서버 역할을 모두 가상으로 제공

gedit /etc/resolv.conf  //dns 서버 설정 파일

 

 

 

 

  • SELinux : 네트워크 보안

SELinux 환경 => 해커가 시스템에 침입해도, 어플리케이션 사용 이상의 권한은 얻지 못함

 

 

 

  • ex
dnf install policycoreutils-gui  //셀리눅스 설치
selinux-config-selinux //셀리눅스 보안 설정 
// 강제모드 : 보안 관련 감지되면 시스템 작동 X 
// 허용모드 : 시스템 작동하지만 로그에 남음 
// 비활성화 : 보안 비활성화

 

 

 

 

파이프, 필터, 리디렉션
  • 파이프 ( | ) : 두 명령어 연결

파이프 앞의 명령어 출력 (뒤 명령어 방식으로)

 

ls -l /etc | more  //ls -l /etc 의 긴 내용 => more 명령처럼 페이지로 넘겨짐

 

 

 

 

  • 필터

주로 파이프와 함께 사용
명령어 : grep, tail, wc, sort, awk, sed 등

 

 

 

  • ex
ps -ef | grep bash  //시스템의 모든 프로세스 출력 -> bash 들어간 프로세스만 출력

 

 

 

 

  • 리디렉션 : 표준 입출력의 방향 바꿈

※ 표준 입력 : 키보드 / 표준 출력 : 화면

 

 

  • ex
ls -l > list.txt
ls -l 명령 결과 => 화면 출력 X, list.txt 파일에 저장 or 덮어쓰기

ls -l >> list.txt
ls -l 명령 결과 => list.txt 파일에 저장 or 이어쓰기 (덮어쓰기 X)

sort < list.txt
list.txt 내용을 정렬해 화면 출력

sort < list.txt > out.txt
list.txt을 정렬해, out.txt에 쓴다.

 

 

 

 

https://m.blog.naver.com/tlsrka649/221790188579

프로세스
  • 종류

포그라운드 프로세스 : 화면에 나타나 사용자와 상호작용하는 프로세스 
백그라운드 프로세스 : 실행되고 있지만 화면에 나타나지 않고 뒤에서 실행되는 프로세스

 

 

 

  • ex
yes > /dev/null  //yes: y 무한 출력 명령어 //프롬프트 깜빡이는 무한 루프 발생 (포그라운드)

ctrl + Z //포그라운드 프로세스 중단됨

bg //해당 프로세스가 백그라운드로 이동 (작업번호:1)

fg 1 //백그라운드로 이동한 프로세스를 포그라운드로 다시 이동 (yes > /dev/null 실행됨)

ctrl + Z //중단

ps -ef | grep yes //해당 프로세스 (yes) 번호 확인

kil -9 번호 //강제 종료

 

 

 

  • & : 백그라운드로 명령 실행

cf. vi 에디터 등 터미널 입출력 프로세스 => &을 붙여도 터미널에서 실행됨

 

 

 

 

응급 복구

root 사용자 비밀번호 잊어버렸을 때 가정하기

 

=>

1. 부팅 중 e 클릭 => edit 화면 표시

2. linux ~ 시작하는 문장 font 어절까지만 남기고 뒤 지우기

3. ctrl + x

4. 복구모드
whoami //사용자 확인 (root)
passwd //비밀번호 변경
//오류 발생 (root 파티션=> 읽기 전용)

mount -o remount, rw /  //재마운트 //root 파티션을 rw로 변경
passwd // 변경 완료

 

 

일반 사용자도 root 비밀번호 변경 가능 (▲) → edit 화면 잠금 필요

∴ GRUB 부트로더 (CentOs 부팅시 첫 화면)에도 비밀번호 설정해 root 사용자 권한 막아야 함

 

 

 

 

GRUB 부트로더

GRUB 설정 파일 : /boot/grub2/grub.cfg 
GRUB 링크 파일 :  /etc/grub2.cfg

 

 

 

 

  • 설정 변경 방법

1) /etc/default/grub , /etc/grub.d/ 디렉터리 파일들 수정
2) grub2-mkconfig 실행, 변경

 

 

https://m.blog.naver.com/tlsrka649/221791448164

  • /etc/default/grub 내용

 

=> 부팅때 전달하는 값들

 

 

 

  • ex. 설정 변경
gedit /etc/default/grub //=> 부팅 시간 수정
grub2-mkconfig -o /boot/grub2/grub.cfg //변경 적용
reboot

 

 

  • ex. GRUB 비밀번호 설정
gedit /etc/grub.d/00_header  

//=> 파일 내부에 하단 작성, 저장
cat << EOF
set superusers="이름"
password 이름 비밀번호
EOF

grub2-mkconfig -o /boot/grub2/grub.cfg

reboot

//=> 부트로더에서 edit 화면 방문 시 사용자, 비밀번호 입력해야 함

 

※ EOF : 멀티스트링 나열 시 셸스크립트에서 쓰는 형식