리눅스를 쓰면 파일명.sh 형태의 bash 스크립트를 볼 일이 많습니다. 스크립트 내용을 살펴보면 자주 등장하는 기호들이 있는데 대표적인 것이 >, >>, 2>&1, 2> 등입니다. 이를 리디렉션이라고 부릅니다. 예를 들어, 아파치 톰캣을 실행하는 startup.sh 쉘 스크립트 파일에는 서버를 시작하고 출력되는 로그를 catalina.out 파일에 저장하는 내용이 있습니다. ... CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out exec "$PRGDIR"/"$EXECUTABLE" start \ >> "$CATALINA_OUT" 2>&1 "&" ... 이 글을 읽으면 리디렉션이 사용된 위 스크립트를 이해하실 수 있습니다. 리디렉션이란? 리눅스에서 리디렉션(redi..
같은 네트워크에 있는 리눅스에서 다른 리눅스로 파일을 전송할 때 scp 명령어를 사용할 수 있습니다. 파일, 폴더 모두 전송 가능하며 로컬 서버 기준으로 원격 서버 보내오는 것과, 원격에 있는 파일을 가져오는 것 모두 됩니다. SCP scp는 secure copy의 약자입니다. 로컬 컴퓨터와 원격 컴퓨터 간 파일을 전송하는 데 사용됩니다. 데이터 전송은 SSH 프로토콜을 사용합니다. 때문에 사용 시 원격 서버에 대한 SSH 권한이 있어야 합니다. 기본 구문은 아래와 같습니다. scp [옵션] [전송할 파일] [전송할 위치] 예시) 로컬 서버에서 원격 서버로 파일 복사 리눅스 서버 두 개에 각각 local 계정과 remote 계정을 이용해서 scp 테스트를 해보겠습니다. 로컬 서버에 있는 localfile..
리눅스 kill 명령어는 프로세스를 종료할 때 사용됩니다. 이때 터미널은 프로세스에 시그널을 보냅니다. 프로세스가 받는 시그널에 따라 프로세스의 종료 행위에 차이가 있습니다. 리눅스 kill kill [signal] [process ID(s)] kill을 통해 프로세스에 보낼 시그널 넘버와 종료할 PID를 입력합니다. 예를 들어, 1234라는 PID를 가진 프로세스를 종료할 때 아래와 같이 사용할 수 있습니다. kill 1234 그런데 kill은 -9 옵션과 함께 사용하는 경우가 더 많습니다. 그 이유는 뒤에서 설명드리겠습니다. kill -9 1234 시그널이란? kill 뒤에 붙이는 숫자 옵션을 이해하기 위해서는 시그널(signal) 개념을 알아야 합니다. 리눅스에서 시그널이란 프로세스에 전달되는 일종..
사실 맥을 사용하면서 DS_Store 파일을 인식하는 경우가 많지는 않습니다. 기본적으로는 숨겨져 있기 때문입니다. 맥에 있는 파일을 윈도우로 전달했을 때 DS_Store 파일이 딸려오는 경우가 있는데, 아마 이런 경우에 의문을 가지는 경우가 많을 거 같습니다. DS_Store 파일 DS_Store 파일은 각종 설정 값을 저장하는 파일입니다. 보기 설정, 아이콘 위치, 정렬 순서, 메타데이터 등을 저장하며 기본적으로 숨겨져 있지만 Finder에 표시되는 모든 폴더에 생성됩니다. 이 파일은 맥OS에서 자동으로 생성 관리합니다. 사용자가 수동으로 삭제할 수 없습니다. DS_Store 파일 생성되는 이유 위에서 설명한 대로 DS_Store 파일은 폴더의 각종 속성을 기억하기 위해 생성됩니다. 사용자가 정의한 ..
윈도우에서는 프로그램을 설치할 때 .exe 확장자 파일을 주로 사용합니다. 그런데 맥에서는 전혀 다른 파일을 사용합니다. 이때 마주하는 대표적인 파일이 DMG와 PKG 파일입니다. DMG 파일이란? DMG(Disk Image) 파일은 윈도우로치면 iso 파일과 비슷합니다. 맥OS에서 애플이 사용하는 디스크 이미지 파일 형식입니다. 맥 사용자에겐 dmg 파일을 응용 프로그램 폴더에 드래그&드롭하는 방식이 가장 친숙합니다. 저도 처음엔 이게 어떤 의미인지 이해가 가지 않았는데 이미지 파일을 마운트 시키고 사용할 수 있는 형태로 만드는 것으로 보면 될 거 같습니다. PKG 파일이란? PKG는 Package의 약자입니다. 간혹 dmg가 아닌 pkg 형태로 제공되는 프로그램도 있습니다. 이건 윈도우로 치면 exe..
좀비 프로세스는 실행을 완료했으나 죽지 않고 계속 프로세스 테이블에 남아 있는 프로세스입니다. 정상적으로 동작하지 않는 프로세스가 메모리만 차지하고 남아있으니 좀비 프로세스가 쌓일수록 시스템은 문제가 생깁니다. 좀비 프로세스가 발생하는 이유와 운영체제별로 좀비 프로세스 현황을 확인하는 방법을 알아보겠습니다. 좀비 프로세스 발생하는 이유 좀비 프로세스는 부모 프로세스가 자식 프로세스를 제대로 종료하지 못할 때 발생합니다. 그런 상황은 보통 부모 프로세스가 자식 프로세스보다 먼저 종료되는 경우 발생합니다. 원래 자식 프로세스는 부모 프로세스가 종료해줘야 합니다. 그렇다고 부모 프로세스가 먼저 종료된 모든 경우에 좀비 프로세스가 발생하는 건 아닙니다. 예를 들어 리눅스에선 컴퓨터가 실행될 때 init 또는 s..
리눅스에서 지속적으로 생성되는 로그 파일을 백업하고 지우는 bash 스크립트를 작성해 보겠습니다. 스크립트가 잘 작동하면 crontab에 등록해서 매월 자동으로 로그를 백업하고 지우는 스케줄러도 적용해 보겠습니다. 이와 비슷한 작업이 필요하신 분들에게는 좋은 참고가 될 것입니다. 로그 삭제 자동화 방법 저는 주기적으로 시스템 로그가 쌓이는 /var/log 경로에 있는 로그를 다른 파티션으로 백업하고 해당 로그 파일은 지우는 상황을 가정하고 구현하겠습니다. 1. 삭제 경로, 백업 경로 확인 먼저 /var/log 경로에 testmessages* 형태의 파일을 임의로 생성하겠습니다. 시스템 로그가 쌓이고 저장되는 형태와 동일하게 만들었습니다. [root@localhost log]# pwd /var/log [r..
리눅스는 시스템이 가용 가능한 메모리의 임계치에 도달하면 자동으로 메모리를 가장 많이 차지하고 있는 프로세스를 강제 종료시킵니다. 이런 역할을 하는 리눅스 커널 기능과 강제 종료할 프로세스 선택 기준에 대해 알아보겠습니다. OOM Killer란? OOM Killer는 시스템에서 사용 가능한 여유 메모리가 임계치 아래로 떨어질 때 자동으로 프로세스를 죽이는 리눅스 커널 기능입니다. Out Of Memory Killer라는 이름 그대로의 역할을 수행합니다. OOM 킬러가 필요한 이유는 리소스 과다 사용, 메모리 누수 같은 문제가 발생했을 때 해당 프로세스를 죽임으로써 메모리를 확보하고 시스템 충돌을 방지하기 위함입니다. 쉽게 말해 컴퓨터가 죽기 전에 프로세스를 죽인다고 이해하시면 될 거 같습니다. OOM 킬..
리눅스에서 파일을 실행할 때 ./ 뒤에 파일명을 붙여서 명령어를 입력합니다. 습관처럼 사용하다보면 ./가 마치 리눅스에서 파일을 실행하는 기호(?)처럼 느껴지기도 합니다. 결과적으로는 맞는 말이지만, 정확히 말하면 ./는 상대경로로 현재 디렉토리를 나타내는 표시일 뿐입니다. 리눅스에서 파일을 실행하는 방법은 파일의 전체 경로(full-path)를 입력하는 것입니다. 파일 실행 예시) 리눅스 기본 명령어들 pwd 명령어는 현재 위치를 알려줍니다. [root@localhost ~]# pwd /root 터미널에 pwd를 입력하는 건 "pwd"라는 명령을 내리는 개념이 아닙니다. pwd라는 파일을 실행하는 것입니다. pwd 파일의 경로는 /usr/bin/pwd입니다. 파일의 전체 경로를 출력하는 which로 확..
윈도우에 내장된 명령줄 인터페이스는 cmd와 파워쉘이 있습니다. 두 애플리케이션 모두 명령을 실행하고 스크립트를 사용할 수 있지만, 수행하는 작업에 따라 더 적합한 툴이 있습니다. 파워쉘과 cmd의 차이점을 알아보겠습니다. CMD vs PowerShell 명령 프롬프트(cmd)는 윈도우에서 사용하는 명령줄 인터페이스입니다. 모든 윈도우 버전에 포함되어 있으며 간단한 명령이나 배치 파일 실행, 기본 스크립트 실행 같은 간단한 작업에 적합합니다. 파워쉘(PowerShell)은 윈도우 7부터 도입된 고급 명령줄 인터페이스입니다. .NET 프레임워크를 기반으로 cmd 보다 강력한 언어를 사용합니다. 파이프라이닝, 객체 지향 명령어, 폭넓은 내장 모듈 등이 포함되어 있습니다. 때문에 파워쉘은 관리 작업 자동화, ..