Category: 리눅스

bg, fg 사용법

background 작업과 foreground 작업이란?

리눅스를 사용하다보면 apt-get 등을 이용해서 프로그램을 설치할 수도 있고, git clone 등을 이용해서 부가적으로 다운을 받을 수도 있다.

간혹 작업을 시행했을 때 파일의 용량이 과도하게  많을 때 터미널창에서 다른 작업을 하지 못한채 막연히 기다리고만 있어야하는 경우가 있다. 이러한 경우에 bg 명령어를 사용하여 해결 할 수 있다.

또한 이와 반대로 bg로 밀어냈던 작업을 다시 fg로 끌어 올리고자 할 때 fg 명령어를 이용하여 진행 할 수 있다.

 

bg와 fg의 원리와 사용법

bg로 프로세스 시작

$./storm supervisor &

 

프로세스 시작 후 bg로 작업 전환

$bg

프로세서인 supervisor 를 background가아닌 foreground로 실행 한 뒤 bg 명령어를 통해 background 작업으로 전환할 수 있다. 스크린샷, 2016-08-05 11-29-10.png

 

 

bg작업을 fg로 변환

$fg supervisor

bg로 실행되던 작업을 foreground로 변경 할 수 있다.

 

현재 background에서 진행중인 작업 확인

$jobs

스크린샷, 2016-08-05 11-31-57

 

 


background에서 진행중인 작업 중지

위 사진처럼 jobs를 통해 진행중인 작업을 확인 할 수 있다. 앞에 있는 [1][2][3]이 각 프로세스의 번호가 된다. kill 명령어를 이용해 각 번호의 작업을 중지 시킬 수 있다.

$jobs
$kill %3
$kill %2
$kill %1

 

fg에서 진행 중인 작업 중지
스크린샷, 2016-08-29 17-06-19.png

$jps
$kill -9 30206

번호를 이용해 작업을 중지 시킬 수 있다.

 

그리고..

작업을 종료 하는데에는 순서가 중요하다. stack에서 사용하는 것처럼 LIFO(last in first out)를 사용하여 순차적으로 종료하는게 좋다.

Install OpenJDK-8 on Ubuntu

우분투 설치 후 자바가 설치되어있는지 먼저 확인을 해 보았다.

자바 버전 확인

$java -version

스크린샷, 2016-07-19 15-16-32.png

 

JDK란?
Java Development Kit 의 줄임말로 자바 개발을 위한 도구이다.
자바 개발에 필요한 자바 컴파일러(Javac), 자바가상머신(JVM), Java Libary, JRE( java runtime environment) 등을 포함하고 있다.

JDK에는 대표적으로 두 가지 버전이 있다.

openJDK?
Sun(현재 Oracle)사에서  오픈소스화 기반의 Java Development Kit를 배포하기 위해 만든 것으로 우분투를 설치하고 사용하는데에  가장 쉬운 자바의 기본버전이다.

OracleJDK?
OpenJDK의 기반에 추가 컴포넌트까지 갖춘 것이다.  JDK7버전 이전에서는 openJDK와 OracleJDK의 사이에 차이가 존재했지만 지금은 거의 같다고 볼 수 있다.

 

JDK설치

openJDK를 설치할 것이기 때문에 JRE설치 후 JDK설치로 넘어간다.

 

OS버전 확인

$hostnamectl

스크린샷, 2016-08-30 08-22-18

버전 : Ubuntu 16.04 LTS desktop 64bit

 

JRE 설치

$ sudo apt-get install openjdk-8-jre

스크린샷, 2016-07-19 16-05-07.png

 

 

JDK 설치

$sudo apt-get install openjdk-8-jdk

 

default JRE/JDK?

기본적으로 openJdk와 동일하다. 표준 자바를 설치한다. i386에 추천된다.


default JRE/JDK 설치

$sudo apt-get install default-jdk
$sudo apt-get install default-jre

 

자바 버전 관리
혹시 default-jdk와 openjdk가 따로 구분이 되는지 확인하자.

$sudo update-alternatives --config java

스크린샷, 2016-07-19 17-00-58
다음과 같이 openJDK만 설치했을때와 결과가 같은 것을 볼 수 있다

defaultJDK는 기본적으로 openJDK와 동일하기 때문에 defaultJDK를 자바 버전관리 창에서 확인 할 수 없는 것이다.

 

설치 이후 주의해야 할점?
내가 이용하고자 하는 서비스에서 요구하는 JDK의 스펙을 항상 확인할 것.

Install Synaptic Package Manager

시냅틱 패키지 메니져 설치하기

$sudo apt-get install synaptic

 

시냅틱 패키지 매니저란?

터미널에서 작동하는 apt 관리자를 GUI 방식으로 구현한 것이다.apt-get install과 같은 방식이 아닌 직접 목록을 보면서 마우스로 패키지를 골라 생성 및 삭제를 할 수 있다

 

$sudo synaptic

스크린샷, 2016-08-30 09-03-31.png

시냅틱 패키지 메니져에 대해서 기본적으로 주의할 점은 겁을 먹지 않는 것이다. 나는 기본적으로 업그레이드면 업그레이드지 왜 업그레이드를 하겠다, 설치를 하겠다는 말이 왜 없는지, 그렇다면 시냅틱 패키지 메니져에서 어떤일을 어떤 방식을 통해 할 수 있는지 이해가 안갔다. 내가 기존적으로 생각하는 단어들로 구성이 되어있지 않기 때문이다.
시냅틱 패키지 메니저에서는 업데이트를 하고싶다면 ‘업데이트 표시’ 를 누르면 된다. 표시라는 단어에 대해 친숙하지 않아 생긴 문제였다.

Ubuntu program reinstall

pc를 밀거나 하는 이유로 기존에 있던 프로그램을 모두 삭제해야 한다면, 하나하나 다시 설치해야 하는 생각도 들겠지만 이런경우 명령어를 통해 설치내역을 따로 저장해놓을 수 있다.

 

기존 pc에 설치한 프로그램 이름 저장

$dpkg --get-selections | grep -v deinstall > 설치내역.txt
Screenshot from 2016-07-15 18-18-59.png

 

 

pc 포멧 뒤 프로그램 재설치

$dpkg –-set-selections < 설치내역.txt

명령어를 통해 자동으로 이전에 설치했던 프로그램 내역을 재설치할 수 있다.

 

Install .deb file

.deb 설치.

우분투에서 데비안 계열의 패키지 파일인 .deb를 설치

$sudo dpkg -i fileName.deb

 

***에러발생: 의존성문제 발생

$dpkg: dependency problems prevent configuration of hancomoffice-hwpviewer:
hancomoffice-hwpviewer 패키지는 다음 패키지에 의존: libwebkitgtk-3.0-0: 하지만:
libwebkitgtk-3.0-0 패키지는 설치하지 않았습니다.
dpkg: error processing package hancomoffice-hwpviewer (--install):

바로 이어서

$sudo apt-get -f install

을 해주면 설치되지 않은 의존성 파일이 추가적으로 설치되어 문제가 해결된다.

 


 

제거

$sudo dpkg -r fileName.deb

 

제거 (설정파일까지 제거)

$sudo dpkg --purge fileName.deb

 

설치된 패키지 리스트 확인

$sudo dpkg -l fileName.deb

 

update-alternatives

update-alternatives란  여러 버전의 패키지를 관리하는 키라고 보면 된다. 우분투를 사용하다보면 여러버전의 JDK가 설치 될 때가 있는데 이들 중 어떤 JDK를 사용할지 우선순위를 설정하는데 필요한 작업이다.

이에 대해 살펴보고자 한다.

$ sudo update-alternatives --config java
$ sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/java-7-oracle/bin/java" 1
$ sudo update-alternatives --set java /usr/lib/jvm/java-7-oracle/bin/java

[option]

  1. –config  패키지 선택
    update-alternatives –config [name]
    [name] 선택하고자하는 패키지의 이름

ex] update-alternatives –config java 했을 때

1.png

세부 코드를 보기 전, 짚고 넘어가야할 것이 있다.
java의 path를 확인해 보자.

$ whereis java
 java: /usr/bin/java /usr/lib/java /usr/share/java

으로 나오는 것을 볼 수 있다. 자세히 살펴보면

$ ls -l /usr/bin/java
 lrwxrwxrwx 1 root root 22  6월 16 18:37 /usr/bin/java -> /etc/alternatives/java

-> 라는 표식을 통해 /usr/bin/java가 /etc/alternatives/java에 종속되어있는 것을 알 수 있다.
바로 update-alternatives가 종속 관계를 관리 하고 있는 것이다.

$ls -l /etc/alternatives/java
lrwxrwxrwx 1 root root 35  6월 17 16:48 /etc/alternatives/java -> /usr/lib/jvm/java-7-oracle/bin/java

종속되어져 있는 위치라고 한 /etc/alternatives/java에 대해 조사해보니 이는 다시 /usr/lib/jvm/java-7-oracle/bin/java에 종속되어있다는 것을 볼 수 있다.  이를 통해 실제 java의 위치가 이곳이라는 것을 알 수 있다.

=>즉 java가 관리되기 위해 /usr/bin/java에 넣어진것을 알 수 있다.

 

  1. –install   특정패키지 설치 후 등록
$ update-alternatives --install [link] [name] [path] [priority]

[link]
실행파일의 이름을 가리킨다.
[name]
등록하고자하는 패키지의 이름
[path]
alternatives로 연결할 실제 실행파일의 이름을 가리킨다.
[priority]
어떤것을 선택해서 사용할지 결정할때 사용되는 우선순위. 높은 수가 더 우선순위이다.

 

  1. –set  등록한 내용 설정
$update-alternatives --set [name] [path]

[name] 설정하고자하는 패키지의 이름
[path] 패키지 위치

 

  1. –remove  설정한 내용 삭제
$update-alternatives --remove [name] [path]

[name] 삭제하고자하는 패키지의 이름
[path] 패키지 위치

Install Eclipse on Ubuntu

Eclipse 설치

 
sudo apt-get install eclipse
sudo apt-get install eclipse-jdt 
sudo apt-get install eclipse-pde 
sudo apt-get install eclipse-platform 
sudo apt-get install eclipse-rcp

 

node.js 설치

sudo apt-get update
sudo apt-get install nodejs
sudo apt-get install npm

Vi 명령어

문자열검색

esc
/[문자열]

n: 순방향 검색
N: 역방향 검색

 

줄번호 확인

esc 
:set number

 

폴더 이름변경

mv apache-storm-1.0.1 storm

apache-storm-1.0.1 폴더를 storm이라는 이름의 폴더로 변경하라

sources.list

sources.list 란?
작업과정의 일부로서 APT는 어떤 패키지를 가지고 올 ‘sources’가 필요하다. 이 파일이 바로 sources.list이다.

 

sources.list 분석


1            2                         3             4

deb     http://security.debian.org/ jessie/updates main
deb-src http://security.debian.org/ jessie/updates main

1.
deb- 바이너리 패키지를 포함한 아카이브
기존의 컴파일 된 패키지
dev-src- 소스패키지
기존의 프로그램 소스와 Debian 계열의 제어 파일

 

2.
패키지를 다운받고자하는 저장소.

 

3.
두가지 릴리즈가 있다. 코드네임/별명(wheezy, jessie, stretch, sid), 클래스(oldstable, stable,testing, unstable)
업데이트하고자하는 성질에 따라 사용되는 릴리즈가 다르다.

 

  1. 구성요소
    main        : DFSG 준수 패키지의 구성. 이외의 소프트웨어에 의존하지 않는 호환 패키지
    contrib    : DFSG 준수 소프트웨어를 포함. main과는 독립적
    non-free : DFSG 를 따르지 않는 소프트웨어를 포함
    *DFSG     : Debian Free Software Guidlines

 

 

 

sources.list.d? 디렉토리 파일이다.구성 파일을 포함하는 디렉토리. 단일 구성 파일과는 대조적이다.

JDK 환경변수 설정, 해제

 JAVA_HOME 설정하기

java의 위치를 필요로 하는 프로그램이 있을것이기에 위치 확인이 필요하다.
JDK 설치된 위치확인

$sudo update-alternatives --config java

스크린샷, 2016-07-19 17-00-58

openJDK-8이 설치된 장소는
/usr/lib/jvm/java-8-openjdk-amd64

 

이제 이를 환경변수에 저장하여보자.

$sudo nano /etc/environment

파일에 위에서 찾은 openJDK-8의 설치된 장소를 복사하여 넣어라
+ vi로 파일로 열 경우 수정하기가 힘들다. nano로 파일을 열 것! 스크린샷, 2016-07-19 19-19-37.png
수정된 environment 파일 변경내용 다시 불러오기

$source /etc/environment 

 

JAVA_HOME 위치 확인하기

$echo $JAVA_HOME

스크린샷, 2016-07-19 19-20-03.png
+ JAVA_HOME 설정 전에는 echo $JAVA_HOME했을때 아무런 글이 나타나지 않았는데
environment파일 수정 후 이렇게 변동 된 것을 확인 할 수 있다.

 


 

~/.bashrc 수정

$nano ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export ZOOKEEPER_HOME=/path/to/zookeeper/data/zookeeper-3.4.8
export STORM_HOME=/path/to/storm/data/apache-storm-1.0.1
export PATH=$PATH:$JAVA_HOME/bin:$STORM_HOME/bin:$ZOOKEEPER_HOME/bin

 

/etc/profile 수정

$sudo vi /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export ZOOKEEPER_HOME=/path/to/zookeeper/data/zookeeper-3.4.8
export STORM_HOME=/path/to/storm/data/apache-storm-1.0.1
export PATH=$PATH:$JAVA_HOME/bin:$STORM_HOME/bin:$ZOOKEEPER_HOME/bin

 

/etc/profile 새로고침

$source /etc/profile

 

 


 

환경변수 설정 해제

export 로 JAVA_HOME 과 JRE_HOME, PATH를 설정한 뒤

jdk의 재설치를 하고 경로를 바꾸려고하니

$echo $JAVA_HOME
$echo $JRE_HOME
$echo $PATH

의 경로가 바뀌진 않는다.

 

환경변수 목록 보기

$env

 

환경변수 해제
기본적으로는 설정할때 작성한 내용을 모두 제거하면 된다. 간단하게는
unset  옵션으로 해제

$unset JAVA_HOME
$unset JRE_HOME
$unset PATH

export 옵션으로 해제

$export -n JAVA_HOME

export 에 -n옵션을 추가함으로써 저장된 환경변수를 삭제할 수 있다.

 

안된다… 설정해둔 파일에서 다 제거 해보자.

 

bashrc 파일 수정

$sudo vi .bashrc

맨 밑에 사전에 정리했던 export JAVA_HOME…  명령어 삭제

$source ~/.bashrc

profile 파일 수정

$sudo vi /etc/profile

맨 밑에 사전에 정리했던 export JAVA_HOME…  명령어 삭제

$. /etc/profile

environment 파일 수정

$sudo vi /etc/environment

사전에 정리했던 export JAVA_HOME…  명령어 삭제

$sudo source /etc/environment

 

여기까지 하고 나니 이제

$echo $JAVA_HOME

했을 때 이전에 설정했던 곳이 아닌 /usr/bin/java 루트가 제대로 나온다.