[Linux] Chapter 6 : 프로세스

Lern-Backup·2021년 10월 25일
0

Linux

목록 보기
4/9

📗 6.1 프로세스

  • 프로세스(process)는 실행 중인 프로그램
    $ ps : 현재 시스템 내에 존재하는 프로세스들의 실행 상태를 요약해서 출력
    $ ps -f : 보다 자세한 정보를 보여줌

  • ps 명령어는 옵션을 사용하면 프로세스의 다양한 상태정보 출력 가능
    $ -a : 모든 사용자의 프로세스를 출력
    $ -u : 프로세스에 대한 좀 더 자세한 정보를 출력
    $ -x : 더 이상 제어 터미널을 갖지 않는 프로세스들도 함께 출력
    $ -e : 현재 시스템 내에 실행 중인 모든 사용자 프로세스 정보를 출력
    $ -f : 프로세스에 대한 좀 더 자세한 정보를 출력

  • $ ps -aux ➡ 모든 프로세스 정보 출력

특정 프로세스 리스트

  • 파이프와 grep 명령어를 사용해 리스트
    $ pgrep [옵션] [패턴] : 패턴에 해당하는 프로세스들만을 리스트
    $ -l : PID와 함께 프로세스의 이름을 출력
    $ -f : 명령어의 경로도 출력
    $ -n : 패턴과 일치하는 프로세스들 중에서 가장 최근 프로세스만을 출력
    $ -x : 패턴과 정확하게 일치되는 프로세스만 출력
  • ex ) $ ps -ef | grep -w sshd : 현재 서버에서 실행 중인 프로세스들 중에 sshd 단어가 포함된 프로세스들만 찾아서 보여줌

📗 6.2 작업 제어

쉘과 프로세스

쉘은 사용자가 입력한 명령어를 실행하기 위해 새로운 자식 프로세스를 생성하여 이 프로세스로 하여금 입력된 명령어(프로그램)을 실행하게 함

전면 처리 : 쉘 프로세스는 명령어를 입력받으면 자식 프로세스를 생성하고 이 자식 프로세스가 입력된 명령어를 실행하게 하고 쉘은 자식 프로세스의 실행이 끝날 때까지 기다림

쉘 재우기

  • $ sleep 초 : 명시된 시간만큼 쉘의 실행을 중지시킴
    $ (echo 시작; sleep 50; echo 끝)

  • 강제 종료
    Ctrl+C

  • 실행 중지
    Ctrl+Z

후면 작업 ➡ 전면 전환

  • $ fg : 중지된 작업을 다시 전면에서 실행시킴
  • $ fg %작업번호 : 작업번호에 해당하는 후면 작업을 전면 작업으로 전환

전면 작업 ➡ 후면 작업

  • 먼저 Ctrl+Z 키를 눌러 전면 작업 중지
  • bg %작업번호 : 작업번호에 해당하는 중지된 작업을 후면 작업으로 전환하여 실행

입출력 제어

  • 출력 재지정을 이용해 후면 프로세스의 출력을 파일에 저장하거나 파이프를 이용해 메일로 보낼 수 있음
    $ find . -name test.c -print > find.txt &
    $ find . -name test.c -print | mail kwonjeong &

  • 후면 프로세스가 입력을 받으려면?
    $ 명령어 < 입력파일 &


📗 6.3 프로세스 제어

프로세스 끝내기

  • 프로세스 번호(작업번호)에 해당하는 프로세스를 강제로 종료
    $ kill 프로세스 번호
    $ kill %작업번호

프로세스 기다리기

  • 프로세스 번호로 지정한 자식 프로세스가 종료될 때까지 쉘을 기다리게 함
  • 번호를 지정하지 않으면 모든 자식 프로세스가 끝나기를 기다림
    $ wait [프로세스 번호]

로그아웃 후에도 프로세스 실행하기

  • 명령어의 결과는 nohup.out. 파일에 저장
    $ nohup 명령어 [인수] &

프로세스 우선순위 조정

  • 우선순위는 19(낮음) ~ -20(높음)임
  • 보통 명령어를 실행하면 우선순위 0으로 실행
  • 오직 root만이 음수부여 가능
    $ nice [-n 조정수치] 명령어 [인수들]
    $ nice -n 10 ps -ef : 우선순위 조정해 ps 명령어 실행
  • 이미 수행 중인 프로세스 우선순위 변경
    $ renice [-n] 우선순위 [-gpu] PID
    $ -g : 해당 그룹명 소유로 된 프로세스
    $ -u : 지정한 사용자명의 소유로 된 프로세스 의미
    $ -p : 해당 프로세스의 PID 지정

📗 6.4 프로세스의 사용자 ID

실제 사용자 ID와 유효 사용자 ID

  • 실제 사용자 ID(real user ID) : 프로세스를 실행시킨 사용자의 ID
  • 유효 사용자 ID(effective user ID) : 프로세스의 현재 유효한 사용자 ID
    $ id [사용자면] : 사용자의 실제 사용자 ID, 유효 사용자 ID, 그룹 ID 등을 보여줌

set-user-id와 set-group-id

  • set-user-id라는 특별한 실행권한이 설정된 실행파일을 실행하면 이 프로세스의 유효 사용자 ID는 그 실행파일의 소유자로 바뀌게 되어 결과적으로 이 프로세스는 실행되는 동안 그 파일의 소유자 권한을 갖게 됨
  • set-user-id ➡ 앞부분 4거나 소유자에 s 추가
    $ chmod 4755 파일
    $ chmod u+s 파일
  • set-group-id ➡ 앞부분 2거나 소유저에 s 추가
    $ chmod 2755
    $ chmod g+s

📗 6.5 시그널과 프로세스

시그널

  • 프로그램 실행 중 예기치 않은 사건이 발생하면 이를 실행 프로그램에 알려줄 수 있어야 함

시그널 종류

  • kill -l 정의된 모든 가능한 시그널 리스트

kill 명령어를 이용한 시그널 보내기

  • 프로세스 번호(작업 번호)로 지정된 프로세스에 원하는 시그널을 보냄
  • 시그널을 명시하지 않으면 SIGTERM 시그널을 보내 해당 프로세스를 강제 종료
    $ kill [-시그널] 프로세스번호
    $ kill [-시그널] %작업번호
profile
공부 백업용

0개의 댓글