본문 바로가기

포스트464

[Linux] 현재 사용중인 리눅스 쉘 확인하기 리눅스 환경에서 개발을 하다보면 다양한 쉘(Shell)을 만나게 된다. 가장 많이 사용되는 Bash(Bourne-again shell)부터 zsh, csh, ksh 등 다양한 목적으로 개발된 쉘들이 있다. Bash만 지원하면 좋겠지만 때에 따라서는 여러가지 쉘에서 동작하는 스크립트를 작성해야하는 경우가 있다. 각 쉘마다 지원되는 명령이 약간씩 다르고, 출력 포맷도 다를 때가 있다. 때문에 현재 사용중인 리눅스 쉘을 확인해야할 경우가 있다. 현재 시스템에사 사용가능한 쉘 확인 현재 시스템에서 사용할 수 있는 쉘들의 목록을 보려면 /etc/shells 파일을 확인하면 된다. 지금 사용하고 있는 맥북에서 /etc/shells 파일을 조회해본 결과다. 리눅스는 출력 포맷이 약간 다를 수 있지만 파일의 내용이 의.. 2021. 2. 22.
[Linux] 우분투, CentOS 패키지 관리자(apt-get, yum)의 update와 upgrade 차이 우분투(Ubuntu) 리눅스를 사용하는 유저들은 패키지를 설치하기 위해 apt-get 명령을 많이 이용한다. apt-get은 Advanced Packaging Tool의 약자로 우분투를 포함한 데비안(Debian) 계열의 리눅스에서 사용되는 패키지 관리툴이다. 터미널에서 명령을 통해 손쉽게 패키지를 설치할 수 있어 GUI 기반의 패키지 설치 도구보다 더 많이 사용되는 소프트웨어다. CentOS 리눅스를 사용하는 유저들은 yum 명령을 많이 사용한다. Yum은 Yellow dog Updater, Modified의 약자로 레드햇(RedHat) 계열의 리눅스에서 사용되는 패키지 관리툴이다. apt-get과 yum은 update와 upgrade라는 명령을 제공한다. 의미상으로는 유사해보이지만 분명 다른 역할을 .. 2021. 2. 21.
[Linux] date 명령 - 과거와 미래 날짜, 시간 계산하기 Bash로 작성되는 스크립트에서 시간 포맷을 명령어 인자로 입력하는 경우가 많다. 현재 시간을 구하는 것은 물론이고 특정 시간에서 '몇 일전', '몇 일후' 같이 날짜 계산을 해야하는 경우도 많다. 시스템의 시간 정보를 얻어 올 수 있는 date 명령의 옵션을 이용하면 쉽게 날짜, 시간 계산을 할 수 있다. Date 명령 $ date 2021년 2월 11일 목요일 21시 09분 13초 KST 터미널에서 date를 입력하면 현재 시간을 가져올 수 있다. Date 명령 - '-d' 옵션 리눅스의 경우 date 명령의 -d 옵션을 이용해 과거 시간을 계산해 가져올 수 있다. date -d 'yesterday'# 어제 date -d '1 day ago'# 1일전 date -d '1 week ago'# 1주일전 .. 2021. 2. 20.
[Linux] Bash - pushd, popd 명령 Bash에서 현재 작업 디렉토리를 변경하기 위해서 'cd' 명령을 사용한다. Change Directory라는 의미를 갖고 있는 cd 명령을 통해 디렉토리를 오가면서 작업을 할 수 있다. cd 명령 cd 명령은 bash 명령을 배울 때, "Hello world" 프로그램처럼 가장 먼저 배우는 명령어다. $ cd path 부분에 이동하려고하는 디렉토리 경로를 입력한다. 상대경로가 될 수도 있고, 절대경로가 될 수도 있다. $ cd - cd 명령을 이용해서 디렉토리를 변경한 다음 다시 이전 디렉토리로 돌아가고 싶은 경우 path 부분에 '-' 문자를 넣으면 된다. 리모컨의 '이전채널' 버튼을 생각하면 된다. cd 명령의 가장 아쉬운 점은 경로 변경의 히스토리를 저장하지 않는 다는 것이다. A-B-C-D 순으.. 2021. 2. 19.
[Linux] lsof 명령어 설치 및 사용법 lsof는 list open files의 약자로 시스템에서 열려있는 파일에 대한 정보를 출력해주는 명령어다. (대략 '엘에스오브'라고 발음하는 것 같다) 리눅스와 유닉스는 일반 파일과 디렉토리, 소켓, 파이프, 블록 디바이스, 캐릭터 디바이스에 대한 관리를 파일 시스템을 통해서 할 수 있다. 따라서 특정 프로세스가 열고 있는 파일 디스크립터(fd)를 조회해보는 행위는 시스템을 모니터링하는데 굉장한 도움이 된다. 유닉스 계열의 운영체제에서는 프로세스가 열고 있는 파일을 지웠을 때, 파일 시스템에서 ls로 보이지는 않지만 reference count가 0이 아니기 때문에 실제로 지워지지 않고 남아있는 경우가 더러 있다. 이 때, 프로세스가 열고 있는 파일이 위치한 디스크를 정상적으로 언마운트할 수 없기 때문.. 2021. 2. 18.
[책] 킵고잉 - 주언규(신사임당), 21세기 북스 2020년 경제 유튜브로 어마어마한 성공을 이룬 유튜버가 있다. 신과함께, 슈카월드와 함께 대표 경제 유튜버로 유명해진 '신사임당'이다. 라는 책은 신사임당의 이야기를 담은 책이다. 신사임당은 원래 방송국 PD로 근무를 하던 직장인이다. 좁은 취업 관문을 통과하고 방송국 일을 하다가 문득 어제와 똑같은 자신의 모습을 발견하게 된다. 취업이라는 관문을 운 좋게 통과한 이후에 삶의 목표를 잃어버렸다. 다시 취업 이전의 삶으로 돌아가고 있었다. 회사에서 20~30년 매일 똑같은 삶을 반복하다 은퇴하고 늙어갈 것이라는 생각이 들었다. 거의 매일 같은 엄무를 하고 퇴근 후 게임과 텔레비전 프로그램, 인터넷 웹툰에 빠져 살았다. 그래도 5년 뒤, 10년 뒤의 내 모습이 긍정적으로 달라져 있을 거라는 망상에 사로잡혔.. 2021. 2. 17.
[Linux] DNS에서 'CNAME'과 'A 레코드(A Record)'의 차이 블로그의 2차 주소를 관리할 때, 가비아나 후이즈 같은 DNS를 이용한다. DNS에서 커스텀 도메인을 사용할 때, 서브 도메인을 등록하기 위해서 CNAME과 A 레코드 같은 정보를 관리 페이지에서 등록하게 된다. CNAME과 A 레코드 모두 서브 도메인을 등록하기 위해 필요한 정보인데 정확히 어떤 차이가 있는지 알아 둘 필요가 있다. DNS (Domain Name System) 우선 DNS(Domain Name System)부터 알아야한다. 인터넷을 구성하고 있는 서버들은 IP 주소가 할당되어 있다. IPv4의 경우 192.168.0.1 같은 숫자로 구성되어 있다. 이 IP 주소를 알면 특정 서버에 접속할 수 있다. 하지만 IP 주소는 의미가 없는 유니크 값에 불과하다. 때문에 사용자들이 외우기 힘들다... 2021. 2. 16.
[Git] GitHub 릴리즈 기능 간편하게 사용하기 - 'github-release/github-release' 사용법 깃허브에서는 소프트웨어의 소스코드 뿐만 아니라 소프트웨어를 빌드한 결과물을 배포할 수 있는 기능까지 제공하고 있다. '릴리즈(Release)'라는 기능이다. 깃허브 페이지의 오른쪽 탭에 보면 'Release' 항목을 찾아 볼 수 있다. 'Create a new release' 버튼을 눌러서 새로운 릴리즈를 작성할 수 있다. master 브랜치에 달려있는 태그와 함께 릴리즈 제목, 릴리즈 노트 그리고 소스코드를 빌드한 바이너리를 첨부할 수 있다. 별도의 배포 웹 서버나 웹 페이지, FTP 서버를 운영하지 않아도 간단하게 바이너리를 배포할 수 있다. 하지만 웹 페이지를 통해 매번 릴리즈 생성 버튼을 누르고, 파일을 업로드 하는 행위는 매우 귀찮다. 우리는 게으르기 위해서 부지런해지는 개발자이므로 releas.. 2021. 2. 16.
[Git] GitHub 저장소 생성 및 소스코드 올리기 로컬에서 작업중인 git 저장소를 GitHub에 올려 다른 개발자들과 공유할 필요가 있을 수 있다. 우선 코드를 업로드할 깃허브 저장소부터 생성해보자. 1. 깃허브 저장소 생성 깃허브에 접속한다. 깃허브에 로그인을 하면 우측 상단에 + 모양의 버튼이 있다. 이 버튼을 클릭하면 'New repository' 항목을 볼 수 있다. 클릭해서 새 저장소를 만드는 페이지로 간다. 새로만들 저장소의 정보를 입력한다. Repository name에 입력한 정보는 저장소의 주소로 사용된다. Description 항목은 저장소에 대한 간단한 설명을 입력하는 곳이다. Public과 Private은 저장소의 공개 여부를 설정하는 곳으로 Public 저장소는 모두에게 공개된다. (오픈소스) Private 저장소는 저장소 소유.. 2021. 2. 15.