목록Operating System (61)
우노
; 하나의 라인에 주어진 명령어들을 성공, 실패와 관련 없이 전부 실행합니다. ls ; pwd || 첫 번째 명령어가 실패하면 두 번째 명령어를 실행합니다. 첫 번째 명령어가 성공하면 두 번째 명령어는 실행되지 않습니다. echo "first" || echo "second" && 첫 번째 명령어가 성공적으로 실행되면 두 번째 명령어를 실행합니다. 첫 번째 명령어가 실패하면 두 번째 명령어는 실행되지 않습니다. make && make install | 한 명령어의 출력을 다른 명령어의 입력으로 전달할 때 사용합니다. ps -ef | grep python > 명령어의 출력을 파일로 리다이렉션합니다. 파일이 이미 존재하면 덮어씁니다. echo abcde > test.txt >> 명령어의 출력을 파일로 리다이렉..
쉘 스크립트 생성 #!/bin/bash echo "첫 번째 파라미터: $1" echo "두 번째 파라미터: $2" echo "세 번째 파라미터: $3" echo "모든 파라미터 : $@" echo "파라미터 개수 : $#" 쉘 스크립트 실행 시 인자 전달 ./test.sh a b c #첫 번째 파라미터: a #두 번째 파라미터: b #세 번째 파라미터: c #모든 파라미터 : a b c #파라미터 개수 : 3
들어가기 앞서, Linux에서 프로세스를 실행하다보면, 세션과의 연결이 끊어져도 백그라운드에서 계속 실행해야할 때가 있습니다. 이때 사용할 수 있는 명령어가 nohup 과 & 입니다. 백그라운드 실행 코드 # nohup [프로세스실행명령어] & nohup python test.py & 종료 방법 ps -ef | grep [실행프로세스] kill -9 [실행프로세스PID번호] nohup 과 & 의 차이 Shell에서 특정 프로세스를 실행하고 Shell을 종료했을 때, Nohup 명령어로 실행할 경우 종료되지 않습니다. Shell에서 특정 프로세스를 실행하고 Shell을 종료했을 때, & 명령어로 실행할 경우 종료됩니다. 요즘은 & 도 nohup과 같은 동작을 보이긴 합니다. 하지만, 두 가지 모두 조합해서..
들어가기 앞서, Linux에선 다양한 방식을 사용해 OS 버전 및 CPU 정보를 확인할 수 있습니다. 해당 포스트에선, 특정 방식만을 다루겠습니다. OS 버전 확인 cat /etc/issue # Debian GNU/Linux 11 \n \l CPU 정보 확인 dpkg -s libc6 | grep Arch # Architecture: amd64 # Multi-Arch: same
들어가기 앞서, Linux는 다양한 방식을 사용해, 사용되고 있는 포트를 확인할 수 있습니다. netstat ss nmap lsof 해당 포스트에선, netstate, lsof 명령어에 대해서 간단히 다뤄보겠습니다. netstate 전체 포트 확인 netstat -tulpn # Active Internet connections (only servers) # Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name # tcp 0 0 127.0.0.1:45650 0.0.0.0:* LISTEN 24336/python3 # tcp 0 0 127.0.0.1:45490 0.0.0.0:* LISTEN 8301/python3 특정 포트 확인 ne..
쓰레드 세이프(Thread Safe)란? 멀티 쓰레드 프로그래밍에서, 어떤 공유 자원에 여러 쓰레드가 동시에 접근해도, 프로그램 실행에 문제가 없는 상태를 의미합니다. Thread Safe 를 지키기 위한 방법은 네 가지로 이루어져있습니다. Mutual exclusion (상호 배제) Atomic operation (원자 연산) Thread-local storage (쓰레드 지역 저장소) Re-entrancy (재진입성) Mutual exclusion (상호 배제) 공유자원에 하나의 Thread 만 접근할 수 있도록, 세마포어/뮤텍스로 락을 통제하는 방법입니다. 일반적으로 많이 사용되는 방식입니다. 적용 예제 Python 은 Thread Safe 하게 메모리 관리 하지 않으므로, GlL(Global In..
프로그램(Program)이란? 개념 파일이 저장 장치에만 저장되어 있고, 메모리에는 올라가 있지 않은 정적인 상태를 의미합니다. 즉, 아직 실행되지 않은 파일(코드 덩어리)을 의미합니다. 특징 모든 프로그램은, 운영체제가 해당 프로그램을 위한 메모리 공간을 할당한 뒤, 자원을 할당해줘야 실행할 수 있습니다. 프로세스(Process)란? 개념 운영체제로부터 자원을 할당 받은 작업의 단위를 의미합니다. 즉, 프로그램이 실행된 상태를 의미합니다. 특징 프로그램을 실행하는 순간, 해당 파일은 운영체제가 할당해준 메모리에 올라가게 되며, 운영체제로부터 시스템 자원을 할당받게 됩니다. 이때, 운영체제는 각 프로세스의 독립된 메모리 영역을 Code, Data, Stack, Heap의 형식으로 할당해줍니다. Code ..
VSCode for mac 설치 및 환경 설정 먼저, 아래 링크로 들어가서 VSCode for mac을 다운 받고 실행합니다. https://code.visualstudio.com/ 왼쪽 메뉴의 네모네모난 아이콘을 클릭해, Extension Marketplace 로 들어갑니다. 텅빈 껍데기 뿐인 VSCode에 여러가지 기능을 추가할 수 있는 플러그인들이 모여있는 곳입니다. Python 을 검색해서, Microsoft의 Python Extension을 install 합니다. .py 파일 생성 및 실행 상단 [File] 메뉴에서 [Open Folder]를 클랙해 작업 폴더를 지정하고, 새로운 .py 파일을 생성합니다. 간단한 코드를 작성한 뒤, 우측 클릭 후, [Run Python File in Termin..
들어가기 앞서, Curl 로 데이터를 다운 받을 경우, ‘>’ 를 사용하면, 특정 디렉토리에 원하는 파일명으로 다운받을 수 있습니다. 예제 코드 curl -O 다운로드주소/데이터.zip > 다운로드경로/데이터.zip
curl 응답 시간 측정 코드 curl -o /dev/null -s -w %{time_total}\\n "주소" # 0.994985 option -o remote 에서 받아온 데이터를 콘솔에 출력합니다. 하지만, [/dev/null] 가 추가로 적힌 경우엔, 출력되지 않습니다. -s 진행 내역이나 메시지등을 출력하지 않습니다. -w 요청/응답에 관한 많은 정보를 출력합니다. [%{time_total}\n] 를 사용할 경우, 요청에서 응답 완료까지의 시간이, 초 단위로 밀리세컨드까지 출력됩니다.