Programming/OS, Program, Framework Tip 49

ShellCheck - 쉘(e.g. 배쉬) 스크립트 문법 검사 툴

Shell Script 보통 반복되는 명령어들을 자동화시키고 싶을 때 쉘 스크립트를 짜곤 합니다. 저도 종종 짜서 사용하곤 하는데, 쉘 스크립트라는 게 참 가독성이 기가 막혀요. 조금만 복잡해지면 알아보기가 어려워집니다. 물론 저같은 초보자한테는요. 그래서 아 컴파일러처럼 쉘 스크립트도 문법을 검사할 수 없나? 싶어서 찾아본 프로그램입니다. 굉장히 편리하고, 놓칠 수 있는 실수를 잘 잡아주네요 :) ShellCheck ShellCheck는 정적 분석 도구입니다. 정적 분석이란 프로그램이 실행되기 전에 소스 코드와 리소스만으로 분석하는 걸 말해요. 프로그램이 실행되며 여러 환경에 영향을 끼치는 걸 파악하고, 메모리를 보고 분석하는 건 동적 분석이라고 합니다. 정적 분석 도구는 사용하기 쉽다는 장점이 있는데..

우분투 17.10 - Gtk-WARNING cannot open display 고치는 방법

GTK warning 우분투 17.10을 사용하면서 미묘할 때가 많았는데요, 그 중 하나가 특정 GUI 프로그램은 실행시켜도 아무 응답이 없던 문제가 있었습니다.런처에서 열면 무반응, 터미널에서 열면 GTK warning ... 아래는 gparted 를 실행시켰을 때 모습이에요. GUI 창은 안 떴습니다.그래서 구글링해보니 많이들 겪고 있더라구요. 찾아낸 해결책을 포스팅합니다. 해결 방법 굉장히 간단해요. 터미널을 열고 다음 명령어를 입력합니다. # Root 사용자 xhost +si:localuser:root # 개인 사용자 xhost +si:localuser:awesometic 끝입니다 :)xhost +si 명령어를 통해 특정 사용자가 X 서버에 접근하는 것을 허용해주는 명령어라고 하네요. 우분투 데스..

scp - SSH 프로토콜로 파일 전송

scp SSH 서버 간 간단하게 파일을 전송하고 싶을 때 유용합니다. ftp보다 쉽고 보안상으로도 안전해요. Secure CoPy 의 줄임말이거든요. 본문 scp로 무엇을 할 수 있는지 생각해봅시다. 일종의 P2P 파일 전송이니까, 크게 아래 두 가지 경우로 나뉘겠네요. # 상대방의 시스템으로 파일 밀어넣기 scp /path/to/sourceFile user@host:/path/to/targetFile # 상대방의 시스템에서 파일 가져오기 scp user@host:/path/to/sourceFile /path/to/targetFile 옵션을 볼게요. scp usage: scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit]..

Terminator - 리눅스 터미널 대체, 화면 분할

개요 출처: https://gnometerminator.blogspot.kr/p/introduction.html 리눅스를 쓰다 보면 종종 터미널 화면이 분할되었으면 할 때가 있는데요. 터미널 창 4개를 띄워서라도 각 모서리에 두고 싶은데 그러기 어려워요. 그래서 나온 프로그램이 터미네이터입니다. 화면 분할 뿐 아니라, 터미널을 사용하면서 "아 이게 되면 참 좋을텐데..." 하는 어지간한 게 모두 들어가 있어요. 리눅스 필수 프로그램인 듯. Terminator 설치는 간단히 패키지 매니저에서 하시면 돼요. apt update apt install terminator 그리고 사용자 설정 파일을 작성해줘요. 아래는 http://programmingsummaries.tistory.com/361를 참고하여 작성한..

iconv - 리눅스에서 텍스트 파일 인코딩 변경 (EUC-KR to UTF-8)

개요 윈도우 메모장으로 작성한 문서를 우분투에서 열려고 하니, 글자가 전부 깨져 보였어요. 메모장에서 저장할 때 파일 인코딩을 UTF-8로 할걸 했지만, 다시 윈도우 PC에서 열어서 UTF-8로 저장하고 오기엔 귀찮았어요. 그래서 찾았어요. 명령어로 한 번에 UTF-8로 바꾸는 방법을.. 와일드 카드 문자(*)로 여러 파일을 한 번에 바꿀 수 있으니까요 :) iconv iconv는 기본적으로 설치되어 있을 거예요. 만약 없다면, apt 로 설치해주세요. 간단히 파일 인코딩이 EUC-KR인 텍스트 파일이 있는 경로로 가서 아래 명령어를 실행해주시면 돼요. iconv -c -f euc-kr -t utf-8 test.txt > test-utf8.txt 인코딩이 타입을 바꾸는 거라 EUC-KR 도 명시해줘야 해..

iozone - 리눅스 디스크 성능 테스트

개요 리눅스 디스크 성능 테스트 방법입니다. 얘도 CLI 환경에서 사용하기 때문에 서버 성능 평가를 위해 (많이?) 사용된다고 하네요. 근데 sysbench에서 제공하는 테스트 종류가 많기 때문에 간단한 벤치마킹을 위해선 굳이 필요하진 않구요. 테스트 결과가 sysbench보다 자세하니 자세한 걸 원할 때 사용하시면 될 것 같아요. iozone 빌드 iozone은 직접 빌드해야 합니다. 일단 소스 파일을 받아 압축을 풀어줍시다. wget http://www.iozone.org/src/current/iozone3_471.tar tar -xvf iozone3_471.tar cd iozone3_471/src/current/ 여기서 make 명령어를 입력하시면, makefile에 정의된 대로 빌드가 됩니다만, ..

sysbench - 리눅스 시스템/DB 성능 테스트 (ODROID XU4 성능)

개요 간단한 리눅스 성능 테스트 방법입니다. CLI 환경에서 sysbench를 이용하기 때문에, 서버 성능 평가를 위해 많이 사용된다고 하네요. sysbench sysbench 를 설치하고, sudo apt install sysbench 많은 임시 파일들이 생성되기 때문에 임시 디렉토리도 만듭니다. mkdir sysbench_temp cd sysbench_temp sysbench 로 크게 4가지 성능 테스트를 진행하실 수 있습니다. --num-threads 옵션에 자신의 CPU에 맞는 쓰레드 수를 넣어주세요. 예제 테스트 환경: Ubuntu Minimal 16.04.3 LTS, 4.9.58-70, eMMC 32G. 참고삼아 봐주세요. ##### CPU ##### sysbench --test=cpu --c..

우분투 17.10 - ibus 한글 입력

개요 Ubuntu 17.10 이 새로 릴리즈 됐습니다. 기존 자체 환경인 Unity를 버리고 Gnome 데스크탑 환경이 기본값이 되면서 사용 환경이 조금 바뀌었어요. Unity도 Gnome 기반이니 어마무시하게 바뀐 건 없지만요. 캐노니컬에서 일부러 기존의 Dock 을 유지했다고도 하고.. 새로운 17.10 우분투를 설치한 후, 가장 간단하고 안정적인 방법으로 한글 입력을 해봅시다. # 내장 ScreenShot 프로그램을 사용했는데, 스크린샷에선 UI가 기본 Gnome 처럼 파란색 테마로 바뀌네요. 설정하실 땐 주황색일 거에요. 한글 입력 설정 "Software Center"를 열고 "Gnome Tweaks"를 검색해 설치하세요. 실행한 다음 아래 메뉴로 가 "Additional Layout Option..

실행중인 프로세스를 SSH 접속 종료해도 유지하기

원래는 nohup으로 현재 터미널과 상관없이 백그라운드에서 계속 돌게 할 수 있습니다만,이미 실행한 프로세스를 터미널을 종료해도 유지하고 싶다면 아래와 같은 방법을 사용하면 된다네요. 1. Ctrl + z 로 실행중인 프로세스 중지 2. bg (#) 을 입력해 백그라운드에서 해당 프로세스 재실행 3. disown 명령어를 통해 작업의 소유권을 현재 쉘 세션에서 해제 4. 맘놓고 SSH 로그아웃 / 해당 터미널 세션 종료 출처) http://brownbears.tistory.com/174

명령어 - sort

sort는 어떤 결과를 정렬하고 싶을 때 사용할 수 있습니다. 예를 들어, 온도 로그 파일을 정렬해서 보고 싶다거나.. 할 때요. 간단하게, # 3번째 컬럼을 기준으로 정렬합니다. sort -k 3 /path/to/file # 컬럼의 기준을 tab으로 바꿉니다. sort -t $'\t' / path/to/file # 정렬 결과를 반대로 표시합니다. sort -r /path/to/file # 파이프로도 사용하실 수 있습니다. tail /path/to/file | sort 참고) https://linux.die.net/man/1/sort