프로그래밍/운영체제 10

Bash 2차원 배열 정의 및 Loop 탐색

Bash 2차원 배열 정의 및 Loop 탐색 Bash에서는 1차원 배열만 공식적으로 지원하기 때문에 2차원 배열을 사용해야 하는 경우에는 배열을 선언하고 그 배열을 다시 배열에 넣는 과정을 거쳐야한다. 1. Bash 코드 row1=("1" "2" "3" "4" "5") row2=("6" "7" "8" "9" "10") records=(row1 row2) for record in ${records[*]} do row="$record[*]" echo "Row --- " $record for col in ${!row} do echo $record $col done done 2. 실행 결과 Row --- row1 row1 1 row1 2 row1 3 row1 4 row1 5 Row --- row2 row2 6 ..

[리눅스] Shell script와 Make 파일 이용하여 설치 간소화하기

1. 서론 개인적인 개발 요청이 들어와 리눅스 기반으로 프로그램을 개발했고 전원이 인가되면 항상 자동으로 프로그램이 동작해야했기 때문에, 이전 글([라즈베리파이 / 리눅스] init.d 서비스 스크립트 작성을 통한 시작 프로그램 만들기)에서와 같이 init.d에 등록해서 시스템 시작시에 동작하도록 최초 1회 설정해야 한다. 처음에는 install.sh와 같이 쉘 스크립트를 작성해서 전달해주었는데, 알고보니 프로그램을 압축해제한 다음 실행 권한을 주어야 동작한다. 당연하게도 이 경우를 대비해서 실행 권한을 주는 명령어를 전달해주었지만, 제대로 사용하지 못할게 불 보듯 뻔하니 코드를 조금 수정해서 간단하게 프로그램을 설치할 수 있도록 했다. 2.install.sh에 실행 권한 부여하기 쉘 스크립트에 실행 권..

[리눅스] 인터넷 NTP 이용한 시간 동기화와 강제 설정 방법

1. 서론 리눅스기반으로 프로젝트를 진행하면서, 시간 동기화 이슈가 발생했다. 특히 라즈비안 기반의 라즈베리파이에서 RJ45를 이용한 인터넷 사용시 자동으로 동기화가 되지 않는 문제가 있었다. (라즈베리파이에는 RTC가 없기 때문에 전원을 재인가하면 시간이 안맞다.) 일반적인 상황이라면, 인터넷에 연결되었을 때 자동으로 시간을 동기화되지만 그렇지 않은 경우도 발생하여, 코드로 강제 동기화 하는 코드를 작성했다. 2. 현재 시스템 시간 확인하기 리눅스에서 현재 시스템 시간을 확인하기 위해서는 timedatectl을 이용하면 된다. timedatectl의 자세한 사용 방법은 제타 위키를 확인해보자. 링크 3. NTP를 이용한 시간 동기화 NTP는 Network Time Protocol으로 네트워크상에 시간 ..

[맥북] Mac OS 단축키 모음

다시금 맥북을 쓰기 시작하여, 단축키를 외우고자 포스트를 작성한다. 1) 일반적인 단축키 종류 Mac OS 윈도우즈 한영전환 ctrl+space 한영키 창 닫기 cmd + w alt + f4 프로그램 종료 cmd + q alt + f4 모든 창 닫기 cmd + opt + w win키 + D 삭제 cmd + del del 시스템 종료 cmd + opt + esc ctrl + alt + del 새로고침 cmd + r ctrl + r 복사 cmd + c ctrl + c 잘라내기 cmd + x ctrl + x 붙여넣기 cmd + v ctrl + v 실행 취소 cmd + z ctrl + z 모두 선택 cmd + a ctrl + a 2) 유용한 기능 종류 Mac OS 윈도우즈 마지막으로 닫은 탭 열기 shift +..

[윈도우즈] 최신 윈도우즈 10, Windows Defender 끄기 (레드스톤3)

최근 윈도우즈 10이 레드스톤 3버전으로 업데이트되면서, 윈도우즈 내장 백신인 Windows defender 설정 창 UI가 달라졌다. 처음에 어떻게 해야지 실시간 보호를 끄는지 정말 맨땅에 헤딩을 20분정도하고, 다른 사람들도 어려울것 같아서 포스팅을 별도로 한다. 1. 우선 우측 하단에 Windows Defender의 설정을 켜자. 2. 다음으로 Windows Defender 보안 센터 창에서 좌측 하단의 톱니바퀴를 클릭하자 3. 그 다음 중앙부에 있는 "바이러스 및 위협 방지 설정"을 클릭하자. 4. 그러면 바이러스 및 위협 방지 설정 탭이 열리고, 실시간 보호 설정 버튼이 나타난다. 여기서 실시간 보호를 "끔"으로 설정해주면 된다. 5. 정상적으로 보호가 꺼졌다면, "실시간 보호가 꺼져 있어 디바..

[리눅스] C9.io Remote SSH authorized_keys 설정

까먹지 말자 Ubuntu를 설치하고, 가장 기본적으로 설치하는 openssh-server 이후, config 파일을 설정해야하는데, 지금까지 대충하다가 그냥 기록해두고 써먹으려고한다. 대부분의 default 세팅이 그러하듯, 거의 수정할 것이 없다. sudo apt-get update sudo apt-get install openssh-server --yes sudo apt-get install vim --yes sudo vim /etc/ssh/sshd_config 이후 sshd_config에서 설정해야 할 것은 RSAAuthoentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys PasswordAuthenticati..

[리눅스] 다중 NIC에서 다중 Network 라우팅 문제 해결하기

다중 NIC(=네트워크 인터페이스 카드, 랜카드, RJ45...)에서 다중 Network를 사용할때 문제가 발생한다. 엄청 당연하게 랜카드가 여러개면, 해당 랜카드로 들어온 데이터를 당연히 그쪽으로 다시 보내는줄 알았지만, 그렇지 않단다. 대부분의 운영체제에서는 별도의 설정이 없으면, default gateway로 응답을 보낸다. 지금 내가 운영중인 서버 컴퓨터에는 NIC가 4개있고, 그중에서 1개는 공인 IP(고정), 나머지 1개는 내부망 라우터에서 제공하는 동적 IP를 적용했다. 근데 조금 특이한 환경이다. 우선 다른말로 하면, 내부망 IP Netmask가 2개이다. 192.168.0.X과 192.168.1.X처럼 [ 공인 동적 IP Router 1 Router2 Server #1 공인 고정 IP ]..

[리눅스] 우분투에서 Postgresql 9.5 저장 위치 변경하기

DB 서버에 RAID로 구성한 디스크를 준비하였으니, 이제는 데이터 베이스를 RAID 디스크에 옮겨서 보관해야한다. OS 가 깨질 수도 있으니.. 항상 데이터 영역과 OS 영역은 구분하자. 데이터를 저장할 디스크의 마운트 위치가 /db라고하자. [1] 기존 디비 저장 위치 확인 sudo -u postgres psql SHOW data_directory; 먼저 sudo 명령으로 postgres 사용자를 실행한다. 이후 SHOW data_directory;를 입력하여 현재 위치를 확인한다. 아마도 아래처럼 나올 것이다. data_directory ------------------------------ /var/lib/postgresql/9.5/main (1 row) [2] postgresql 멈추기 이제 시..

페이스북으로 공유카카오톡으로 공유카카오스토리로 공유트위터로 공유URL 복사