본문 바로가기
프로그래밍/리눅스

프로그래밍 「 리눅스 편」백그라운드에서 작업 실행(UNIX)

by grapedoukan 2023. 6. 13.
728x90

백그라운드에서 작업 실행

이 기사에서는 UNIX의 백그라운드에서 작업을 실행하는 방법을 배울 것입니다. 멀티태스킹 시스템에서 사용자는 한 번에 여러 프로세스(작업)를 실행할 수 있습니다.

  • 포그라운드에서 하나의 작업만 실행되므로 다른 모든 작업은 백그라운드에서 실행됩니다(따라서 나머지 잽은 백그라운드에서 실행되어야 함).
  • UNIX에서는 쉘 명령 & (AND) nohup 명령을 사용하여 백그라운드에서 작업을 실행할 수 있습니다.

&: 로그아웃 없음

  • 여기서 & (AND) 연산자는 백그라운드에서 작업을 실행하는 데 사용되지만 세션이 닫히면 프로세스가 자동으로 종료된다는 것을 의미하는 로그 아웃 안전이 없습니다.

참고: 초기에는 컴퓨터에 GUI(그래픽 사용자 인터페이스)가 없는 터미널만 있었습니다. 따라서 사용자는 터미널을 통해 시스템에 로그인해야 하며, 이 로그인을 세션이라고 합니다.

<UNIX COMMAND> &
bennison@yavar:~$ sort -o test.txt test.txt &
[1] 20269
[1]+  Done                    sort -o test.txt test.txt
bennison@yavar:~$
  • 정렬 명령이 하는 일은 ASCII 값을 기반으로 파일의 데이터를 정렬하는 것입니다. 여기서 -o(옵션)는 출력을 다른 파일에 쓰는 데 사용됩니다.
  • & (AND) 연산자 다음에 명령을 실행하면 해당 프로세스가 백그라운드에서 실행되기 시작합니다 (포 그라운드가 아님). 터미널에서 해당 작업의 PID를 보여줍니다.
  • 작업(프로세스)이 백그라운드에서 실행될 때 프로세스의 PID를 인쇄하고 프롬프트가 즉시 반환됩니다.
  • 백그라운드 작업 표준 오류 메시지는 터미널에 표시되거나 표시되지 않을 수 있으며 기본적으로 사용 중인 셸에 따라 다릅니다.
  • 이렇게 하면 백그라운드에서 우선 순위가 낮은 작업을 실행하고 포그라운드에서 가장 우선 순위가 높은 작업을 실행할 수 있습니다.

nohup: 안전하게 로그아웃

  • 사용자가 로그아웃할 때 백그라운드 작업을 백그라운드에서 실행해야 하는 경우. 쉘 프로세스가 종료되면 모든 하위 프로세스가 자동으로 종료됩니다 (기본적으로 사용자가 로그 아웃 할 때 발생합니다).
  • 로그 아웃을 사용하여 백그라운드에서 작업을 안전하게 실행하려면 접두사 nohup (no hangup)과 접미사 &(AND)를 사용하여 명령을 실행해야합니다.
nohup sort test.txt &
bennison@yavar:~$ nohup sort test.txt &
[1] 35853
nohup: appending output to 'nohup.out'
[1]+  Done                    nohup sort test.txt
bennison@yavar:~$
  • 이번에도 쉘은 작업(프로세스)의 PID를 반환합니다.
  • nohup은 명령의 표준 출력을 nohup.out 파일에 저장(추가)합니다.
  • 이제 사용자가 로그 아웃 할 때 프로세스가 백그라운드에서 어떻게 실행될 수 있는지 질문 할 수 있습니다. nohup과 함께 명령을 실행하면 커널은 작업의 PPID를 모든 셸의 상위 인 시스템 초기화 프로세스 ()에 다시 할당합니다.PID 1
  • 이런 식으로, nohup과 함께 실행되는 프로세스의 혈통을 인수합니다.init process
728x90