※ 본 카테고리의 내용은 부스트캠프 챌린지 기간동안 학습한 내용을 바탕으로 정리한 내용입니다.

 

목차


    0. 리눅스와 유닉스

     

     

    리눅스를 이해하기 전에 먼저 유닉스가 어떤 운영체제인지에 대해 알고 넘어가야 합니다.

    유닉스(Unix) 벨 연구소에서 개발한 운영체제로, 대부분의 현대 컴퓨터 운영체제의 바탕이 되는 운영체제입니다.

    현재 많이 사용하는 OS 중에서 윈도우를 제외한 MacOS, 리눅스, 안드로이드, iOS 등이 유닉스를 뿌리로 두고 있죠.

     

    특히나 C언어를 기반으로 만들어졌고, CLI 시스템이 굉장히 잘 되어있기 때문에 서버를 돌릴 때 다른 운영체제보다 인기가 좋습니다.

    다만 이 유닉스를 기반으로 파생된 다양한 운영체제들에 의해서 구시대의 유물인 유닉스의 입지는 조금씩 줄어들고 있습니다. Solaris와 IA-64는 사실상 개발이 중단되었고 특정 부분에 특화된 BSD 계열 운영체제는 그다지 많이 쓰이고 있지는 않은 실정입니다.

     

     

    리눅스(Linux) 리누스 토르발스라는 공대생(...)이 만든 운영체제입니다. 애초에 상업용으로 만들어진 운영체제가 아닌 만큼 소스코드가 공개되어 있는 대표적인 오픈 소스 소프트웨어이기도 합니다.

     

    유닉스가 서버 및 인프라쪽에 치중하는 이미지라면 리눅스는 현재 시점에서 휴대폰, 태블릿PC, 콘솔, 일반 사용자에게도 흔히 쓰이고 있습니다. 오픈 소스이므로 배포가 쉬운 점도 있지만, 유닉스에서 부족했던 사용자 입장에서 유용하게 쓸 수 있는 부분을 계속해서 추가했기 때문이기도 합니다.

     

    하지만 위에서 말한 것처럼 유닉스는 리눅스에게 큰 영향을 주었습니다. 실제로 리눅스는 유닉스와 굉장히 유사하고, 유닉스의 모든 기능을 갖추고 있습니다. 리눅스는 유닉스의 경쟁자가 아니라 훌륭한 상속자라는 의미가 될 수 있겠네요.

     


    1. 리눅스/유닉스 용어 및 명령어

    1일차 포스팅에서 몇 가지 명령어에 대해서 자세히 다뤘었는데, 이번에는 복습하면서 추가적으로 몇 가지 용어와 명령어를 더 다뤄보도록 하겠습니다.

     

    만약 이전에 배웠던 내용을 예시와 함께 더 자세히 알고 싶으시면 아래 포스팅을 참고해주시면 감사하겠습니다 😊

     

     

    [부캠챌린지] Day1 - 자바스크립트 개발 환경 이해

    ※ 본 카테고리의 내용은 부스트캠프 챌린지 기간동안 학습한 내용을 바탕으로 정리한 내용입니다. 목차 0. 터미널 개발자는 단순히 원하는 기능을 만들기 위해서 코드를 만들 뿐만 아니라 디렉

    ssocoit.tistory.com

     

    ※ 복습

     

    ls : 파일이나 디렉토리를 보는 명령어 (list segment)

    • -a : 숨김 파일 포함 디렉토리의 모든 항목 표시
    • -l : 각 파일의 정보를 목록으로 표시
    • -s : 크기 순으로 정렬

    cd : 디렉토리 이동 명령어 (change directory)

    • ~ : 홈 디렉토리
    • .. : 상위 디렉토리
    • / : 루트 디렉토리 (혹은 절대 경로를 사용할 때 이용)

    mkdir : 디렉토리/폴더 생성 명령어 (make directory)

    touch : 빈 파일 생성

    mv : 파일 이름 변경 및 이동 (move), mv 원래파일위치 옮길파일위치 형태로 사용

    cp : 파일 및 디렉토리 복사 (copy), cp 복사대상파일 복사된파일 형태로 사용

    rm : 파일 및 디렉토리 삭제 (remove)

     

    ifconfig : ip를 확인할 수 있는 명령어

     

     

    ip : ip를 확인할 수 있는 명령어(권장)

    • a : address의 약어로 주소를 확인할 때 사용

     

     

    sudo : 슈퍼유저로서 프로그램을 구동할 수 있도록 하는 명령어

     

    허가 거부를 무시해버리는 강력함

     

    curl(Client URL) : url을 가지고 서버와 통신할 수 있게 도와주는 명령어

     

     

    vi(vim) : 유닉스와 리눅스에서 사용하는 문서 편집기. vi는 구버전, vim은 신버전!

    • esc키 : 편집모드에서 벗어나서 명령어를 입력하려면 esc키를 누르고 입력!
    • o,O,i,I,a,A : 편집모드 시작(각 알파벳마다 시작하는 위치가 다름)
    • wq : 종료할 때 사용하는 명령어로, write와 quit를 순서대로 실행
    • ! : sudo와 비슷하게 강제성을 부여하는 명령어

     

     

    scp(SecureCopy) : ssh 원격 접속 프로토콜을 기반으로 원격지에 있는 파일과 디렉터리를 보내거나 받을 때 사용하는 명령어로, scp [명령어] 보낼 파일(위치) 받을 위치 형태로 사용

     

     


    2. 쉘 스크립트

    쉘 스크립트는 쉘에게 어떤 명령을 실행할 지 알려주는 스크립트 파일입니다. 확장자명으로 .sh를 사용합니다.

    스크립트 파일을 실행하고 싶다면 보통 bash 스크립트명 형태로 실행합니다.

    스크립트 파일은 Linux 내에서 crontab을 사용해서 주기적으로 실행되도록 만들 수 있습니다.

     

    스크립트 안에서 쓸 수 있는 문법적인 규칙들이 존재하지만, Linux/Unix에서 사용하는 명령어도 대부분 스크립트 안에서 그대로 사용할 수 있습니다.

     

     

    다음은 프로그래밍 언어처럼 쓰이는 쉘 스크립트 내부의 용어에 대해서 알아보도록 하겠습니다.

    (Linux/Unix 명령어는 제외합니다!)

     

    2.0. 변수

    쉘 스크립트에서도 변수를 사용할 수 있습니다.

    변수명 = 값 형태로 선언하고, 사용할 때는 앞에 $를 붙여줍니다. (JS가 생각나는건 기분탓)

     

     

    2.1. 주석

    #를 앞에 붙이면 주석처리를 할 수 있습니다.

     

    파란색이라 잘 안보여요...

     

    2.2. 출력

    echo 명령어를 통해 값을 출력할 수 있습니다.

     

     

    2.3. 조건문

    if 조건 then elif 조건 then else 형태로 사용할 수 있습니다.

    맨 끝에 fi를 붙여줍니다.

     

     

    2.4. 반복문

    while을 이용해서 반복문을 작성할 수 있습니다.

     

     


    3. Cron

    cron은 특정한 시간이나 특정한 시간마다 어떤 작업을 자동으로 수행하게 만들고 싶을 때 사용하는 쉘 스크립트 명령어입니다.

     

    시스템에서 기본적으로 사용하는 cron설정은 시스템크론이라고 부르고, root나 사용자가 직접 cron을 설정하여 사용하는 것을 사용자크론이라고 부릅니다.

     

    cron은 보안에 있어서 굉장히 중요한데, 주기적으로 보안을 점검하고 검사할 수 있는데 많이 쓰입니다. 이게 악용되면 주기적으로 악성코드를 실행시킬 수도 있겠죠. (잘못 쓰다가 걸리면 쇠고랑🔗)

     

    3.0. 실전 투입

    실제 사용중인 우분투 서버에 접속해서 /etc/crontab을 실행했습니다.

    그랬더니 아래와 같이 나오는데요!

     

     

    이게 무슨소리인고... 싶을 수 있습니다!

    간단하게 형식을 살펴보면 아래와 같습니다!

     

     

    필드 내용
    m 분을 나타냅니다. (0~59)
    h 시를 나타냅니다. (0~23)
    dom 날짜를 나타냅니다. (1~31)
    mon 월을 나타냅니다. (1~12)
    dow 요일을 나타냅니다. (0~6)
    user 사용자 이름을 나타냅니다. (선택)
    command 실행할 명령어를 나타냅니다.

     

    그리고 각 위치에는 특수문자가 들어갈 수도 있습니다.

     

    문자 내용
    * 모든 값을 나타냅니다.
    - 그 사이의 모든 값을 나타냅니다. (2-7 은 2일부터 7일을 나타냅니다)
    , 지정한 모든 값을 나타냅니다. (3,5,7은 3일, 5일, 7일을 나타냅니다)
    / 특정 주기를 나타냅니다. (*/5는 5단위를 나타냅니다. 5분마다 or 5일마다 ....)

     

    마지막으로 크론탭과 관련된 옵션도 존재합니다.

    만약 크론탭에 설정된 내용을 수정하거나, 삭제하거나, 출력해보고 싶다면?

    crontab [option] 파일명

    명령어에서 option자리에 아래 옵션을 선택해서 넣어주는 방식으로 사용할 수 있습니다.

     

    옵션 내용
    -l crontab 내용을 출력합니다. (로그를 남길때도 사용합니다!)
    -e crontab 내용을 작성하거나 수정합니다.
    -r crontab 내용을 제거합니다.
    -u 특정 유저의 crontab 파일을 수정합니다.

     

    예시를 하나 들면, 10분마다 테스트 스크립트를 실행하고 싶다면?

    */10 * * * * /lazuli/script/test.sh

    명령어를 사용할 수 있습니다.

     

    이번에는 매일 오후 12시마다 테스트 스크립트를 실행하고 싶다면?

    0 12 * * * /lazuli/script/test.sh

    명령어를 사용하면 됩니다.

     

    매일 0분부터 10분 사이에 테스트 스크립트를 실행하고 싶다면?

    0-10 * * * * /lazuli/script/test.sh

    명령어를 사용하면 끝입니다!!!

     

    이번엔 옵션을 사용해서 매일 12시 정각에 크론탭 내용을 백업해두고 싶다면?

    0 0 * * * crontab -l > /lazuli/backup/crontab_backup.txt

    명령어를 사용하면 되겠죠?!!


    4. 참고 자료

     

    cron - 위키백과, 우리 모두의 백과사전

     

    ko.wikipedia.org

     

     

    리눅스 크론탭(Linux Crontab) 사용법 :: JDM's Blog

    * 이 포스팅은 네이버 블로그에서 작성(2013.04.01)한 내용을 옮겨온 것입니다. 오늘은 리눅스 크론탭에 대해 알아볼까 합니다. 음, 윈도우에서는 스케줄러와 비슷하다고 보면 되겠네요. "특정 시간

    jdm.kr

     

     

    [Linux]작업 예약 스케줄러(크론Cron)파일,자동 백업 명령 & 관련 문제

    리눅스 완전 정복 : 리눅스 목차 cron이란? 특정한 시간에 또는 특정 시간 마다 어떤 작업을 자동으로 수행하게 해주고 싶을 때 사용하는 명령어가 cron입니다. cron은 특정한 시간에 특정한 작업을

    jhnyang.tistory.com

     

    반응형
    • 네이버 블로그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기