Ubuntu - 시스템 전원관리
우분투 시스템을 명령으로 잠자기, 깨우기가 가능하다. 컴퓨터의 BIOS에서 Wake On Lan이 활성화 되어야한다.
WakeOnLan
wakeonlan을 활성화 하려면 이더넷 인터페이스를 화인한다.
1 | $ ifconfig |
우분투 시스템을 명령으로 잠자기, 깨우기가 가능하다. 컴퓨터의 BIOS에서 Wake On Lan이 활성화 되어야한다.
wakeonlan을 활성화 하려면 이더넷 인터페이스를 화인한다.
1 | $ ifconfig |
2017-09-17: 최초 작성
{:.right-history}
Synergy는 키보드와 마우스 자원을 공유할 수 있는 클라이언트 서버 프로그램이다.
{:width=”600”}
[그림. Synergy 통한 결합 (symless.com)]
- 2017-07-14: 윈도우에서 session 관리
- 2017-07-10: tmux copy & paste
{:.right-history}
터미널 명령은 $ tmux
로 표현하고, Tmux window 에서 Prefix key 키 조합은 는 C{:.keyword} 표기하고, Meta key인 Alt
는 M{:.keyword}으로 표기한다 - Tmux Start 참조.
2017-07-10: tmux-continum 추가
{:.right-history}
Tmux는 terminal multiplexer로 서버에 여러 프로그램을 세션에 저장하고, 다른 작업 혹은 연결을 끊었다 다시 접속해서 세션을 열어 작업을 이어갈 수 있다.
{: width=”600”}
[그림. Tmux 실행 모습 (tmux.github.io)]
Ubuntu/Debian ARM Cross compile 환경
이 글은 우분투, 리눅스 박스에서 GNU ARM Cross compiler 를 설치하고 관리하는 방법을 다루고 있다.
2018-05-17: sidebar.nav/linux 사용
{: .right-history}
우분투/데비안 리눅스에서 제공하는 ARM Toolchain 환경은 Linaro 툴체인을 바탕으로 만들어져 있어서 두가지 버전으로 제공된다. Hard Float을 지원하는 버전과 그렇지 않은 버전이다.[^1]
find
명령에서 자주 사용하는 쓰임새를 요약했다.
2018-05: rm, i-node 내용 추가
{:.right-history}
주어진 이름으로 찾아 화면에 출력한다. -name
은 대소문자 구분한 이름을 준다.
1 | find ./ -name '*.xml' -print |
주어지는 이름의 패턴은 *? 를 사용할 수 있다.
찾은 결과를 받아 명령의 입력으로 실행할 수 있다. 다음은 현재 디렉토리 밑에서 .c 파일을 찾아 md5sum
으로 해시 값을 출력한다. -iname
은 대소문자 구분을 하지 않는다.
1 | find -iname "*.c" -exec md5sum {} \; |
검색시 탐색 깊이는 -maxdepth
혹은 -mindepth
를 사용할 수 있다.
1 | find -maxdepth 2 -iname "*.c" -exec md5sum {} \; |
어떤 파일을 제외한 것만 찾을 수 있다:
1 | find -maxdepth 1 -not -iname "mycprogram.c" |
파일의 퍼미션으로 찾을 수 있다.
1 | find . -perm -g=r -type f -exec ls -l {} \; |
찾은 후 삭제하기:
1 | find ./ -name 'Debug' -exec rm -rf {} \; |
find 명령으로 i-node를 통해서 지우기:
아래 처럼 특수문자로 “~” or “a b c” 등의 이상한 파일이 있을 경우 inode를 확인해 삭제에 유용하다.
1 | $ ls -i |
???? 같이 지워지지 안는 파일 같은 경우도 i-node로 삭제할 수 있다.
1 | ~$ ls -ali |
옵션 -type
은 파일 형식으로 찾을 수 있다. 파일 형식은:
b block special
c character special
d directory
f regular file
l symbolic link
p FIFO
s socket
일반 파일
1 | find . -type f |
소켓 형식의 파일
1 | find . -type s |
디렉토리 형식
1 | find . -type d |
숨겨진 파일만 검색도 가능하다.
1 | find . -type f -name ".*" |
역시 숨겨진 디렉토리만 찾을 수 도 있다.
1 | find -type d -name ".*" |
옵션 -size
를 사용해서 파일의 크기로 찾을 수 있다.
아래는 어떤 크기 보다 크거나, 작은 파일을 찾아 준다.
1 | find -size +100M # 보다 큰 파일 |
다음 같이 응용해 볼 수 있다. 100MB
보다 큰 파일을 찾아 삭제한다:
1 | find / -type f -name *.zip -size +100M -exec rm -i {} \; |
모든 파일의 수정된 시간 정보를 알 수 있다. test_1.txt의 시간을 기준으로 검색해 보자.
1 | ls -lrt test_1.txt |
옵션 -newer
에 대상 파일을 주면 해당 파일을 생성한 날짜 이후의 결과만을 표시하게 된다.
1 | find -newer test_1.txt |
유용한 find 명령들 alias로 만들어 사용하기도 한다.
a.out 인 파일 지우기
1 | alias rmao="find . -iname a.out -exec rm {} \;" |
c프로그램의 core 파일
1 | alias rmc="find . -iname core -exec rm {} \;" |
큰 파일 삭제…
1 | alias rm100m="find / -type f -name *.tar -size +100M -exec rm -i {} \;" |
iconv
로 파일 인코딩을 변환할 수 있는데, 많은 파일을 한번에 처리하기 위해서 find와 결합해 찾은 모든 파일의 파일 인코딩을 변환할 수 있다.
다음은 .c 파일을 찾아 인코딩을 euc-kr에서 utf-8로 변환하는 명령이다.
1 | find ./ -name '*.c' -exec iconv -feuc-kr -tutf-8 {} -o {} \; |
find 를 사용하지 않는다면, 디렉토리 안에 있는 모든 파일의 인코딩을 변환하고자 할 때는 shell 조건문과 섞어서 사용할 수 있다.
1 | $ for F in './*.sql'; do iconv -c -feuc-kr -tutf-8 $F -o $F; done |
이 글은 우분투, 리눅스 박스에서 여러버전의 도구를 관리할 수 있는 update-alternatives
를 다루고 있다.
update-alternative
유틸리티로 리눅스 기본 제공 개발 환경의 gcc, cross compiler용 gcc 등 여러 버전의 gcc를 사용할 수 있게 구성할 수 있다.
이들 버전의 환경을 교체해서 사용하기를 원한다. update-alternative
도구를 사용할 수 있다.
여러 버전의 gcc를 update-alternative
를 사용해서 선택적으로 사용할 수 있다. gcc
로 등록된 현재 버전 목록을 질의 한다.
1 | $ update-alternatives --query gcc |
여기서 사용하는 여러 gcc 버전들을 설치한 후에 다음과 같은 명령어로 등록을 할 수 있다.
1 | update-alternatives --install <link> <name> <path> <priority> |
Ubuntu 14.04 최신 버전에 gcc4.7, 4.8 를 사용하려고 설치했다고 가정한다.
1 | sudo apt-get update |
그리고 gcc 그룹에 4.8를 우선도가 높게 50으로 준다.
1 | sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 50 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8 |
여기서 gcc를 master로 g++을 slave로 준비했다. --slave
옵션은 --install
로 지정한 master에 종속해서 여러개의 슬레이브를 마스터에 추가할 수 있고, 마스터의 링크가 바뀌면 슬레이브도 함께 바뀐다.
두번째 버전은 gcc-4.7 버전을 우선도가 40 정도로 하자.
1 | sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 50 --slave /usr/bin/g++ g++ /usr/bin/g++-4.7 |