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