본문 바로가기

분류 전체보기

(205)
[python] 좀비 프로세스 생성하기 (os.popen) 파이썬의 os 모듈의 popen 함수를 통해 자식 프로세스를 만들고 해당 프로세스를 핸들링 하지 않고, Sleep을 걸어두면 해당 시간 동안 좀비 프로세스를 만들 수 있다. import os import time cmd = os.popen('ps -ef --no-headers').read() time.sleep(1000) $ ps -ef | grep 7733 user+ 7733 6238 0 14:02 pts/27 00:00:00 python test.py user+ 7734 7733 0 14:02 pts/27 00:00:00 [sh] os.popen을 하다보면 위와 같이 좀비프로세스를 생성하는 시나리오를 자주 만날 수 있는데, 이 경우 아래와 같이 해당 프로세스를 명시적으로 close해주는 방식으로 없앴..
[python] 가상환경 venv 생성시 나타나는 The virtual environment was not created successfully 에러 해결법 파이썬에서 특정 버전의 가상 환경을 설치할 때 아래와 같은 에러 메시지가 발생할 때가 있다. # python3.7 -m venv venv The virtual environment was not created successfully because ensurepip is not available. On Debian/Ubuntu systems, you need to install the python3-venv package using the following command. apt-get install python3-venv You may need to use sudo with that command. After installing the python3-venv package, recreate your vi..
[Linux] grep시 바이너리 파일 문제 해결 (Binary file matches) 가끔 grep을 통해 파일 내용을 출력해서 보려고 하면 $ grep "Test" test.log Binary file test.log matches 라는 메시지와 함께 의도한 대로 명령을 수행하지 못하는 일이 발생한다. 이는 해당 파일이 대부분 문자열로 인코딩 된 파일이지만 특정 라인 때문에 data file로 인식될 수가 있고, 이 경우 grep은 이를 binary 파일로 간주하게 된다. 이를 위해 grep은 모든 파일을 text 파일로 인식해서 grep 명령어를 수행하도록 도와주는 옵션을 제공한다. -a, --text equivalent to --binary-files=text 위 처럼 a 옵션을 사용하면 binary 파일을 텍스트로 인식해서 내용을 검색할 수 있게 도와준다. $ grep -a "Te..
[Linux] 리눅스 grep에서 특정 문자열 검색 제외하기 grep으로 문자열 필터링 root@vultr:~# ps -ef | grep ps root 15994 15957 0 14:33 pts/0 00:00:00 ps -ef root 15995 15957 0 14:33 pts/0 00:00:00 grep --color=auto ps 만약 위와 같이 ps -ef로 프로세스 정보를 출력했는데, 출력 정보에서 ps가 들어간 정보만 보고 싶다면 grep으로 문자열을 필터링할 수 있다. 그런데 만약 여기서 특정 문자열이 들어간 결과를 제외하고 싶다면 어떻게 해야할까? 이럴때는 -v 옵션을 주면 된다. grep에 -v 옵션을 통해 검색 제외 root@vultr:~# ps -ef | grep ps | grep -v 'ps -ef' root 15995 15957 0 14:33..
[python] byte 단위 변환 코드(byte ->kb, mb, gb, tb, pd, eb) byte를 입력으로 주면 킬로바이트(kilobyte), 메가바이트(megabyte), 기가바이트(giga byte) 단위 등으로 변환하는 코드는 아래와 같다. def byte_transform(bytes, to, bsize=1024): ... a = {'k' : 1, 'm': 2, 'g' : 3, 't' : 4, 'p' : 5, 'e' : 6 } ... r = float(bytes) ... for i in range(a[to]): ... r = r / bsize ... return round(r,2) >>> byte_transform(1073741824, 'g') 1.0 >>> byte_transform(1073741824, 'm') 1024.0 >>> byte_transform(1073741824, '..