명령을 background에서 동작시키려면 명령어 뒤에 &를 붙이면 된다.

명령어 &

 

이미 foreground 로 실행중인 프로세스를 background 로 보내려면 Ctrl+z 를 누르면 된다.

그러면 foreground 로 실행중이던 프로세스가 멈추며(Stopped) jobs 리스트에 들어가게 된다.

jobs 명령어를 통해 나오는 리스트에서 내가 방금 멈춘 명령어의 숫자를 n 이라고 하면

bg % n 명령어를 이용하여 background 에서 동작시킨다.

bg %1

bg 가 실행되면 명령어 뒤에 &가 붙은채 background 로 프로세스가 동작하게 된다.

 

background 로 실행중인 프로세스를 다시 foreground 로 실행시키려면 bg 명령어 대신 fg 를 사용한다.

jobs 명령어를 통해 나오는 리스트에서 foreground 로 동작시키고 싶은 프로세스의 숫자를 n 이라고 하면

fg % n 명령어를 이용하여 foreground 로 동작시킨다.

fg %1

 

jobs 명령어로 나타나는 리스트에 +, - 는 기호를 볼 수 있다.
+는 fg나 bg 명령어를 실행했을 때 먼저 수행하게 될 프로세스를 의미한다.
-는 현재 진행중인 job이 끝난 이후, 그 다음에 수행될 프로세스를 의미한다.


jobs 명령어로 나타나는 리스트에서 프로세스의 상태를 볼 수 있다.

Stopped : Ctrl+z 혹은 Ctrl+c 같은 인터럽트(signal)에 의해 중지 또는 대기 상태인 프로세스
Running : 현재 동작중인 프로세스
Done : 수행이 마무리 된 프로세스

 

ssh 원격 접속을 풀거나, 로그아웃하거나, 터미널 창이 닫혀도

프로세스가 background 에서 계속 동작할 수 있도록

명령어 앞에 nohub 을 붙여준다.

nohup 명령어 &

 

background 에서 동작하는 프로세스는 표준 출력이 모니터가 아니라서 로그를 볼 수 없다.

따라서 리다이렉션을 이용하여 다른 곳에 저장하여 보자.

예를 들어

nohup ./test.sh 1> stdout.log 2> stderr.err &

 

+ Recent posts