우리가 pc로 작업을 할때 한가지 작업만 하지 않고 인터넷 검색도 하면서 코딩도 하고 유튜브화면도 띄우듯 멀티태스킹을 한다.
리눅스에서 겉보기엔 한 화면만 나오기 때문에 한가지 작업밖에 못할 것 같지만 사실 멀티태스킹이 가능하다.
현재 작업하는 일은 '포그라운드', 이외의 작업은 '백그라운드'라고 한다.
우선 nano편집기로 프로그램을 작업한다고 가정을 하고 ^z를 누르면 home화면으로 빠져나온다.
얼핏보면 작업이 끝나서 홈화면으로 나온 것 같지만 사실 백그라운드로 프로그램이 대기하는것을 jobs명령어를 통해 할 수 있다.
~ nano
^z
~ jobs
보통 작업을 할 때 하나의 작업만 하지 않기 때문에 여러 작업을 띄워보자.
위 화면은 3개의 작업을 멀티태스킹으로 해 놓은 화면이다.
과연 이게 정말 백그라운드에서 작업을 하는지 알기위해 htop를 실행시키면 된다.
위 화면을 보면 단순히 ^z를 누르게 되면 프로그램이 백그라운드에서 실행되는 것이 아니라 해당 작업을 멈추고 홈 화면을 보여주는 것을 알 수 있다.
fg & kill
fg : 마지막으로 작업해 놓았던 화면으로 돌아간다.
fg %(숫자) : 숫자에 해당하는 작업으로 이동한다.
kill -9 %(숫자) : 숫자에 해당하는 작업을 끝낸다.
kill -9 -1 : 전체 작업 종료
두번째 작업을 끝낸것을 확인 할 수 있다.
지금까지 여러개의 작업을 띄우는 법을 알았고 만일 오래걸리는 작업이 있다면 해당 작업이 끝날때까지 지켜만 보고 있을 수는 없기 때문에 진짜 멀티태스킹을 하는 동작을 알아보자.
ls -R / 이라는 명령어를 작성하면 내 pc에 있는 모든 디렉토리랑 파일을 전부 화면에 출력하는 명령어 이다. 생각만 해도 상당히 오래 걸리는 작업이다.
이렇게 오래 걸리는 작업을 백그라운드에서 실행시키는 방법은 명령어 마지막에 &를 붙이면 된다.
ls -R / > result.txt 2> error.log &
# 결과가 출력되면 result.txt에 저장
# 에러가 나온다면 error.log에 저장
# 마지막에 &를 붙여줌으로써 백그라운드에서 계속 실행시킴
위와 같이 명령을 내리고 jobs의 상태를 보면 running으로 나타나고 htop을 통해서도 cpu가 바쁘게 동작하는 것을 알 수 있다.
데몬프로세스
데몬 프로세스란 현재 어떤 작업을 하고있든 항상 특정작업을 하는 프로그램을 말한다.
TV와 냉장고를 예로 들어보자.
TV는 우리가 필요할때 끄고 키면서 동작을 제어한다.
반면에 냉장고는 24시간 내내 냉장을 유지해야 한다.
이렇게 24시간 내내 작업을 하는 것을 데몬프로세스라고 생각하면 된다.
리눅스에서 대표적인 데몬프로세스로는 아파치(apache)라는 웹서버 프로세스가 있다.
먼저 아파치를 설치 후 데몬프로그램이 위치한 디렉토리(/etc/init.d)로 이동하자.
~ sudo apt-get install apache2
~ cd /etc/init.d
설치한 아파치가 /etc/init.d 디렉토리 안에 위치해 있는것을 알 수 있다.
데몬 프로세스를 실행하는법은 평볌한 프로그램을 실행하는 방법과는 다르게 앞에 service, 뒤에 start/stop라는 명령어를 통해 실행할 수 있다.
정말 데몬프로그램이 실행중인지 확인하는 방법은 다양하게 있지만 ps aux와 htop을 통해 확인해보자.
~ ps aux
~ htop
다시 데몬프로그램을 끄기 위해서 다음과 같이 작성하면 된다.
~ sudo service apache2 stop
'리눅스' 카테고리의 다른 글
[리눅스] 정기적 실행(cron) & wsl에서 cron안될때 해결법 (0) | 2022.01.27 |
---|---|
[리눅스] 디렉토리 구조 & 파일찾기 (0) | 2022.01.26 |
[리눅스] 쉘 스크립트 맛보기 (0) | 2022.01.25 |
[리눅스] I/O Redirection (0) | 2022.01.24 |
[리눅스] 패키지 매니저(apt, wget, git) (0) | 2022.01.22 |