_empty_ 2019. 4. 26. 03:50

4차인재 양성사업

과학기술 빅데이터 분석가 과정 - 1주

KISTI 이재광 박사님

 

 

빅데이터 분석가 양성과정은 비이공계를 대상으로 하는 과정이다.

그만큼 정말 다양한 전공이 모이기 때문에 당연히 배경지식도 천차만별이다.

하지만 빅데이터 분석가 과정인 만큼 컴퓨터를 기본적으로 다룰 줄 알아야 함은 물론

앞으로 배우게 될 R, Python 등의 언어를 접하기 전에 작업 환경에 익숙해질 필요가 있다.

그런 의미에서 첫 주는 간략히 컴퓨터 개론을 배우고 리눅스의 기본을 배우는 시간이었다. 

컴퓨터 개론

컴퓨터 개론 수업은 공대의 교양 강좌를 듣는 기분이었다.

물론 여러가지를 알려주셨지만, 주로 강조된 것은 컴퓨터의 기본 구조를 알아야 한다는 것.

그리고 개발을 하는 사람이라면 아스키코드(ASCII)를 많이 보게 될 것이라는 것과

유니코드(UNICODE)에 관한 것이었다.

나는 코딩을 익히기로 결심하면서 맥 환경을 써보고 싶다는 마음에 얼마 전 맥북을 구매했는데

윈도우 환경에서 작성된 자료를 옮겨올 때 UTF-8으로 인코딩하는 것이 매우 중요하다는 것을 체감하는 중이었기에

달달 외울 필요까진 없더라도 기본이 중요하다는 생각을 많이 했다.

 

cf. 박사님이 제주도에 갈 일이 있다면 Nexon 박물관을 가보라고 추천해주셨다.

      IBM과 APPLE의 PC가 진열된 곳이니, 일부러 갈 필욘 없지만 제주도에 간다면 꼭 가보길 권장한다고.

Linux

데이터 관련 수업을 하게 되실 강사님의 요청에 의해 리눅스 가상환경 설치를 실습하게 되었다.

Virtual Box(https://www.virtualbox.org/)라는 x86 가상화 소프트웨어를 사용해 가상환경을 만들고

그 위에 리눅스계 운영체제인 centOS 7(https://www.centos.org/ )를 설치했다.

말하자면, Virtual Box는 리눅스, 맥OS, 솔라리스, 윈도우 등의 운영체제를 게스트 운영 체제로 가상화하는 소프트웨어이며

이를 통해 만들 가상 머신을 centOS 7이라는 리눅스계 운영체제로 만들었다는 뜻이다.

 

VirtualBox와 CentOS 홈페이지 화면. 운영체제에 맞게 다운로드 받으면 된다.

설치를 하면 root암호와 사용자계정을 생성해야 하는데 이 때의 아이디와 비밀번호를 잘 기억해야 한다.

이걸 까먹으면 싹 다 새로 깔아야 하는 대참사가 발생하기 때문에 절대!! 잊지 말아야 한다.

 

의외로 가장 주의해야 할 점은, 사용자 계정명을 한글로 설정하지 말아야 한다는 것이다.

계정 설정 시 한글이 먹히든 아니든 가급적 영어로 모든 이름을 설정하는 것이 좋다.

이는 폴더나 파일 생성 시에도 마찬가지다.

 

코딩을 한 번이라도 해보신 분들은 아시겠지만, 경로명에 한글이 포함된다는 이유로 에러가 생기는 경우가 의외로 많다.

물론 문제가 생기지 않을 수도 있지만, 만에 하나라도 문제가 생길 확률이 존재한다면 굳이 한글을 쓸 이유는 없다.

컴퓨터 자체의 관리자계정 아이디도 영어로 설정하는 것이 좋으며 공백은 당연히 안 되기 때문에 공백 대신 _를 써줘야 한다.

파일의 경로를 쓰는 일이 평소에는 거의 없지만, 코딩을 결심한 분들이라면 이 부분은 꼭 명심해 두는 것이 좋다.

나 역시 졸업 프로젝트 당시 안드로이드 스튜디오가 한글이 포함된 경로를 읽지 못한 적이 있다.

결국 사용자 계정을 아예 새로 만드느라 무척 번거로웠기 때문에 이젠 사용자명을 꼭! 영문과 숫자로만 구성한다.

초심자가 의외로 놓치기 쉬운 부분이고, 상식과도 같아 알려주는 자체를 잊는 경우가 많으므로 알아두는 게 좋다.

 

본론으로 돌아가서, Virtual Box는 Snapshot이라는 기능으로 머신 환경을 백업할 수 있으며

그 상태 그대로 가상머신 내보내기가 가능하다.

내보낸 머신을 usb에 담에 다른 컴퓨터에 연결하면 설정해둔 환경 그대로 사용할 수 있다고 한다.

가상머신임에도 백업을 하고 또 그 상태 그대로 내보낼 수 있다는 것은 매우 장점이라며, 

주로 파일을 설치하기 전에 스냅샷을 찍고 설치를 진행한다고 한다. 

 

이후로는 리눅스 명령어 구조와 사용법을 배우고 실습했다.

당연한 말이지만 모든 명령어를 외워 사용하는 것은 불가능하다.

자주 사용하는 것이 자연스레 기억될 뿐, 그때그때 구글에 검색하는 것이 최선이다.

 

 

~리눅스 계정 구성~

로그인 -root 계정 : 시스템의 관리를 위해 사용되는 관리자 계정(슈퍼유저). 명령어 앞에 #가 표시된다.

>>$ su

root 권한에 포함되어 있는 환경변수는 가져오지 않고 root로 계정만 변경하는 명령어.

명령어 입력 후 root계정 비밀번호로 설정한 암호를 입력해야 한다. 입력 중인 암호는 보이지 않는게 정상이다.

 

일반 사용자 계정 : 관리자(root) 권한이 없는 사용자 계정. 명령어 앞에 $가 표시되는 기본 상태이다.

계정 하나 당 하나의 홈 폴더가 생성된다. 여러 사용자가 한 리눅스 환경을 공유할 수 있다는 것이 리눅스의 가장 큰 특징.

 

~명령어 구조~

Command + Options + Arguments

>>$ ls

>>$ ls -a

>>$ ls -a /home01/9n0421

 

~시스템 종료~

>>$ shutdown root유저(슈퍼 유저)만이 실행가능
>>$ shutdown -h now 시스템의 전원을 내리는 명령. halt와 같은 명령어
>>$ shutdown -r now 시스템을 재 시작 시키는 명령. reboot과 같은 명령어.
>>shutdown -r 숫자 숫자 분(min) 뒤에 재시작 시키는 명령어
>>Ctrl + Alt + Del 60초 뒤 시스템 끄는 창이 나온다. 심지어 리눅스에선 Host+Del로 입력해야한다. 상단바 입력>키보드 에서 설정.

>>$ exit

일반적으로 시스템을 종료(log off)할 떄 사용한다.

root에서 exit -> 사용자 계정(이전상태)로 로그아웃 됨

사용자 계정(초기상태)에서 exit -> 터미널 창 닫힘

 

>>$ passwd 패스워드 변경 명령어
>>$ du(disk usage)

디스크 사용량 체크. 특별히 디렉터리를 지정하지 않으면 현재 디렉터리에 대하여 동작함. 

ex. du -h , du -s directory_name

>>$ df(disk free) 파일 시스템 사용량을 탭이 들어간 형태로 보여줌. ex. df, df -h
>>$ date [옵션] [+포맷] 현재 날짜와 시간을 나타냄. 옵션에 따라 다양한 형태로 출력이 가능하다.
>>$ who [am i] 시스템에 로그인한 사용자들[자신]이 누구인지 보여줌. 접속한 서버이름(IP주소)이 보인다.
>>free Memory 사용 현황. $free -s 초 로 사용시 지정한 시간(초)에 지속적으로 정보를 갱신함.
>>history 리눅스는 사용자가 사용했던 명령어들을 기억하고 있기 때문에 필요할 땐 언제든 다시 불러서 사용할 수 있다.

 

>>$ ls

디렉터리 내의 파일 목록을 보기 위한 명령어

cf. 윈도우 터미널에서 사용하는 dir 역시 같은 기능으로 사용이 가능하다. 다만 속성값을 읽어오지는 못하는지

ls 사용 시 디렉터리 명이 파란색으로 표시되는 반면 dir의 경우 모두 흰색으로 이름이 표시된다.

 

>>$ pwd 

현재위치(경로) 출력

 

>>$ alias / unalias

명령어에 별칭을 설정하거나 해제할 수 있다.

긴 명령어나 자주 쓰는 명령어를 입력해두고 간편하게 사용할 수 있어 자주 사용되는 기능 중 하나이다.

ex. >>$ alias pw = 'passwd'

       >>$ unalias pw

 

~디렉터리 이동/생성/삭제~

>>$ cd  디렉터리 이동 명령
>>$ pwd 현재 디렉터리의 위치를 보여줌
>>$ mkdir 새로운 디렉터리를 만들 때 사용
>>$ rmdir 디렉터리를 삭제할 때 사용. 디렉터리 안에 파일이 있으면 사용할 수 없다.
>>$ rm -rf 파일이 포함된 디렉터리를 지울 때 사용
>>$rm -r 폴더명 폴더명 에 해당하는 파일을 삭제함
>>$mv 파일과 디렉터리의 이름을 변경하거나 경로를 옮길 때 사용
>>$ touch 파일이 존재할 경우 파일의 수정날짜를 변경. 파일이 존재하지 않을 경우 0kb 파일 생성.
>>$ cp

파일 복사 명령. 속성을 유지할 경우 -a 옵션을 추가한다. 같은 내용을 다른 파일명으로 복사하고자 할 때 사용된다. 

ex. >>$ cp test.txt test2.txt : 같은 경로(위치)에  text.txt를 test2.txt라는 텍스트파일로 복사

>>$ cp test.txt test2/text3.txt : test.txt파일을 test2 디렉터리 하위 영역에 test3.txt라는 텍스트파일로 복사

 

~텍스트 작성/확인/편집~

>>$ vi test.txt txt파일 생성+열림. 텍스트 내용을 편집하려면 i를 누르고 원하는 내용을 입력하면 된다.
>>esc insert모드에서 벗어나기
>>shift + ;  텍스트 파일이 열린 상태에서 편집기 호출.
>>(편집기에서) wq 저장+ 종료
>>q! 강제종료
>>$ cat

간단한 텍스트 파일을 생성하거나 텍스트 파일 내용을 확인. cat으로 텍스트파일 작성 시 종료는 Ctrl+c.

 ex. >>$ cat /etc/passwd

>>$ echo 텍스트를 화면 상에 출력. ex. >>$ echo "hello" -> hello / >>$ echo $Home -> /home01/9n0421

>>$ head / tail

텍스트 파일의 앞부분 / 뒷부분을 특정 라인 수(-n)만큼 보고 싶을 때. ex. >>$ head -10 /etc/passwd

 

~tar~

단순하게 파일을 압축하는 용도가 아닌, 파일이나 디렉터리를 묶는 용도

gzip, unzip과 같은 압축프로그램과 같이 쓰이는 게 일반적이다.

cf. 실습할 예제 링크 http://ftp.gnu.org/gnu/autoconf/

      실습 파일 명 : autoconf-2.12.tar.gz

 

gzip 압축과 함께 tar로 묶인 .tar.gz 파일 풀기

ex. >>$ tar -zxf mysrc.tar.gz

 

기본적인 명령어 Option

-z : gzip으로 압축 또는 압축해제 할 때 사용

-f : tar 명령어를 이용할 때 반드시 사용 (default)

x : tar 파일로 묶여있는 것을 해제할 때 사용 (extract)

c : tar 파일을 생성할 때 사용 (create)

 

tmi. 머신러닝을 할 때 메일로 신청하여 받는 데이터셋의 유형이 tar이었다.

단순한 zip파일처럼 생각하고 윈도우 환경에서 압축을 풀려 하니 8시간 가량의 어마어마한 시간이 측정됐다.

리눅스 환경으로 접속해 명령어로 tar 파일을 풀었을 때는 십수분 내로 압축이 해제되었다.

단순한 압축 파일로 생각하면 안된다는 정말 잊을 수 없는 교훈을 얻었더랬다.

 

~절대 경로 / 상대 경로~

절대 경로(Absolute Path) : /(root directory) 기준

상대 경로(Relative Path) : .(current directory) 기준

 

~파일 허가권 설정~

>>$ ls -al 명령을 사용하여 파일의 속성을 확인하면 

파일 유형 + 사용자(user) + 그룹(group) + 나머지(other) 의 순서대로 권한이 설정되어 있는 것을 확인할 수 있다.

>>ls -al 속성/허가권 링크 수 사용자 그룹 크기 생성일자 생성시간 파일명
예제  -rw-r--r-- 1 9n0421 in0426 1516 Apr 26 16:21 my.txt

이 중에서 속성 허가권에 해당하는 부분은 앞의 -(일반파일 표시)를 제외하고 세자리씩 끊어 각각

사용자, 그룹, 나머지사용자를 대상으로 한 권한 표시이며 rwx로 표기한다 (r : 읽기 , w : 쓰기 , x : 실행 , - : 권한없음 )

즉 위 예제의 -rw-r--r--는 - + rw- + r-- + r-- 로 분리되며

user는 읽기, 쓰기 권한을 그룹,나머지 사용자는 읽기 권한만 있는 상태로 해석할 수 있다.

 

>>$ chmod

파일 허가권을 변경하는 명령어. +로 권한 추가, -로 권한 삭제.

chmod [who] [+/-] [새로운 권한] [파일명]

[who] : u (user) / g (group) / o (other) / a (all)

cf.

user : 파일을 소유한 사용자

group : 파일에 대한 소유권을 가진 그룹

other : 다른 사용자

all : 모든 사용자

 

ex. >>$ chmod u+rw my.txt 

사용자에게 읽기와 쓰기 권한을 추가함을 의미한다.

>>$ chmod ug+w my.txt 처럼 둘 이상의 사용자를 대상으로 동시에 권한을 부여할 수도 있다.