OS/Linux: 92개의 글
![](http://i1.daumcdn.net/thumb/C200x150/?fname=https://blog.kakaocdn.net/dn/pfeyf/btq4cfMXJO0/l3nroyVDFKZCd8251ks81k/img.jpg)
들어가며: 클라우데라에서 호스트를 추가한 뒤에, 배포하는데서 문제가 발생했다. 에러 내용은 아래와 같다. Error: rpmdb open failed 의 메시지가 뜨면서 설치가 되지 않았다. 문제를 살펴보니 yum을 실행할때 rpm의 db가 손상될 가능성이 있다고 해서 아래와 같이 해결하였다. 해결방법: 결과적으로 해결하는 방법은 기존 DB를 모두 지우고, 새로 생성을 하면 해결이 된다. $ sudo rm -f /var/lib/rpm/_db* $ sudo rpm -vv --rebuilddb 출처 : ourcstory.tistory.com/195?category=630687
![](http://i1.daumcdn.net/thumb/C200x150/?fname=https://blog.kakaocdn.net/dn/IDagk/btq4cfzpQKA/XijhkOCueLWx33KukgzKE0/img.jpg)
들어가며: 대량의 파일을 삭제하거나 이동할때, 아래와 같이 에러가 난다. 그 이유는 mv, rm, cp 등 많은 파일에 대해서 파일 개수 제한을 두고 있다. 그렇다면 어떻게 해야지 파일을 옮길 수 있을까. bash에서는 강력한 pipeline(|)이 있기 때문에 잘 활용하면, 간단한 코드도 한줄에 끝낼 수 있으니, 리눅스에서 개발하는 개발자들은 얼마나 커맨드를 아느냐에 따라 시간, 속도를 효율적으로 사용이 가능하다. $ mv * ../ 에러내용: /usr/bin/mv: Argument list too long 아래와 같이 사용하면 대량의 파일을 옮기거나 삭제가 가능하다. $ find . -type f | xargs -i mv "{}" ../ 출처 : ourcstory.tistory.com/194?cate..
들어가며 새로운 HDD, SSD 등 스토리지가 추가가 되면, 포맷을 하고 마운트를 하게 된다. 아래 내용은 추가된 스토리지 /dev/xvdb를 포맷하고, /mnt/data1에 마운트 하는 방법에 대해서 설명한다. 데이터를 다루는 작업을 한다면 필수. 포맷하기 $ sudo /sbin/mkfs.ext3 /dev/xvdb 마운트하기 $ sudo mkdir /mnt/data1 $ sudo mount /dev/xvdb /mnt/data1 출처 : ourcstory.tistory.com/172?category=630687
![](http://i1.daumcdn.net/thumb/C200x150/?fname=https://blog.kakaocdn.net/dn/dArZFF/btq38fATp3L/WkizKoeo4XxuS9iRG6sib0/img.jpg)
들어가며 linux에서 ssh키를 이용해 서버에 접속하는 경우가 많습니다. 특히 분산처리할때는 ssh키를 등록해 놓고 처리를 해야지 패스워드 없이 작업을 원활하게 진행이 가능합니다. 그렇다면 ssh키를 등록한다는 말이 무엇을까요? ssh-key는 내가 너의 비밀번호를 이미 알고 있으니, 다음부터는 너한테 비밀번호 물어보지 않고 접속할께 알겠지? 라는 의미라고 생각하시면 됩니다. 등록하는 방법은 서버와 클라이언트로 나누어서 생각하면, 서버는 내가 ssh를 통해 접속하고자 하는 컴퓨터를 의미하고, 클라이언트는 서버에 접속하기 위한 컴퓨터라고 생각하시면 됩니다. 클라이언트에서 ssh키를 생성하고, 생성된 키를 서버에다가 등록해주면 끝입니다. 그럼 생성하고 등록하는 방법에 대해서 알아보도록 하겠습니다. ssh ..
![](http://i1.daumcdn.net/thumb/C200x150/?fname=https://blog.kakaocdn.net/dn/bbOkuN/btq4aY6tbLv/I1uNDmnnS9h3bx3eByQH70/img.jpg)
Vi/Vim에서 레지스터를 이용해 복사, 잘라내기, 붙여내기 하는 방법 yy, dd를 이용해 복사 및 붙여넣기를 했고, pp를 통해 붙여넣기를 수행했습니다. 하지만, pp를 통해 붙여넣기전에 yy,dd를 했다면, 그 이전에 있는 내용이 아닌 가장 최근의 값을 사용하게 됩니다. 즉, 하나의 버퍼를 사용해서 복사, 잘라내기, 붙여넣기를 수행하고 있습니다. vi에서는 내부 register를 지원하고 있습니다. 아주 간단한 방법으로 동작합니다. 일단 :reg를 입력하면 현재 register의 항목을 볼 수 있습니다. " " "0 "1 "2 "3 "4 "5 "6 "7 "8 "9 "- ". "% "# "/ "" 레지스터 -> 바로 이전에 지워진 내용이 항상 들어 갑니다 "1 ~ "9 레지스터 -> 지워진 내용이 큐..
![](http://i1.daumcdn.net/thumb/C200x150/?fname=https://blog.kakaocdn.net/dn/rjbjp/btq4cupDQW1/7bSOgWMxHylhrgGQUXHem1/img.png)
shell script를 작성할때 parameter의 개수를 체크하는 방법입니다. if [ "$#" -ne 1 ]; then echo 'all' else VERSION=$1 echo "$VERSION" fi
![](http://i1.daumcdn.net/thumb/C200x150/?fname=https://blog.kakaocdn.net/dn/bDCoHH/btq4bMdgk5P/F6s45YBRegeDdSohlkLCFK/img.jpg)
리눅스 shell script에서 주석을 하는 방법 들어가며 쉘스크립트를 작성할때 가장 다른 점이 주석하는 방법입니다. 한 줄은 쉽게 '#'를 통해 주석이 가능하지만, 블록을 주석하기 위해서는 아래와 같은 방법을 사용해야 합니다. :
![](http://i1.daumcdn.net/thumb/C200x150/?fname=https://blog.kakaocdn.net/dn/OWDUZ/btq4bjWSJKF/ufvvYbkfv7ycflBu55ch30/img.jpg)
Linux Shell 커맨드 정리 및 활용 예제 netstat 어느 포트가 어떤 프로그램으로 인해 열려있는지 확인하는 방법 netstat -tnlp | grep xxx cut 텍스트 또는 문장에서 하나 이상의 부분을 제거. cut [옵션][파일] 옵션 -c : 지정한 컬럼 출력 -f : 지정한 필드 출력 -d : 구분자(delimiter). -f 옵션과 함께 사용. 예제 [root@ls ]# cut -c 2-5 /etc/passwd /etc/passwd 파일의 2번째부터 5번째 문자까지를 출력한다 [root@ls ]# cut -f 3 anaconda-ks.cfg anaconda-ks.cfg 파일의 3번째 필드를 출력한다. 필드 구분은 tab이다. [root@ls ]# cut -f 2 -d : /etc/p..
![](http://i1.daumcdn.net/thumb/C200x150/?fname=https://blog.kakaocdn.net/dn/VQWCs/btq36QUbrCF/1TJ06I0OUAXaVXk7WwKNzk/img.jpg)
들어가며 리눅스 shell에서 날짜, 시간에 대해서 정보가 필요할 경우가 있습니다. 저 같은 경우에는 로그 파일을 떨어뜨릴때 현재시간이 포함된 파일명을 함께 저장하고 싶을때 사용하는데요. shell script를 작성할때 사용하면 유용하니 사용 방법에 대해서 설명해 드리겠습니다. 리눅스에서 중요한 명령어 중 하나인 man의 명령어를 통해 date를 어떻게 사용하는지는 너무너무 친절하게 나와있으니, 추가적으로 궁금하거나 알고 싶은 내용이 있으면 확인을 해보는게 좋습니다. 특히 linux를 주로 사용하는 유저라면 man에 익숙해지는게 중요하니 아래 내용을 한번 확인해보세요. $ man date 예제 아래 예제에서 현재 시간을 가져오고, 현재 시점에서 +/-를 하는 방법에 대해 설명하고 있습니다. 그 외에도 ..
![](http://i1.daumcdn.net/thumb/C200x150/?fname=https://blog.kakaocdn.net/dn/kygxR/btq35DHMD57/K7ck4xvklxqRlZjZzWKqu1/img.jpg)
Crontab 설정 및 로그 - 스케줄링하기 들어가며 우리가 프로그래밍을 하다보면 주기적으로 실행을 해야할때가 있다. 예를들면 이 스크립트를 매일 아침 7시에 실행해줘, 아니면 1시간 간격으로 실행이 필요할 때가 있다. 물론 프로그램 상에서 구현을 하면 되지만, 그렇게 되면 항상 프로세스를 띄워놓아야 하는 단점이 있다. 그렇다면 리눅스에 있는 스케줄 관리를 해줄 수 있는 놈이 있다면 얼마나 좋을까? 그게 바로 Crontab이다. Crontab은 Linux에서 제공하는 스케줄러의 역할로서, 우리가 설정해 놓은 쉘 명령을 일정/주기에 따라 실행해주는 서비스라고 생각하면 된다. 우리가 사전에 crontab에 시간과 실행해야할 커맨드를 입력해 놓으면 알아서 실행을 해준다. 얼마나 편한가? 그럼 설정하는 방법과 ..