Linux 6

디렉터리 구조를 확인하고 싶을 때 - tree

현재 작업 중인 프로젝트의 디렉터리 구조를 알고 싶을 때가 있습니다. 물론 작업 중이던 프로젝트라면 머릿속에 대부분이 들어있겠지만, 문서화를 한다거나, 프로젝트를 맡은 지 얼마 안 됐다거나 하는 경우에는 필요한 경우가 있습니다. tree 라는 명령을 사용할 건데요. 혹시 설치가 되어있지 않다면 설치해줍니다. Ubuntu를 사용하신다면, sudo apt install tree Mac OS X를 사용하신다면, brew install tre 과 같이 설치해줍니다. 사용법은 아주 간단합니다. ➜ tree django_demo django_demo |-- django_demo | |-- __init__.py | |-- __pycache__ | | |-- __init__.cpython-37.pyc | | `-- s..

Linux 2020.05.23

직전 명령의 마지막 인자 재활용하기 : !$

리눅스 콘솔에서 명령을 이것저것 치다 보면 방금 막 실행한 명령의 마지막 인자를 대상으로 다음 명령을 실행할 때가 많습니다. 예를 들어, raw.txt 파일의 이름을 train.txt로 바꾸고, train.txt 파일의 내용 중 "하늘"이 포함된 줄만 "sentences_with_sky_ko_KR.txt"로 옮기고, sentences_with_sky_ko_KR.txt의 내용을 cat으로 출력 하는 단계를 가정해보겠습니다. 일반적인 방법으로는, $ mv raw.txt train.txt $ grep "하늘" train.txt > sentences_with_sky_ko_KR.txt $ cat sentences_with_sky_ko_KR.txt 이렇게 합니다. Tab 키를 이용해서 자동 완성해가면서 하면 상대적..

Linux 2020.05.06

내 컴퓨터와 서버 디렉터리 동기화 - rsync

클라우드 환경에서 작업을 하다보면 현재 내가 작업 중인 컴퓨터의 특정 디렉터리와 서버의 디렉터리를 동기화하고 싶을 때가 있습니다. 내 컴퓨터의 코드와 데이터를 있는 구조 그대로 서버로 옮기거나, 서버에서 작업 중이던 데이터와 구조를 그대로 내 컴퓨터로 옮기고 싶을 때가 있죠. 한가지 방법은 git을 써서 push하고 pull하는 방법이 있지만, 이 경우에 중간 서버를 경유해야한다는 단점이 있고, 무엇보다 아직 repository에 push하면 안 되는 중간 내역들이 push되게 됩니다. 이런 상황에서 유용한 툴이 rsync입니다. rsync는 두 path의 내용을 똑같이 맞춰주는 역할을 합니다. 두 path는 local-local도 되고, server-local도 됩니다. 최초 한번은 전체를 복사해야하기..

Linux 2020.05.02

특정 포트를 잡고 있는 프로세스 알아내기

개발을 하다가 필요해서 임시로 서버를 띄우다보면 이미 그 포트에 바인드한 프로세스가 있다고 하면서 실행이 되지 않는 경우가 있습니다. 나도 모르게 데몬이 떠있는 경우도 있고, 많은 경우는 스스로 띄워놓고 모르는 경우죠. (왼손이 하는 일을 오른손이 모르게...) 이럴 경우 어떤 프로세스가 포트를 잡고 있는지 알아서 죽여야하는데 이때 사용하기 유용한 명령이 있습니다. 예를 들어 8888 포트를 잡고 있는 프로세스를 찾고 싶다면, $ sudo lsof -i :8888 라고 하면 됩니다. 그럼 이 아니고, 와 같이 친절하게 명령, PID 등을 알려줍니다. 그럼 잔인무도하게 kill 명령을 날려주면 되겠죠?

Linux 2020.04.29

텍스트 파일의 특정 줄 주변을 보고 싶을 때 : head & tail

텍스트 파일을 처리하다 보면 데이터 파일의 중간에서 에러가 나는데 이 줄을 확인해보고 싶을 때가 있습니다. 예를 들어 텍스트 파일 전처리를 하고 있는데 데이터 27,354번째 라인에서 무언가 에러가 나면서 전처리 스크립트가 죽어서 27,354번째 줄이 뭔지 확인하고 싶을 수 있습니다. 가장 손쉬운 방법은 에디터로 열어서 27,354번째 줄로 가보는 거죠. 하지만 파일이 수십만에서 수백만 라인이 될 경우 에디터가 매우 힘들어할 수 있습니다. 에디터를 띄우는 것 자체가 번거로울 수도 있고요. 콘솔에서 간편하게 확인하는 방법 중 하나는 head와 tail 명령을 사용하는 겁니다. 기억을 되살려 보자면.. $ head -100 train.txt 이렇게 하면 train.txt 파일의 앞 100줄이 출력이 됩니다...

Linux 2020.04.28

네트워크를 통해 파일을 빠르게 복사하기: nc 명령어

머신러닝과 같이 큰 데이터를 다루는 일을 하다 보면 한 컴퓨터에서 다른 컴퓨터로 큰 파일을 옮겨야 하는 경우들이 자주 있습니다. 예를 들어 코딩은 내 컴퓨터에서 하고, 모델링을 하기 위해서 코퍼스를 서버로 옮기는 경우가 있겠죠. 외장하드를 이용할 수도 있고, USB 드라이브를 이용할 수도 있고, 플로피... 테이프... 아무튼 여러가지 방법이 있습니다. 1. 묶어서 scp 이때 가장 많이 쓰는 방법 중 하나가 scp를 이용하는 것입니다. 대부분 서버에 ssh 서버가 설치되어있기 때문에 아주 간편하게 파일들을 복사할 수 있습니다. corpus라는 디텍토리가 있고 이 것을 서버로 통째로 보내고 싶다고 가정해보겠습니다. $ tar -cf corpus.tar corpus $ scp corpus.tar ceong..

Linux 2020.04.26