Thursday, January 21, 2016

리알못: 리눅스 알지도 못하는 사람들을 위한 가이드

스티브 잡스님의 은혜를 받으며 살아가던 저같은 앱등이도 살다보면 리눅스를 써야할 날이 옵니다. 아니, 왔습니다. 저에게 리눅스는 제 컴덕 친구들이나 흐흐거리며 다루는, 혹은 리눅스를 만든 녀석이 메일링 리스트에서 또 누군가랑 싸웠다는 기사를 흘낏 보며 떠올리는, 아주 추상적인 존재였죠. 그러나 학교와 회사의 서버를 써야하고, 그런데 서버는 리눅스로 되어있고, 나는 일개 학생/직원일 뿐이고, 그래서 20년전 MS도스를 쓰던 시절에 혹은 PC통신에서나 쓰던 ls, cd ..같은 명령어를 써보며 마치 내가 뭘 할 줄 아는 것 처럼 이런 저런 디렉토리를 오간 뒤에 결국은 인정했습니다. 아, 이걸 공부해야 하는 구나.

막상 리눅스 책이나 강좌를 보면 수백 페이지 분량의 엄청난 것들이 나옵니다. 리눅스란 무엇이고, 누가 언제 만들었고, 무슨무슨 종류가 있고, 어쩌구 저쩌구... 커널은 뭐고..등등.

이런 내용 다 제끼고! (저도 모를뿐더러; ) 리눅스 초보를 위해 아주 간략히 정리해드리겠습니다. 사실, 네이버 구글 찾으면 어지간한건 다 나옵니다. 그런데 문제는 이거죠. 뭘 찾아야 할지 모른다는 것.

그래서 아주 간략히, 정말 간략히 개념만 설명합니다. 더 자세하고 훌륭한 설명은 다시한번 구글링 하시길 바랍니다.


  • 리눅스? 유닉스?
    • 리눅스는 유닉스의 한 종류입니다. 아니 정확하게 따지면 유닉스와 유사한 뭐라고 하는데 그냥 리알못들은 그런가보다 하고 넘어갑니다. 
  • 무얼 설치해야하나요?
    • 혹시 직접 설치해야 한다면 linux ubuntu download를 구글링하셔서 맨 위 링크를 누르세요. 여러 버전이 나올텐데 LTS (Long Term Support) 버전을 쓰세요. 지금은 14.04네요.
  • 알아야할 명령어 목록
    • $ ls - list
      • 디렉토리의 내용을 보여줌
    • $ pwd - print working directory
      • 현재 디렉토리의 위치를 알려줌
    • $ less some_text_file.txt
    • $ more some_txt_file.txt
      • 텍스트 파일의 일부를 후다닥 볼 수 있음.
    • $ tail some_text_file.txt
    • $ head some_text_file.txt
      • 마찬가지. 텍스트 파일의 맨 앞/맨 뒤를 출력해줍니다.
    • $ touch temp.abc
      • 저 파일이 없다면 temp.abc라는 파일을 생성합니다. 파일의 내용은 비어있습니다.
      • 파일이 있다면 저 파일을 한번 툭 건드려주게됩니다. 결과적으로 파일의 '최종 수정한 날짜'가 현재 시간으로 바뀝니다.
    • $ mkdir directory_name
      • 디렉토리를 만듭니다.
    • $ rmdir directory_name
      • 디렉토리를 삭제합니다.
    • $ cp file.txt new_file.txt
      • 파일을 복사합니다.
    • $ mv file.txt new_name.txt
      • 파일을 이동합니다. 이 명령어를 이용해 이름을 바꿀 수 있습니다. 
    • $ echo 'blah blah
      • blah blah 라고 출력합니다.
    • $ cat files.
      • 여러 파일을 붙입니다.
    • $ tar, zip
      • 파일 압축/해제.
    • $ wget url
      • url의 파일을 다운받습니다.
    • $ chmod, chown
      • 파일/디렉토리의 권한을 바꿔줍니다.
    • $ sudo 
      • 각종 커맨드 앞에 sudo를 붙여주면 super user의 권한으로 뭔가를 하게됩니다. 수퍼 유저는 다시말해 admin, 관리자 계정입니다. 따라서 이걸 하려면 관리자 계정의 권한을 갖고있어야합니다.
    • $ top
      • 작업관리자입니다. 아주 유용하죠.
    • $ iotop, iostat
      • top과 비슷한데 각종 기기간의 입출력 내역을 보여줍니다.
    • $ nohup
      • $ nohup python main.py > log_file_name.txt &
      • 커맨드 실행 내역의 결과를 log_file_name.txt 에 저장합니다.
      • 서버에 접속해서 이걸로 커맨드를 실행하면 그 이후에 접속을 끊어도 커맨드가 계속 실행되게 됩니다. 아주 유용하죠. 
      • 그럼 중간에 실행을 중지하고싶다면?
    • $ kill, pkill
      • pkill python
      • kill 12345
      • pkill python은 실행중인 파이썬을 전부 종료합니다.
      • kill 12345는 프로세스 아이디 12345를 종료합니다.
      • 프로세스 아이디는 top 을 실행하면 왼쪽에서 볼 수 있습니다.
    • $ screen
      • nohup과 비슷한데, 저는 더 유용하게 쓰고있습니다.
      • 쉽게말해 가상의 스크린을 여러개 띄워놓고 필요할 때 해당 스크린에 접속해서 사용하는 것 입니다.
      • screen -S screen_name 으로 새 스크린을 만들고,
      • 새 스크린 내부에서는 ctrl+a, d 를 눌러서 밖으로 나올 수 있습니다.
      • screen -x 를 하면 스크린 목록을 볼 수 있습니다.
      • screen -x screen_name 으로 기존에 만들어놓은 스크린에 다시 들어가서 일을 할 수 있습니다.
      • 서버에 접속해서 일하실 땐 디폴트로 스크린을 하나 만들어서 들어가서 쓰시면 중간에 접속이 끊어져도 서버에서 실행중인 프로세스가 종료되지 않아서 좋습니다.
    • [tab]
      • tab키는 정말 중요합니다.
      • 디렉토리에서 abdefefsdsdfsdfsdcscs.sh 라는 파일을 실행하고 싶다면...
      • 다 타이핑 하지 마시고, 앞에 몇개만 타이핑한 뒤 [tab]키를 눌러보세요.
      • 만일 디렉토리에
        • abc123.txt, abc456.txt, ddd.txt
      • 이렇게 3개의 파일이 있다고 하면,
        • a 까지 치고 탭을 누르면
          • $ a [tab]
        • abc까지 자동 완성이 됩니다.
          • $ abc
        • 여기서 추가로 1을 타이핑하고 탭을 누르면
          • $ abc1 [tab]
        • abc123.txt가 자동완성이 됩니다.
          • $ abc123.txt
        • 왜냐면 abc로 시작하는 파일이 두개가 있기때문이죠. 즉, ddd.txt의 경우 훨씬 쉬워지죠. d로 시작하는 파일은 저것 하나뿐이므로...
          • $ d [tab]
        • 을 누르면
          • $ ddd.txt
        • 라고 자동 완성이 됩니다.

No comments:

Post a Comment