ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 생활코딩 리눅스 강좌 요약 및 정리 - 프로세스와 실행
    Knowledge/Linux 2019. 10. 4. 20:42
    반응형

    이 포스팅은 5편 ( https://takeknowledge.tistory.com/69 ) 에 이어 작성하는 것입니다.

    쉘과 쉘스크립트에 대한 정보는 5편에서 확인할 수 있습니다

     

    • 프로세스 모니터링 

    리눅스에선 프로세스를 모니터링할 수도 있다.

    ps, top , htop 등의 프로그램을 사용하면되고 명령어는 프로그램의 이름과 같다

     

    ps부터 입력해보면

     

    별 게 나온지 않는다. 백그라운드에서 실행되고 있는 프로그램은 단순히 ps만 쳐서 확인할 수 없기 때문이다

    ps로 백그라운드에서 실행중인 프로그램까지 모니터링하기 위해선 ps aux를 입력해줘야한다. 그러면

     

    굉장히 많은 프로그램을 볼 수 있는 것을 확인할 수 있다.

     

    다음은 top. 입력하면

     

    ps보다 훨씬 더 상세한 모니터링이 가능하다. 

     

    htop은 이보다 좋은데 이는 기본 제공 프로그램이 아니니 다운로드가 필요하다 

    ( 인스톨 방법은 https://takeknowledge.tistory.com/66 에서 확인할 수 있다 )

     

    모두 설치했다는 가정하에 htop 을 실행시켜보면

     

     

    컬러풀하다. 사실 그게 전부는 아니고 top보다 훨씬 더 상세한 모니터링이 가능하다.

     

    이렇게 ps, top, htop으로 모니터링 가능한 프로세스는 

    kill pid번호 명령어로 강제 종료도 가능하다.

     

    • 백그라운드 실행 

    리눅스에서도 윈도우즈에서 ctrl + tab을 활용해 여러 프로그램을 동시에 사용하는 것 처럼

    앞에서 사용하던 프로그램을 종료 없이 background로 돌릴 수 있다.

     

    ctrl + alt + z 키와 fg 명령어를 활용하면 되는데 예를 들어 보면

     

    나노 에디터를 켜서 위와 같은 내용을 입력한 후 ctrl + alt + z 를 누르면 

     

    명령창으로 돌아온다. 여기서 fg를 입력하면

     

    아까 작업하던 nano 에디터가 다시 열린다

     

    이런 백그라운드 작업은 여러개의 프로그램을 대상으로도 가능하다.

     

    다시 nano 에디터를 열어서 이번엔 background test2 라는 내용을 입력하고 ctrl + alt + z 를 누르면 

    명령어 창으로 돌아오는데 여기서 jobs를 입력하면

     

    두개의 nano 프로그램이 실행되고 Stopped 상태인 걸 볼 수 있다.

     

    꼭 프로그램을 실행하고 그 상태에서 ctrl + alt + z를 입력해야만 하는 것은 아니다

    실행할 때도 명령어 뒤에 & 를 붙이면 바로 해당 명령어가 백그라운드에서 실행이 된다.

     

    예를 들어 nano 명령어 뒤에 &을 붙이면

     

     

    nano 에디터가 백그라운드에서 실행되어 멈춰있는 상태임을 확인할 수 있다

    이 기능은 오래 걸릴 명령어를 실행할 때 유용하다

     

    • 데몬 ( Daemon ) 

    언제 실행될지 몰라 항상 실행되어야 하는 프로그램들을 Daemon 프로그램이라고 한다. 

    Server 프로그램들이 대표적인 Daemon 프로그램이다. Service라고도 한다.

     

    apache 서버를 예로 들어 이런 프로그램들을 켜고 꺼보자.

     

     

    일단 apache2를 다운받아 설치한다.

    이후 /etc/init.d 디렉토리로 이동해 내용을 확인하면 설치가 잘 되어 있는 걸 확인할 수 있다.

     

    이후 이를 실행시키기 위해선 sudo service 서비스명 start 명령어를 사용하면 된다.

     

    즉 sudo service apache2 start 를 입력한 후 

     

    ps에서 apache2가 들어가 있는 프로그램들의 프로세스만 모니터링해보면 

    apach2가 잘 실행되고 있는 것을 볼 수 있다.

     

     stop은 시작할 때와 같이 입력하고 start만 stop으로 바꾸면 된다. 입력하면

     

    서비스가 잘 종료되는 걸 확인할 수 있다.

     

    • 정기적 실행 (cron)

    시스템이 정기적으로 실행해줘야 하는 작업은 리눅스에선 cron을 활용해 처리할 수 있다.

     

    실습을 위해 crontab -e 를 입력해 cron파일 수정 화면으로 들어가자

     

    처음 실행하면

     

     

    이렇게 에디터를 선택하라고 나오는데 당황하지말고 에디터를 선택하면 

     

    이렇게 cron 파일이 선택한 에디터 내에서 열린다

     

    이제 주기와 작업 내용을 작성해줘야 하는데 자세한 내용은 아래 링크 참고!

     

     

    리눅스 반복 예약작업 cron, crond, crontab - 제타위키

    cron, cronie, crond, cron daemon, crontab, cron job, crontab job 크론, 크론 데몬, 크론탭, 크론작업, 리눅스 작업 스케줄러 /usr/sbin/crond /usr/bin/crontab 프로세스 예약 데몬 리눅스용 작업 스케줄러 특정시각에 명령어가 수행되도록 등록가능 cronie(패키지) = crond(데몬) + crontab(크론 계획표[1]) 로그: /var/log/cron에 변경/수행 이력이 기록됨

    zetawiki.com

    필자는 아래와 같이

     

    1분마다 한번씩 현재 날짜를 date.log에 추가하되

    에러가 발생하면 그 내용 역시 추가하라는 명령어를 입력하고 저장했다

    ( 이 부분에 있어서 egoing님은 상세 경로를 다 적지 않아도 잘 작동을 하던데..

      필자는 경로를 적지 않으니 의도대로 작동하지 않아서 상세 경로를 적어준 게 강좌와 다른 부분이다 )

     

    이러면 이제 cron 설정은 끝난건데 이 cron이 제대로 작동하는지 확인하기 위해선

    일정 시간이 지난 후 cat 명령어를 활용해 date.log 파일을 열어봐도 되겠지만

    tail -f 파일명 명령어를 쓰는 게 효과적이다.

     

    이 명령어는 해당 파일에 새로운 내용이 추가될 때마다 가장 마지막 줄을 화면에 출력해주는 명령어인데

     

    cron을 위와 같이 설정하고 tail -f  date.log 를 입력한 뒤 기다리면

     

    아래와 같이 시간이 지나 내용이 추가될 때 마다 화면에 내용이 출력되는 걸 볼 수 있다.

     

    • 쉘을 시작할 때 실행 

    쉘을 시작할 때 특정 명령어를 실행하기 위해선 ~ 디렉토리에 있는 .bashrc 파일 수정해주면 된다

     

    sudo nano .bashrc를 입력해 nano 에디터로 해당 파일을 열면

     

     

    이런 내용이 나오는데 여기에 쉘이 시작될 때 마다 

    clear 명령어의 약어를 c로 설정하는 alias c='clear' 명령어와

    hi bash라는 내용을 출력하는 echo 'hi bash' 라는 명령어를  추가하고 파일을 저장해보자

     

    이렇게 하면

     

    이렇게 bash를 종료 후 다시 실행했을 때 hi bash라는 출력이 나오는 걸 확인할 수 있다.

    당연히 c만 누르고 엔터를 쳐도 clear 명령어를 실행시킨 것과 같이 작동도 한다

    반응형

    댓글

Designed by Tistory.