2019년 1월 24일 목요일

Ubuntu + dns 서버 설정

참고: http://wani.kr/posts/2017/03/22/ubuntu-resolvconf-settings-summary/

파일 편집


$ sudo vi /etc/resolvconf/resolv.conf.d/tail

또는

$ sudo emacs -nw /etc/resolvconf/resolv.conf.d/tail

아래 내용 입력


nameserver 8.8.8.8

서비스 재시작


$ sudo service resolvconf restart


2019년 1월 9일 수요일

bash color

참고:



예)

$ echo -e "\033[0;31mhello\033[0m world"


설명:

  • echo -e 로 수행해야 escape 가 작동
  • \033[ 으로 시작
  • 0;31m 에서 앞에 0; 은 0; 또는 1; 로 설정
  • 31m 은 30~37 까지 글자 색상 선택 가능 (40~47 은 배경 색)
  • \033[0m 은 기본 설정으로 되돌림
  • world 는 기본 색상으로 표시됨

배경과 글자색 동시 지정



$ echo -e "\033[0;42m\033[1;37mhello\033[0m"

  • \033[0;42m 배경색 지정
  • \033[1;37m 글자색 지정

ubuntu timezone 설정


참고: https://www.lesstif.com/pages/viewpage.action?pageId=61899162

$ sudo apt install tzdata
$ sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime


2019년 1월 8일 화요일

Docker + ubuntu

Docker + ubuntu


설치

$ sudo apt install docker-ce 

Image 목록

$ docker images 

Image 가져오기

$ docker pull ubuntu

Image 지우기

$ docker rmi ubuntu

Container 목록 

$ docker ps -a

실행

$ docker run -ti ubuntu:12.04 /bin/bash

Daemon 으로 실행

$ docker run -d -ti ubuntu:12.04 /bin/sshd -D

Container 재실행

$ docker restart $CONTAINER_ID

Host path 공유

$ docker run -ti ubuntu:12.04 -v /opt:/opt /bin/bash

dns 설정

$ docker run --dns 8.8.8.8 -ti ubuntu:12.04 /bin/bash

Container 를 image 로 저장

$ docker commit $CONTAINER_ID $IMAGE_NAME

언어 설정

참고: https://www.44bits.io/ko/post/setup_linux_locale_on_ubuntu_and_debian_container

$ export LC_ALL=C.UTF-8

GUI 사용

docker run 옵션에 추가

  • -e DISPLAY=$DISPLAY
  • -v /tmp/.X11-unix:/tmp/.X11-unix
  • -e QT_X11_NO_MITSHM=1

host machine 에서 xhost 연결 허용

$ xhost +


Docker compose


https://docs.docker.com/compose/


설치 예) 리눅스

https://docs.docker.com/compose/install/

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

$ sudo chmod +x /usr/local/bin/docker-compose

$ docker-compose --version


사용 예)

$ docker-compose up -d

$ docker-compose down



2018년 11월 21일 수요일

su

su




su -


su 명령에 '-' 옵션을 주어서 곧바로 해당 user 의 home directory 로 이동

su - <user name>

user name 을 입력하지 않으면 root

e.g.)

user1@ubuntu:/home/user1$ sudo su
root@ubuntu:/home/user1# pwd
/home/user1

user1@ubuntu:/home/user1$ sudo su -
root@ubuntu:~# pwd
/root


su -c <command>


변경된 유저로 단일 명령 수행

e.g.)

user1@ubuntu:~$ sudo su - -c pwd
/root
user1@ubuntu:~$ sudo su -c pwd
/home/user1




Ubuntu 알림 (notify-send)

http://manpages.ubuntu.com/manpages/xenial/man1/notify-send.1.html

$ notify-send 'title' 'body'


2018년 7월 19일 목요일

crontab

crontab


참고




시간 단위

  • 분(0 ~ 59)
  • 시(0 ~ 23)
  • 일(1 ~ 31)
  • 월(1 ~ 12)
  • 요일(0 일요일 ~ 6 토요일)

예) 매분마다 명령 수행


* * * * * <command>


명령 목록


$ crontab -l
crontab: no crontab for $USER


명령 편집


$ crontab -e
* * * * * echo "hello" >> /tmp/hello.txt


Editor 설정


$ env EDITOR=emacs crontab -e

$ crontab -l
* * * * * echo "hello" >> /tmp/hello.txt

$ cat /tmp/hello.txt
hello


명령 제거


$ crontab -r
$ crontab -l
crontab: no crontab for $USER


2018년 7월 12일 목요일

Gnome shell + ubuntu 16.04

Gnome shell + ubuntu 16.04


설치


$ sudo apt install ubuntu-gnome-desktop

log off

log in 화면에서 ubuntu logo 아이콘 누르고 gnome 선택

한글 설정


$ sudo apt install fcitx-hangul

설정 -> 언어 지원 -> 키보드 입력기로 fcitx 선택

$ sudo reboot

2018년 4월 5일 목요일

[우분투] hostname 설정

hostname 설정


편집

  • /etc/hostname
  • /etc/hosts

서비스 재시작


$ systemctl restart systemd-logind.service

또는 reboot


hostnamectl


$ hostnamectl set-hostname <new hostname>


Avahi service 재시작


$ service avahi-daemon restart


ping 확인


hostname 이 mycom 이라고 가정


$ ping mycom.local


2018년 3월 28일 수요일

visudo

visudo


참고:

/etc/sudoers 를 직접 수정하지 않고 visudo 사용

$ sudo visudo

sudo 시 비밀번호 묻지 않기 (아래 내용 추가)
  • USRNAME ALL=(ALL) NOPASSWD: ALL
  • USERNAME 은 계정 이름으로 변경

저장 및 종료

ssh key 로그인

ssh key 로 로그인


요약

  1. SSH 클라이언트 PC 에 ssh key 생성
  2. SSH 서버 PC 에 ssh public key 를 $HOME/.ssh/authorized_key 에 복사


SSH 클라이언트 PC


key 생성 (필요시)
$ ssh-keygen -t rsa

참고
  • passphase 설정 하지 않고 생성 가능 
  • $HOME/.ssh 에 아래 파일들이 이미 존재하면 key 생성 필요없음

$HOME/.ssh 에 생성된 파일들
  • id_rsa - private key
  • id_rsa.pub - public key

아래와 같이 public key 를 ssh 서버 pc 에 등록해야 함

SSH 서버 PC


$HOME/.ssh/authorized_keys 에 클라이언트의 public key 등록

참고:
  • public key 는 text 파일 형태이기 때문에 terminal 을 여러개 띄어 두고 복사 붙여넣기 할 수 있음

예)
  1. $ vim authorized_keys 
  2. 붙여 넣기

$HOME/.ssh/authorized_keys


권한 설정 (사용자만 read/write 권한 줘야함)
$ chmod 600 authorized_keys

연결하려는 클라이언터가 다수이면 authorized_keys 파일에 개행 문자로 구분하여 여러 키를 등록 가능


putty 클라이언트


puttygen 을 이용해 key 생성


  1. puttygen 실행
  2. generate
  3. save private key (.ppk 파일)

puttygen 화면에 표시된 public key 를 ssh 서버 pc 에 authorized_keys 에 추가
private key 는 putty 에 지정

putty session 에 private key 등록

  1. putty 실행
  2. session 선택 및 load
  3. Connection -> SSH -> Auth 로 이동
  4. Private key file for authentication 에 저장한 private key (.ppk 파일) 경로 지정
  5. session 저장


2018년 2월 20일 화요일

Process 관리

Process 관리


실행


$ ./program

Background 로 실행


$ ./program &

Background 로 보내기


Ctrl+z

일시 정지됨

Background 에서 실행


$ bg

Foreground 로 불러오기


$ fg

Interrupt 날리기


Ctrl+c

  • 보통 process 가 정지되지만 process 에서 무시 처리하는 경우 있음

Job 목록 확인


$ jobs


stdin redirect


$ ./program < myfile

stdout redirect


$ ./program > myfile.log

또는 무시

$ ./program > /dev/null

stderr redirect


$ ./program 2> myerror.log

stdin 과 stderr 를 같게


$ ./program > /dev/null 2>&1

 

 PID 확인

 

$ ./program &
$ echo $!

Process 목록


ps

모든 process 목록

ps aux

Process 이름으로 PID 찾기


$ pidof $PROCESS_NAME

$ pgrep $PROCESS_NAME

$ pgrep -f $KEYWORD

 

Process 죽이기


$ kill $PID

$ pkill $PROCESS_NAME

$ pkill -f $KEYWORD

$ killall $PROCESS_NAME

Process 실행 정보 위치


$ ls /proc/$PID/

  • status 및 stat, statm, cmdline 등 process 관련 여러 파일들이 존재

2018년 2월 7일 수요일

linux 배포 버전 확인

linuax 배포 버전 확인

$ cat /etc/os-release
NAME="Ubuntu"
VERSION="16.04.3 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.3 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial

2015년 8월 17일 월요일

사용자 추가 (useradd 와 adduser)

일반 리눅스


useradd 로 사용자 추가

사용자 추가

$ sudo useradd <username>

비밀번호 지정

$ sudo passwd <username>

사용자 제거

$ sudo userdel <username>
$ sudo userdel -r <username>

우분투


useradd 대신 adduser

사용자 추가

$ sudo adduser <username>

  • 비밀 번호까지 설정해 줌


useradd 로 추가하면 /home 디렉토리에 username 의 디렉토리가 생성되지 않음


sudoer 지정


$ sudo visudo

sudoer 파일을 수정한다.
<username> ALL=(ALL:ALL) ALL

password 입력도 필요없다면
<username> ALL=(ALL) NOPASSWD: ALL

2015년 8월 5일 수요일

Ubuntu 에서 dual shock 4 사용하기

dual shock 4 사용

https://github.com/chrippa/ds4drv

먼저 아래 패키지 설치 필요
$ sudo apt-get install libusb-dev joystick
http://www.rasplay.org/?p=4811

ds4drv
$ sudo apt-get install python-dev python-pip
$ sudo pip install ds4drv
$ sudo ds4drv --hidraw

Ubuntu - could not write bytes : broken pipe

could not write bytes : broken pipe


이 에러 문구가 화면에 보이고 더이상 진행하지 않을 때면 늘 xorg 나 비디오 카드 드라이버 문제였다.

보통 xorg 나 ubuntu-desktop, gnome-session 등등 재설치 후 로그인 화면까지 진입했다.
진입 후 주로 그래픽이 깨지는 증상이 발생 했으며 이때는 자신의 그래픽 카드와 맞는 드라이버를 설치해야 했다. (참고 : "nVidia GT218 드라이버 설치" 항목)

아래 내용들은 문제 해결하면서 검색해 본 내용들

xorg 재설치

http://ubuntuforums.org/showthread.php?t=1150319

$ sudo apt-get remove xserver-xorg
$ sudo apt-get remove --purge xserver-xorg
$ sudo apt-get install xserver-xorg


xorg 재시작

http://askubuntu.com/questions/1220/how-can-i-restart-x-server-from-the-command-line

$ sudo restart lightdm

xorg reconfigure

http://askubuntu.com/questions/283985/unable-to-load-session-ubuntu-in-12-04

$ sudo dpkg-reconfigure lightdm

failed to load session "ubuntu"

https://riveridea.wordpress.com/2012/03/22/how-to-solve-failed-to-load-session-ubuntu/

방법 1)
$ sudo apt-get update
$ sudo apt-get install ubuntu-desktop
$ sudo apt-get -f install
$ sudo dpkg-reconfigure ubuntu-desktop
$ sudo reboot


방법 2)
$ sudo apt-get install gnome-session
$ sudo apt-get install lightdm
$ sudo apt-get install unity-greeter
$ sudo dpkg-reconfigure lightdm


errors were encountered while processing cups 문제

http://ubuntuforums.org/showthread.php?t=1864254

$ sudo apt-get purge cups && sudo apt-get autoremove
$ sudo apt-get update && sudo apt-get install cups


errors were encountered while processing cups printer-driver-gutenprint

Ubuntu video driver 확인 방법

http://askubuntu.com/questions/23238/how-can-i-find-what-video-driver-is-in-use-on-my-system

$ lshw -c video
configureation: driver 값 기억
$ modinfo <기억한 값>

nVidia GT218 드라이버 설치

http://ubuntuforums.org/showthread.php?t=2223757

방법 1)
sudo add-apt-repository ppa:ubuntu-x-swat/x-updates
sudo apt-get update
sudo apt-get upgrade

방법 2) 난 이게 되었다
sudo add-apt-repository ppa:xorg-edgers/ppa
sudo apt-get update
sudo apt-get upgrade

add-apt-repository remove 방법

http://askubuntu.com/questions/307/how-can-ppas-be-removed

$ add-apt-repository --remove <ppa 이름>

alternative way (이 방법 추천)

$ sudo apt-get install ppa-purge
$ sudo ppa-purge ppa_name
$ sudo apt-get purge package_name



2014년 7월 9일 수요일

System program problem detected 경고창 제거

참고: http://askubuntu.com/questions/133385/getting-system-program-problem-detected-pops-up-regularly-after-upgrade

증상: Ubuntu distribution 업데이트 하고 나서 Ubuntu 시작 하자 마자 System program problem detected 경고창이 뜬다.

해결: 위 참고 사이트를 참고하여 아래와 같이 /var/crash/ 안의 파일들을 삭제 해 주니 경고창이 뜨지 않았다.

$ sudo rm /var/crash/*

2014년 4월 16일 수요일

bash shell 의 emacs key binding

bash shell 에 emacs key binding 되어 있음

emacs 단축키들 shell 에서 사용 가능 (C = ctrl, M = meta or alt)

커서 이동

  • C-a : 맨 처음
  • C-e : 맨 끝
  • C-f : 한 글자 앞
  • M-f : 한 단어 앞
  • C-b : 한 글자 뒤
  • M-b : 한 단어 뒤

잘라내기 붙여넣기

  • C-k : 커서 위치 앞 모두 잘라내기 (잘린 부분 기억)
  • C-w : 커서 위치 뒤 word 잘라내기 (잘린 부분 기억) 
  • C-d : 커서 위치의 한 글자 하나 지우기
  • M-d : 커서 위치의 단어 잘라내기 (잘린 부분 기억) 
  • C-y : 붙여넣기 (C-k 또는 C-w 로 잘라내기한 내용) 
    • C-y 후 M-y 반복으로 잘라내기한 내역 순환

history

  • C-p : 이전 명령
  • C-n : 다음 명령

대소문자

  • M-l : 소문자 변환
  • M-c : Capital 변환
  • M-u : 대문자 변환

    이 외 emacs text edit 단축키들 사용 가능

    2014년 4월 15일 화요일

    shell locale 설정

    아래 명령으로 사용 가능한 locale 목록을 표시할 수 있다.
    $ locale -a

    목록 중에 마음에 드는 locale 을 LANG 환경 변수에 설정해서 shell locale 을 변경한다.
    $ export LANG=<locale 이름>

    .bashrc 나 .bash_profile 등의 파일에 위 명령 추가 해두면 매번 자동으로 shell 에 들어오면 설정

    svn 등의 앱들은 위 설정에 따라 한글 또는 영어 등 다른 언어로 메시지를 표시 하는데 가끔한글 에러 메시지가 무슨 의미인지 몰라 영어 에러 메시지를 표시하고자 할 때 찾아 본 방법이다

    기본적 build 방법

    때로는 소스를 받아 build 해서 사용하게 되는 경우가 있다.

    대부분 configure 와 make, make install 을 이용해서 설치한다.
    1. $ ./configure
    2. $ make
    3. $ make install
    기본적으로 /usr/ 경로의 하위 폴더들에 복사될 것이다.

    --prefix 옵션
    만약 설치 경로를 변경하고 싶으면 configure 에 --prefix 옵션을 설정해 준다.
    예)
    • $ ./configure --prefix=$HOME/
    • 위와 같이 설정하면 make & make install 시 $HOME 에 bin 이나 lib 등 필요한 폴더들이 생성되고 각 폴더들에 파일들이 복사 된다.
    $ ./configure --help 옵션으로 사용가능한 옵션들을 확인할 수 있다
    $ ./configure 명령어 수행 중에 필요한 라이브러리 파일이 없으면 오류를 표시해 주기 때문에 해당 소스 파일들도 다운로드 받아 위와 같은 요령으로 build 해 주면 된다.

    configure.ac 파일만 존재 시
    아래 명령으로 configure 파일 생성
    $ autoreconf --install
    !) autotools 패키지 설치 필요