본문 바로가기

linux58

[PHP] 멀티 프로세스 교착 관리 / semaphore, 세마포어, sem_get() 멀티 프로세스 교착 관리 세마포어와 뮤텍스는 이 포스팅을 보는 본인께서 더 잘 아실 거라 믿는다. 이번에는 php 프로세스 간 세마포어 제어를 다뤄볼 것이다. 인터프리터 주제에 세마포어..!? 라고 생각할 수도 있지만 모든 프로그램은 런타임에 메모리에 적재된 순간부터는 모두 같은 프로세스이기 때문에.. (본인은 php 데몬을 애용하는 편이다. 플랫폼 영향을 안 받기 때문) php - php간, php - 외 native process 간 등 모든 상황에 공유 자원(e.g. file, I/O, db 등 접근 가능한 모든 대상)의 사용 시 교착(deadlock)에 빠질 수 있다. 그래서 php에서도 세마포어가 된다는 것을 알아보려한다. 소스코드 세마포어를 이용하기 위해선 sem_get() 을 사용해야 하는데.. 2022. 1. 21.
linux NTP Server / Client 설치 및 설정 정보 NTP Server / Client 설치 및 설정 정보 NTP(Network Time Protocol)를 보통 WAN 환경에서 사용하지만 Local network 구성으로 폐쇄망을 사용하는 경우에는 Public domain의 NTP를 사용할 수 없다. 그렇다고 폐쇄망 내에 위치한 많은 장치의 시간을 하나씩 수동으로 맞춘다는건 무척 많은 시간과 노력이 소요되며 입력하는 사용자의 실수 등으로 장치들의 시간 동기화가 안맞을 확률이 매우 높을 것이다. 그렇기 때문에 폐쇄망의 특정 장치를 NTP 서버로 설정하고 그 외에 모든 장치를 NTP 클라이언트로 사용하게 되면 적어도 같은 네트워크 내에서는 시간 동기화를 이뤄낼 수 있다. 물론 특정 장치의 시간은 사용자가 잘 맞춰줘야 하지만. 본론으로 들어가자. 1. 목적 .. 2022. 1. 20.
[C/C++] C언어 파일 생성/삭제 이벤트 모니터링 / inotify, event monitoring C언어 파일 생성/삭제 이벤트 확인 inotify - monitoring filesystem events, inotify 를 이용하여 파일시스템 이벤트를 모니터링하는 프로그램을 만들어보자. 응용 또는 질문은 댓글에 남겨주면 성실하게 답장해주겠다. 이번에도 늘 그렇듯 완성된 동작의 소스코드를 동작한다. 이번 소스코드에서는 생성(IN_CREATE)와 삭제(IN_DELETE)만 사용하였지만 더 많은 event trigger가 존재한다. inotify의 man page 일부 발췌 IN_ACCESS (+) File was accessed (e.g., read(2), execve(2)). IN_ATTRIB (*) Metadata changed—for example, permissions (e.g., chmod(2).. 2022. 1. 20.
mplayer slave mode, 파이프, 커맨드 사용 mplayer slave mode, 파이프, 커맨드 사용 mplayer slave mode - pipe를를 통한 command 전달 mode로 동작 ex) mplayer -slave 1. idle 동작 - mplayer 가 background process로 동작하여 command 전달 시 그에 해당하는 동작 수행. - idle 동작 시pipe를 반드시 지정해야 함. ex) mplayer -slave -idle -input file= 2. standalone 동작 - mplayer 실행 시 실행할 파일/URL을 입력받아 동작. - pipe 지정 시 pipe 를 통한 command 전달 가능. ex) mplayer -slave -input file= 3. 비교 - idle 동작 시background로 커맨.. 2022. 1. 20.
리눅스 특정 프로세스 전부 종료시키기 / ps, grep, awk, xargs, kill 리눅스 특정 프로세스 전부 종료시키기 리눅스의 명령어들 ps, grep, awk, xargs, kill을 조합하여 특정 프로세스를 전부 종료시키는 예제를 해보겠다. 이번 명령어 실험 대상은 chrome으로 해보겠다. ps -ef | grep chrome 명령으로 여러 개의 프로세스가 떠있는 걸 확인할 수 있다. 실제로 사용할 때는 chrome 이 아니라 원하는 프로세스명을 넣으면 된다. muabow@muabow:~$ ps -ef | grep chrome muabow 13759 1 2 13:32 ? 00:02:43 /opt/google/chrome/chrome muabow 13770 13759 0 13:32 ? 00:00:00 /opt/google/chrome/chrome --type=zygote muab.. 2022. 1. 19.
linux netstat 용어 설명 linux netstat 용어 설명 netstat -antp 실행 화면 본인의 서버에서 netstat 를 실행한 화면이다. 이번에는 netstat 의 각 항목에 대한 설명을 진행하고 netstat 의 옵션은 추후에 기회가 되면 포스팅하겠다. Proto - 해당 네트워크 행위의 프로토콜을 명세한다. tcp인지 udp인지, ipv6인지. 위의 화면에서는 -antp의 t의 옵션으로 tcp만 출력한다. Recv-Q - 해당 프로세스가 받은 network data의 양을 의미한다. 원격으로부터 수신받은 데이터는 linux system queue에 buffer 되어있다가 프로세스에서 준비되면 buffer 된 데이터를 읽어가는 방식으로 동작한다. Recv-Q가 줄지않고 계속 늘어난다면 프로세스의 수신부에 문제가 있다.. 2022. 1. 18.
출력에 색깔 입히기 정리 및 결과, ansi color 출력에 색깔 입히기 정리 및 결과 일전 C언어 색깔 입히기 포스팅에 이어 일부가 아닌 전체적인 ansi color 코드와 출력을 알아보고자 한다. https://muabow.tistory.com/173 [C/C++] C언어 출력에 색깔 입히기 예제 C언어 출력에 색깔 입히기 - print color, ANSI color, 설명, 예제 C 언어로 개발을 하다 보면 출력이나 로그에 색깔을 써야 할 때가 있는데 간단하게 정의해 놓고 사용한다. 샘플 코드는 표와 같이 사 muabow.tistory.com 위 포스팅의 코드 확장이라고 봐주면 된다. 스크립트 ansi.sh 내용 ansi color는 shell 뿐만 아니라 C/C++ 및 리눅스의 모든 출력에서 사용이 가능하다. 아래 스크립트 내용과 밑에 결과 화면 .. 2022. 1. 17.
linux coredump, core 파일 생성 방법, ulimit linux coredump, core 파일 생성 방법 리눅스 상에서 프로그래밍 작업 시 core 파일이 필요한 순간이 있다. C/C++ 프로그램 실행 중 segmentation fault 발생 시 core 파일을 만들어 디버그 작업을 해야 한다던가.. ulimit 명령어는 시스템 정보(pipe, memory, file size, core size, stack size, descriptor open 개수 등)를 보여주고 설정할 수 있는 명령어이다. 그럼 ulimit -a를 통해 시스템 정보를 살펴보자. muabow@muabow:~$ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (.. 2022. 1. 16.