Linux Background에서 실행 및 종료

| 2020년 12월 10일 | 0 Comments

Linux 환경에서 백그라운드로 실행하는 방법 여러가지가 있습니다.

 

1번째 Ctrl+Z

#vi abc.txt

Ctrl+Z를 누르면 현재 프로그램을 백그라운드에서 실행 되도록 합니다.

다시 프로그램으로 화면전환한다면 fg 또는 fg 1% 를 입력하시면됩니다.

 

2번째 &

 

다른 방법으로는 어떤 프로세스를 백그라운드(background)로 실행하기 위해서는 일반적으로는 뒤에 “&” 붙여 실행하게 됩니다.

 

./test 일때 실행하면 

 

./test& 일때

Ctrl+C 로 강제종료하면 종료됩니다.

& 로 실행하게 되면 shell 이 종료되거나 shell 접속을 끊어지거나 사용자 로그아웃을 하게 되면 프로세스가 중단됩니다.

 

3번째 nohup

 

특정 프로그램을 지속적으로 실행되고 있는 상태로 만들기 위해서는 nohup 명령을 사용합니다. 백그라운드로 프로세스를 실행하기 위해서는 nohup 명령어 뒤에 실행할 커맨드를 입력하면 됩니다.

 

nohup [command프로세스] &

 

입력하면  nohup.out 이라는 파일이 생기면서 command프로세스는 파일에 입력이 됩니다.

 

ex)  nohup echo hello &

 

ex) vi nohup.out

[command프로세스] 부분에 실행하고자 하는 프로그램이나 스크립트를 지정하면 됩니다.

작성한 스크립트를 넣어도 되는데 스크립트 파일의 권한이 755 이상이어야 합니다.

일반적으로 nohup 명령어를 사용할 때는 백그라운드 작업으로 실행하는 경우가 많기 때문에 뒤에 & 를 붙여서 백그라운드 실행이라는 것을 명시해 줍니다.

nohup.out 파일을 생성하지 않으려면 표준출력과 표준에러를 /dev/null 로 재지향 해주면 됩니다.

 

nohup [command프로세스] 1>/dev/null 2>&1 &

 

1>/dev/null 은 표준 출력을 사용하지 않겠다는 의미이고, 2>&1 은 표준 에러를 표준 출력과 같게 만드는 명령어입니다.

nohup 으로 실행한 프로세스를 종료하려면 먼저 ps 명령어로 PID를 식별한 다음, kill 명령어를 사용하여 해당 프로세스에 종료 시그널을 보내서 종료해야 합니다. nohup 으로 실행한 프로세스를 종료하려면 먼저 ps 명령어로 PID를 식별한 다음, kill 명령어를 사용하여 해당 프로세스에 종료 시그널을 보내서 종료해야 합니다. 

 

ps -ef | grep [프로세스명]

 

# PID 식별 후

kill -15 [PID]

 

# 종료되지 않으면 강제 종료 (비권장)

kill -9 [PID]

Category: LINUX

Avatar

About the Author ()