본문 바로가기

백그라운드에서 실행 중인 작업을 다시 포그라운드로 가져오고 싶다면, fg 명령어를 사용하면 됩니다. 다음은 이 과정을 단계별로 설명합니다:

  1. 먼저, 현재 세션에서 실행 중인 백그라운드 작업의 목록을 확인합니다. 이를 위해 jobs 명령어를 사용할 수 있습니다. 이 명령은 모든 백그라운드 작업과 각 작업에 할당된 번호를 보여줍니다.
jobs
  1. jobs 명령의 출력에서, 포그라운드로 가져오고 싶은 작업의 번호를 확인합니다. 이 번호는 대괄호([]) 안에 표시됩니다.

  2. 이제, fg 명령어와 함께 해당 작업 번호를 사용하여 백그라운드 작업을 포그라운드로 이동시킬 수 있습니다. 예를 들어, 백그라운드 작업 번호가 1인 작업을 포그라운드로 가져오고 싶다면 다음과 같이 입력합니다:

fg %1

여기서 %1jobs 명령어로 확인한 백그라운드 작업의 번호입니다. 작업 번호는 작업을 유니크하게 식별하는데 사용됩니다.

fg 명령어를 사용하면 해당 백그라운드 작업이 포그라운드로 전환되어, 터미널 입력을 해당 작업으로 다시 할당하게 됩니다. 만약 여러 백그라운드 작업이 있다면, 각 작업을 fg %작업번호 형식으로 포그라운드로 가져올 수 있습니다.

jobs 에 나오지 않는 백그라운드 작업은?

ps -ef 명령어로 확인할 수 있는 프로세스와 jobs 명령어로 나열되는 작업 사이에는 중요한 차이가 있습니다. jobs 명령어는 현재 쉘 세션과 관련된 백그라운드 작업만을 나열합니다. 즉, 현재 사용자가 시작한 백그라운드 작업과 직접 관련이 있는 것들만 보여줍니다. 반면에 ps -ef는 시스템상의 모든 프로세스를 보여주므로, 다른 사용자나 시스템 자체에 의해 시작된 프로세스도 포함됩니다.

jobs 명령어로는 나타나지 않는 백그라운드 프로세스를 fg 명령어를 통해 포그라운드로 가져오는 것은 직접적으로 불가능합니다. 이러한 프로세스는 현재 쉘 세션의 일부가 아니기 때문에, fg 명령어의 대상이 될 수 없습니다.

그러나, 특정한 경우에는 reptyr 같은 도구를 사용하여 다른 세션의 백그라운드 프로세스를 현재 쉘 세션으로 가져올 수 있습니다. reptyr은 프로세스의 제어 터미널(TTY)을 현재 세션으로 변경하는 도구로, 이를 통해 다음과 같이 특정 프로세스를 현재 쉘 세션으로 가져올 수 있습니다:

  1. ps -ef 또는 pgrep 명령어를 사용하여 포그라운드로 가져오고 싶은 프로세스의 PID(프로세스 ID)를 찾습니다.
  2. sudo reptyr PID 명령어를 실행하여 해당 프로세스를 현재 쉘 세션으로 옮깁니다.

이 방법을 사용하기 전에, reptyr이 시스템에 설치되어 있는지 확인하거나 필요한 경우 설치해야 할 수도 있습니다. reptyr을 사용하는 것은 일부 제한이 있을 수 있고, 모든 경우에 작동하는 것은 아니므로, 사용 전에 해당 도구의 문서를 참조하는 것이 좋습니다.

B로그0간

개발 관련 글과 유용한 정보를 공유하는 공간입니다.