도커의 모든 컨테이너를 삭제하는 커맨드이다. 


docker ps -a -q |  xargs docker rm -f




docker ps-a -q의 경과가 빈다면 파이프 다음 커맨드를 실행하고 싶지 않다면

--no-run-if-empty를 추가한다.




docker ps -a -q |  xargs --no-run-if-empty docker rm -f


Posted by '김용환'
,

ubuntu 14:04 도커를 사용 중에 deb.debian.org 연결에 실패한다.

 

# apt-get update
Ign http://deb.debian.org jessie InRelease
Hit http://security.debian.org jessie/updates InRelease
Get:1 http://deb.debian.org jessie-updates InRelease [7340 B]
Hit http://deb.debian.org jessie Release.gpg
Hit http://deb.debian.org jessie Release
Get:2 http://security.debian.org jessie/updates/main amd64 Packages [825 kB]
Get:3 http://deb.debian.org jessie/main amd64 Packages [9098 kB]
Fetched 9930 kB in 14s (666 kB/s)
W: Failed to fetch http://deb.debian.org/debian/dists/jessie-updates/InRelease  Unable to find expected entry 'main/binary-amd64/Packages' in Release file (Wrong sources.list entry or malformed file)

E: Some index files failed to download. They have been ignored, or old ones used instead.

 


이 부분으로 되어 있을 텐데..

 

# cat /etc/apt/sources.list
deb http://deb.debian.org/debian jessie main
deb http://deb.debian.org/debian jessie-updates main
deb http://security.debian.org jessie/updates main


도메인을 변경한다. 

 

 

# vi /etc/apt/sources.list
deb http://archive.debian.org/debian/ jessie main
deb-src http://archive.debian.org/debian/ jessie main
deb http://security.debian.org jessie/updates main
deb-src http://security.debian.org jessie/updates main

 

 


나온지 오래되어서 도메인이 옮겨졌다..


 

 

from ubuntu 14를 사용하는 Dockerfile에는 아래와 같이 한 줄로 작성한다.

 

RUN printf "deb http://archive.debian.org/debian/ jessie main\ndeb-src http://archive.debian.org/debian/ jessie main\ndeb http://security.debian.org jessie/updates main\ndeb-src http://security.debian.org jessie/updates main" > /etc/apt/sources.list
Posted by '김용환'
,


ssh-keyscan, ssh-keygen 예시






$ ssh-keyscan github.com


github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccK...





$ ssh-keyscan -H github.com


|1|IVo9dmTn5FMnAkZ+4xWUuevH5To=|BQBOJ80KCa5BxDJxjGV+ElrfSvw= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccK..





$ ssh-keygen -lf <(ssh-keyscan github.com 2>/dev/null)


2048 SHA256:nThbg6kXUpJWGl7E1IGO,,, github.com (RSA)







$ ssh-keygen -lf <(ssh-keyscan -H github.com 2>/dev/null)


2048 SHA256:nThbg6kXUpJWGl7E1IGO... (RSA)

Posted by '김용환'
,



ubuntu 16 에서 apt-get install을 이용해 설치하다가 다음과 같은 에러가 발생하면 ..



E: Could not get lock /var/lib/dpkg/lock - open (11 Resource temporarily unavailable)

E: Unable to lock the administration directory (/var/lib/dpkg/) is another process using it?  




다음과 같이 설치한다.



sudo rm /var/lib/apt/lists/lock

sudo rm /var/cache/apt/archives/lock

sudo rm /var/lib/dpkg/lock



 sudo dpkg --configure -a




Posted by '김용환'
,


특정 서비스의 systemd를 설정했더라도 부팅 후에 자동으로 데몬을 띄우지 않기 때문에 

부팅 이후에도 잘 동작시키려면 enable/disable을 사용해야 한다.


확인하는 작업은 is-enabled를 사용한다.


$ sudo systemctl is-enabled kafka

disabled



부팅 후에 자동으로 데몬을 띄우게 하려면 enable를 사용한다.

$ sudo systemctl enable kafka

Created symlink from /etc/systemd/system/multi-user.target.wants/kafka.service to /usr/lib/systemd/system/kafka.service.



확인한다.


$ sudo systemctl is-enabled kafka

enabled


부팅 후에 자동으로 데몬을 안 띄우게 하려면 disable를 사용한다.


$ sudo systemctl disable kafka

Removed symlink /etc/systemd/system/multi-user.target.wants/kafka.service.





systemctl --failed를 사용해 부팅안된 서비스를 확인할 수 있다. 

만약 kafka.service가 실행 중에 문제가 생겼다면 다음과 같이 보일 것이다.


$ systemctl --failed

  UNIT            LOAD   ACTIVE SUB    DESCRIPTION

● kafka.service loaded failed failed Postfix Mail Transport Agent


LOAD   = Reflects whether the unit definition was properly loaded.

ACTIVE = The high-level unit activation state, i.e. generalization of SUB.

SUB    = The low-level unit activation state, values depend on unit type.


1 loaded units listed. Pass --all to see loaded but inactive units, too.

To show all installed unit files use 'systemctl list-unit-files'.


Posted by '김용환'
,


System.currentTimeMillis()와 동일한 쉘 커맨드는 다음과 같다.


date +%s



Posted by '김용환'
,


쉘 커맨드에서 0부터 100까지의 특정 값을 랜덤하게 얻고 싶다면. awk를 이용해 쉽게 해결할 수 있다. 


awk -v min=0 -v max=100 'BEGIN{ srand(); print int(min+rand()*(max-min+1))}'




Posted by '김용환'
,


단순 cpu 부하 올리기(부제 모니터링 확인)


metric을 제대로 가져오는지, 제대로 metric threshold에 따라 메시지가 오는 지 확인할 때 dd 커맨드를 사용하면 좋다. dd는 이런 용도는 아니지만, 부하 생성기로도 쓰기도 한다.



$ dd if=/dev/urandom | gzip --best >> /dev/null &

(top으로 자원 사용량 확인)


$ kill %1



$ dd if=/dev/urandom | gzip --best >> /dev/null &

$ dd if=/dev/urandom | gzip --best >> /dev/null &

$ dd if=/dev/urandom | gzip --best >> /dev/null &


$ kill %1

$ kill %2

$ kill %3



Posted by '김용환'
,

리눅스에서 사용되는 sort와 MacOS의 sort 옵션이 조금 다르다.


따라서 리눅스의 sort 유틸을 사용하고 싶다면. 다음 coreutils 패키지를 설치한다.


[~] brew install coreutils




리눅스에서는 잘된 커맨드가 안먹을 때.. 


[~] du -ss Downloads/*  | sort -h

sort: invalid option -- h

Try `sort --help' for more information.




gsort를 사용하면 원하는 sort 기능을 사용할 수 있다.


[~] du -ss Downloads/*  | gsort -h

0 Downloads/2

1 Downloads/Melon




[~] gsort

3

2

1

asdfsaf

^D


1

2

3

asdfsaf

Posted by '김용환'
,



터미널에서 curl이나 wget을 이용해 특수문자를 바로 사용하면 문제가 생길 수 있다. 이럴 때 다음과 같은 커캔드를 사용하면 uri escape 문자를 확인할 수 있다. (perl은 항상 리눅스에 깔려 있다..)


[~] echo -n '!' | perl -MURI::Escape -le 'print uri_escape <STDIN>'

%21


[~] echo -n ' ' | perl -MURI::Escape -le 'print uri_escape <STDIN>'

%20


[~] echo -n '%' | perl -MURI::Escape -le 'print uri_escape <STDIN>'

%25

Posted by '김용환'
,