리눅스 심화(1d) - 포그라운드 & 백그라운드, 작업 제어 및 예약

chaeyoung·2022년 5월 10일
0

리눅스(CentOS)

목록 보기
5/13
참고 자료
  • 쿠버네티스 5회차 리눅스 강의
  • 교재: 테크넷과 함께 하는 엔터프라이즈 리눅스 핵심 운영 가이드 vol.1

1. 포그라운드

  • 사용자가 입력한 명령 결과가 출력되는 프로세스

2. 백그라운드

  • 명령의 처리가 끝나면 곧 바로 프롬프트가 출력됨
  • 사용자가 다른 작업을 계속할 수 있음
  • 명령어 끝에 & 추가

출력 방향 전환

find / -name passwd > pw.dat 2>&1 &
  • 2>&1 : 오류 출력을 표준 출력 방향과 같게 하라

리다이렉션

  • <
    • 표준 입력 재지정
    • 키보드로 치는것과 같다.
cat < test.txt

는 키보드로 입력하는 것과 같다.

  • >

    • 표준 출력
  • >>

    • 표준 출력 이어쓰기
  • 2>

    • 표준 에러 덮어쓰기
  • 2>>

    • 표준 에러 이어쓰기
  • &>

    • 표준 출력 & 에러 덮어쓰기
  • &>>

    • 표준 출력 & 에러 이어쓰기
문제 hi.txt 파일을 만들고 내용을 대충 쓴다음 < hi2.txt에 stdin 입력 그리고 h3.txt로 이어쓰기
  • tip: cat 명령어 사용

3. 작업 제어

작업 목록 보기 jobs

  • 백그라운드 작업 목록 출력
  • 특정 작업 번호를 지정하면 해당 작업의 정보만 보여준다.
    • jobs %작업번호
  • 작업 목록

    • +) 가장 최근 작업, -) + 다음 순서 작업
  • 상태

    • Running, Done(정상 종료), Terminated(비정상 종료), Stopped
  • 작업 번호

    • [1], [2]... 등등
[root@localhost ~]# jobs
[1]   Running                 sleep 100 &
[2]   Running                 sleep 1000 &
[3]-  Running                 sleep 10000 &
[4]+  Running                 sleep 100000 &

작업 전환

포그라운드 ==> 백그라운드

  • bg %작업번호

백그라운드 ==> 포그라운드

  • fg %작업번호
문제) sleep 100 을 중지한후 back 전환 후 fore 전환

작업 일시 중지

  • Ctrl + z : 작업 중지

작업 종료

  • Ctrl + c : 인터럽트 종료
  • Ctrl + d : 정상 종료
  • kill %작업번호
    • kill 명령으로 강제 종료
      -PID 또는 %작업번호 사용

nohup

  • 터미널 세션이 끊겨도 실행을 멈추지 않고 동작하도록 함
  • 별도의 옵션을 설정하지 않으면 출력되는 메시지들을 nohup.out 파일에 저장
  • nohup으로 실행되는 쉘 스크립트의 퍼미션 상태는 755 이상이어야 한다.
  • 리눅스는 기본적으로 터미널에서 세션 로그아웃이 발생하면, 해당 터미널에서 실행한 프로세스들에게 HUP signal을 전달하여 종료시킨다. nohup 명령어는 이러한 HUP signal을 무시하도록 하는 명령어이기 때문에 터미널이 종료 되어도 프로세스들이 계속 실행된다.

기본 사용법

nohup [Process or shell_script] &

표준 출력과 에러를 따로 저장

nohup [Process or shell_script] > "stdout" 2> "stderr" &

로그 파일을 남기지 않을 경우

nohup [Process or shell_script] > /dev/null 2> &1 &
필요할 때 공부 다시하자

4. 작업 예약

at

  • 예약한 명령을 정해진 시간에 한 번 실행

at 명령 설정

  • at hh:mm yyyy-mm-dd
  • at now +5min
  • 명령어 입력
  • done

at 작업 파일 확인

  • ls -l /var/spool/at
  • root 사용자만 /var/spool/at 디렉터리 내용 확인 가능

at 작업 목록 확인

  • at -l
  • atq

at 작업 삭제

  • atrm
  • at -d

at 명령 사용 제한

  • /etc/at.allow 와 /etc/at.deny
  • 한 줄에 사용자 이름을 하나씩만 기록
  • /etc/at.allow 이 파일에 있는 사용자는 at 명령 사용 가능 /etc/at.deny 파일은 무시됨
  • /etc/at.allow 파일이 없고 /etc/at.deny 파일에 있는 사용자는 at 명령 사용 불가
  • 두 파일 모두 없으면 root 만 at 명령 사용 가능
  • /etc/at.deny가 empty 상태면 모든 사용자가 at 명령어 사용 가능 , 이것이 초기 설정
at 명령어 문제
  • 1번: 매일 오후 4시 30분에 ls -l 명령어 예약후 작업 파일 및 목록 확인 후 삭제
  • 2번: /etc/at.deny에 user01 추가하고 user01에서 1번 문제 풀어보기 안되면 user01 지우고 다시 1번 문제 수행

crontab

  • 주기적인 작업 예약
  • -e : 사용자의 crontab 파일 편집
  • -l : crontab 파일 목록 출력
    - r : crontab 파일 삭제 ==> crontab -e를 사용하여 삭제
  • crontab -e 명령으로 편집한 파일 생성시 ls -l /var/spool/cron 디렉터리에 사용자 이름으로 생성

crontab 작성 형식

  • 작업 필드 형식
요일작업내용(명령어+경로)
  • 메타 문자

    • * 조건에 대해 참
    • - : 주기 지정 ex) 1-7 : 1부터 7까지
    • , : 다수의 값 지정
    • / : 조건에 대한 주기 지정
  • crontab -e : 파일 생성하고 편집

  • /tmp/crontab.[임의문자열] 형태의 임시 파일 생성

  • 필드의 구분자는 공백

  • 문제
    • 매월 3일 오전 9시 30분에 지정된 명령 실행
    • 매주 화요일 오후 3시에 5분마다 지정된 명령 실행
    • 1월 매주 일요일 오전 1시부터 오전 3시까지 지정된 명령 실행
    • 매월 첫 번째 수요일 오전 8시와 오후 7시에 지정된 명령 실행
  • crontab file_name

  • 파일 생성후 corntab 필드 형식에 맞게 작성

  • crontab filename 명령 형식으로 주기적 작업 예약

  • cat 명령어로 확인해보기 (교재 74p)

  • crontab -l

  • crontab 명령을 사용하여 작업 확인

  • crontab -r

    - crontab 명령을 사용하여 작업 제거

  • 예약된 모든 작업 삭제

    • 예약된 모든 작업이 삭제되기 때문에 매우 큰 주의가 필요하다
    • 예약된 작업을 하나씩 제거하기 위해서는 crontab -e 명령으로 해당 파일에 접근하여 하나씩 제거해야 한다.

crontab 명령 사용 제한

  • /etc/cron.allow 와 /etc/cron.deny
  • 한 줄에 사용자 이름을 하나씩만 기록
  • /etc/cron.allow 이 파일에 있는 사용자는 crontab 명령 사용 가능 /etc/cron.deny 파일은 무시됨
  • /etc/cron.allow 파일이 없고 /etc/cron.deny 파일에 있는 사용자는 crontab 명령 사용 불가 반대로 /etc/cron.demy 파일에 이름이 없으면 crontab 명령 사용 가능
  • 두 파일 모두 없으면 시스템 관리자만 crontab 명령 사용 가능
시간 남을때
  • 75p ~79p 복습
  • ch 3 복습하기
  • 쿠버네티스 d 드라이브 1일차 문제 복습
profile
안녕하세요! 풀스택 개발자가 되고싶은 윤채영입니다. 제 블로그에 방문해주셔서 감사합니다!~~

0개의 댓글