리눅스: 프로세스와 실행
프로세스란 무엇인가??
깊게 기계적인 차원에서 살펴볼 것이다.
프로세스를 모니터링 하는 방법.
우선적으로 하드웨어에 대한 공부를 해보자.
CPU (중앙처리장치-프로세서)
RAN (메모리)
SSD, HDD (저장장치, 스토리지라고 한다)
실행되는 프로그램을 읽어서 메모리에 적재를 시킨다. 사용되지 않는 프로그램은 저장장치에 존재한다.
그렇다면 메모리에 올라와있느 상태의 프로그램은 cpu가 메모리에 적재되어있는 프로그램을 계산한다. 저장장치는 읽는 속도가 느리기 때문에 Ram을 사용하는 것이다.
실행되고 있는 상태의 프로그램을 프로세스, 프로세서가 처리하는 것이다.
프로세스 모니터링
프로세스의 리스트를 보는 방법.
ps라는 명령은 현재 진행중인 프로세스의 리스트를 보여준다.
top을 사용했을 때 나오는 화면이다. 어떤 프로세스가 실행중인지 상세 정보를 보여주는 화면이다.
상당히 그래픽한 디자인을 구현하고 있다. 상단에는 CPU의 코어 사용량을 보여주고 하단에는 프로세스들의 상세한 정보들을 담고 있다.
백그라운드 실행
여러개의 일을 하나의 화면에서 할 수 있다 라는 것은 멀티테스킹이라고 한다. 보통 GUI에서 사용할 때는 ALT + TAB을 사용해서 왔다갔다 할 수 있다. 이게 가능한 이유는 백그라운드에 프로그램이 실행되어서 그렇다. 이런 과정을 리눅스에서도 사용 가능하다.
ctrl +z 를 하면 현재 실행중인 프로그램을 백그라운드로 보내는 단축키 입니다.
jobs 백그라운드에 실행중인 프로그램을 확인할 수 있다.
kill
bg
fg
데몬
데몬이라고 하는 프로그램들은 항상 실행되고 있다라는 특성을 가지고 있다.
ls, mkdir, rm이라는 프로그램들은 내가 사용하고 싶을 때만 킬 수 있다.
데몬을 비유적으로 표현해보자.
냉장고와 티비를 확인해보자. 냉장고는 항상 켜져있지만 티비는 그렇지 않다. 항상 켜져있는 것은 언제 그 가전제품을 사용할 지 모르기 때문에 항상 켜져있는 것이다.
웹브라우저는 클라이언트, 서버에 데이터를 요청한다.
먼저 웹브라우저를 이용한다고 가정해보자.
여기에서 웹브라우저는 클라이언트라고 한다. 클라이언트는 사용자가 해당 정보를 요청하면 서버에 연결해서 데이터를 가져와서 사용자에게 제공해주는 시스템이다. 그렇기 때문에 서버는 사용자가 언제 정보를 요청할 지 모르기 때문에 항상 켜져있어야 한다. 이런 류의 프로그램을 데몬 프로그램이라고 한다.
이제 이런 데몬 프로그램을 어떻게 실행시킬 것인지를 확인하자
보통 데몬 프로그램은 서버가 많다. 이중에서 우리는 웹서버 중에 아파치라는 웹서버를 이용해볼 것이다.
/etc/init.d
service 라는 명령어를 이용한다.
그리고 데몬을 실행하고 끄는 명령어는 start stop을 이용해서 켜고 끌 수 있다.
일반적인 프로그램은 그냥 켜고 끌 수 있지만 데몬은 service를 이용해서 우회해서 사용된다.
링크를 걸어서 다른 위치에서 실행하는 프로그램도 있다. 이것은 따로 다룰 것이다.
언제나 실행되고 있어야 하는 프로그램, 데몬
자동으로 실행시키고 싶은 프로그램이 있으면 /etc/rc3.d 라는 곳에 링크를 걸어서 실행시키면 된다.
이번 시간에 살펴볼 내용은 CRON이다.
정기적 실행!! 무슨 뜻인가??
정기적으로 실행시켜주는 그런 도구, 예를 들어서 정기적으로 데이터를 백업한다던지, 정기적으로 인터넷을 통해서 시간을 조정한다던지 정기적인 작업을 처리할 때 cron이라는 도구를 이용해 실행할 수 있다.
crontab -e 라고 하면 하고자 하는 일을 정의할 수 있다.
에디터가 뜨게 된다. 그러면 에디터를 선택할 수 있는데, 여기에서 내가 하고 싶은 에디터를 사용하면 된다.
첫번째 m h는 min과 hour의 뜻으로 10 1이라고 정해두면 1시 10분에 실행된다는 뜻이다.
dom (day of months) 무슨 요일에 설정할 것인지?
mon 몇 월에 설정할 것인지?
dow 무슨 요일에 설정할 것인지?
command 이제 위에 설정한 시간에 명령하고 싶은 명령어를 넣으면 된다.
구글에 crontab expression이라고 치면 정말 다양한 표현식이 나온다.
date라는 명령은 현재 시간을 볼 수 있는 명령이다.
tail 이라는 명령은 파일의 뒤쪽을 확인할 수 있다. 여기에서 -f라는 옵션을 주면 파일을 감시하고 있다가 파일에 내용이 새로 업데이트가 되면 자동으로 화면에 업데이트 된 내용을 보여주게 한다. 굉장히 유용한 명령어이다.
빠져나갈 때는 ctrl + c를 누르면 된다.
* date >> date.log 라고 하면, 에러가 났을 때는 date.log에 에러가 저장되지 않는다. 그래서 2>&1을 추가하면 에러또한 date.log에 저장이된다. &를 붙이는 것은 표준 출력임을 나타나기 위해서 붙이는 것이다.
그렇다면 이러한 CRON은 어디에 유용하게 사용할 수 있을까?
많은 데이터를 서버로 보내서 처리해야할 때, 정말 많은 데이터라면 사용자는 데이터가 처리될 때까지 많은 시간을 보내게된다. 그래서 서버에서는 데이터를 받을 때 먼저 사용자에게 알림을 주어서 확인시킨다음, cron을 정기적으로 실행시켜서 데이터를 업데이트 시킨다.
이번 시간에 살펴볼 내용은 쉘이 시작되었을 떄, 특정한 명령어가 자동으로 실행될 수 있도록 하는 방법을 확인해보자!
alias는 별명이라는 뜻이다.
alias l='ls -al' 이제 l이라고 입력하면 ls -al이 실행된다. 즉 l에 별명을 붙여준 것이다.
bash 쉘에 들어갈 때 자동으로 명령어를 실행시키고 싶다면 .bashrc라는 파일에 들어가서 사용하고 싶은 명령어를 입력해두면 된다. 기본적으로 bashrc라는 파일은 이미 저장되어서 작성되어 있을 것이다.