리눅스

process

정지홍 2024. 7. 10. 09:28

 

/bin or /usr/bin에 대해서

 

아래 2개의 경로에 보면 실행 가능한 명령어들이 존재한다.

이 둘의 차이점은 /bin은 부팅과정에서 적용되는 것들이며 /usr/bin은 부팅이 끝나고 해당 사용자에게만 적용되는 것들이다.


 

/usr/local/<ps_name> or /opt/<ps_name> or /usr/lib/<ps_name> or /var/lib/<ps_name>

/usr/local/<processName>

# 해당 경로는 시스템에 기본으로 제공되는 소프트웨어와 구분하여 
# 로컬에서 설치된 소프트웨어를 저장하는 데 사용

# 일반적으로 apt , yum과 같은 패키지 관리자를 사용하지 않고 직접 설치한 프로그램들이 위치
# /usr는 시스템 전체에 대한것..... /usr/local은 해당 유저에만 설치한것....

/opt/<processName>

# 대규모의sw패키지 설치할때 사용


/usr/lib/<processName>
# 시스템의 라이브러리 파일을 저장하는데 사용

/var/lib/<processName>
# 시스템이 실행되는 동안 변경될 수 있는 데이터 파일을 저장하는 데 사용
# var/lib는 애플리케이션의 상태 정보, 데이터베이스 파일, 로그 파일 등을 포함 가능
# db yum 등에서 자주 사용


=====================================================================================

 

 

 


  /etc/<processName> 에 설정 저장

  • /etc디렉토리는 주로 시스템의 설정 파일들을 저장하는데 사용됨
  • 시스템의 설정 파일뿐만 아니라 개별 애플리케이션의 설정 파일도 들어감.

 

 


 

 

프로세스 생성

root@jeongjihong:/usr/local/jeongTest# cat HELLO
#1 /usr/bin/env bash
echo "hello jeong"
sleep 60
# 내가 실행할 파일

root@jeongjihong:/usr/local/jeongTest# chmod +x HELLO
root@jeongjihong:/usr/local/jeongTest# ./HELLO &
[1] 11870
# 백그라운드로 실행

root@jeongjihong:/usr/local/jeongTest# ps
    PID TTY          TIME CMD
   9855 pts/6    00:00:00 sudo
   9856 pts/6    00:00:00 su
   9857 pts/6    00:00:00 bash
  11870 pts/6    00:00:00 bash
  11871 pts/6    00:00:00 sleep
  11886 pts/6    00:00:00 ps
  
root@jeongjihong:/usr/local/jeongTest# ps
    PID TTY          TIME CMD
   9855 pts/6    00:00:00 sudo
   9856 pts/6    00:00:00 su
   9857 pts/6    00:00:00 bash
  12153 pts/6    00:00:00 ps
[1]+  Done                    ./HELLO

 

 


/var/run/<processName>.pid 파일에 본인의 pid 를 저장

 

root@jeongjihong:/usr/local/jeongTest# cat hello.sh
#!/bin/bash
# 프로세스 이름 설정
process_name="HelloWorld"
# PID 파일 경로 설정
pid_file="/var/run/${process_name}.pid"
# 현재 프로세스의 PID를 PID 파일에 저장
echo $$ > "$pid_file"

echo "Hello, World! My PID is $$"
sleep 60


root@jeongjihong:/usr/local/jeongTest# ./hello.sh &
[1] 14725
Hello, World! My PID is 14725

root@jeongjihong:/var/run# cat HelloWorld.pid
14725

 

 

 

 


/var/log/<processName> 에 log 저장

 

우선 로그를 /var/log/processname디렉토리에 저장할 예쩡이다.

그리기 위해서 우선 mkdir.

 

그리고 다음과 같이 작성함.

root@jeongjihong:/var/log# vi hello.sh

실행권한 부여해야함
744로 설정
그리고 런

 

그리고 위에서 실행을 했으니 로그가 잘 찍혔는지 확인한다.

잘 되었음

 

 


프로세스 확인

ps -ef | grep을 사용하면 됨

여기에서 e는 every process의 약자이며 모든 ps출력해줌.... f는 full format의 약자로, 프로세스 정보를 자세히 출력

 

 


 kill -option pid

 

  • -15 (SIGTERM): 정상 종료 요청. 프로세스가 종료될 시간을 가집니다. 기본 시그널
  • -9 (SIGKILL): 강제 종료. 프로세스를 즉시 종료
  • -1 (SIGHUP): 설정을 다시 로드하거나 재시작
  • -11 (SIGSEGV) : 주로 프로그램이 잘못된 메모리 접근을 시도했을 때 발생. 즉, 시스템이 일으키는 시그널
  • SIGINT (2) : 인터럽트 시그널. 일반적으로 Ctrl+C로 보냄
  • SIGQUIT (3) : 종료 시그널. 일반적으로 Ctrl+\로 보