그동안 콘솔로 작업을 하는 경우에 파일을 실행시키거나 여러 개의 업무가 있는 경우에 백그라운드로 실행하는 방식으로 업무를 진행하였습니다. 일반적으로는 상관이 없었으나 큰 파일을 작업하는 등 작업에서 자주 실행 중간에 끊깁니다. 해당 문제를 해결하는 방법을 알아보려고 합니다.
리눅스 프로그램 실행
./example.sh
./example.sh A
우선 일반적으로 자신의 위치에서 파일명을 입력하면 실행됩니다. argument가 있는 경우에는 오른쪽에 추가하면됩니다.
백그라운드 실행
./example.sh &
백그라운드 프로세스는 사용자가 직접 간섭하지 않아도 뒤에서 실행하도록 하는 방법입니다. 주로 로그 처리, 시스템 모니터링 스케줄링 등 다양한 작업에서 사용됩니다. 일반적으로 터미널에서 프로그램을 실행시키면, 프로그램이 실행 과정과 출력 기록을 처음부터 끝까지 보게 됩니다. 동시에 여러 프로그램을 실행해야 하는 상황에서는 명령어 뒤에 &를 붙여 백그라운드에서 실행할 수 있습니다. 해당 방식을 통하여 사용자가 다른 작업을 이어서 수행하며, 백그라운드 프로세스는 독립적으로 계속 실행하게 됩니다.
터미널이 끊겨도 계속 실행
nohup ./example.sh &
nohup명령어의 nohup은 no hang up을 줄입니다. 간단하게 '끊지 말라'는 명령어입니다. 터미널의 세션이 종료되더라도 명령어를 계속 실행하게 됩니다. 일반적으로 터미널이 닫으면 세션이 끊어지고 파일 실행이 종료되지만, nohup을 사용하는 경우에는 터미널이 끊어져도 프로그램이 계속 실행됩니다. 예시 명령어는 example.sh 스크립트가 백그라운드에서 터미널과 상관없이 계속 실행하게 됩니다.
chmod ./example.sh 755
추가로 해당 명령어를 실행하기 위해서는 꼭 755 이상의 권한을 설정해야 합니다. 해당 권한 설정은 소유자에게는 읽기, 쓰기, 실행 권한을, 그룹과 다른 사용자에게는 읽기와 실행 권한을 제공합니다.
nohup ./example.sh & > /dev/null
또한 nohup 명령어를 사용하는 경우 nohup.out 파일이 생깁니다. 여기서 nohup.out의 위치를 /dev/null로 설정하면 안 나오게 됩니다. /dev/null은 파일이 있는 경우 삭제됩니다.
실행한 프로세스를 종료하기
ps -ef | grep example.sh
kill -9 <PID>
터미널에서 직접 실행했을 경우에 Ctrl + C로 강제로 종료할 수 있습니다. 하지만 프로그램을 정상적으로 종료하기 위해서 프로세스 id를 입력하고 kill 명령어를 통하여 종료합니다.
ps -ef 명령어를 입력하면 위 이미지 처럼 프로세스 실행 목록이 나옵니다. 자신이 찾는 명령어의 PID를 kill -9 명령어에 입력하면 정상적으로 종료됩니다.
Reference
https://jokerkwu.tistory.com/190
리눅스 백그라운드 실행
1. 백그라운드 실행 $ 명령어 & 명령어 뒤에 &을 붙이면 백그라운드에서 작업을 실행한다. &만 사용하여 실행했을 때, 사용자가 터미널 세션을 끊어버리면 백그라운드 중인 작업도 같이 종료된다.
jokerkwu.tistory.com
'컴퓨터 > Linux' 카테고리의 다른 글
Linux (6) - CLI 환경을 GUI 환경으로 만들어보자 (0) | 2024.01.17 |
---|---|
Linux (5) - 커맨드를 이용하여 인터넷을 세팅하자 (ifconfig) (0) | 2023.12.14 |
Linux (4) - 리눅스로 파일 찾기, 파일 속 문자 찾기 (find, grep) (1) | 2023.10.23 |
Linux (3) - Linux, Apache, MySQL, PHP 구축하기 (LAMP) (0) | 2023.01.11 |
Linux (2) - 터미널로 압축 및 압축해제 하기 (0) | 2022.06.05 |