Ubuntu Screen 사용법

- screen :은 2번 깊게 들어가는 구조이다. 하나의 screen을 만들면 독립된 process로 돌아간다. 따라서 이를 이용해서 screen을 만들고 거기에 서버를 돌려놓고 다른 작업을 하는 것이 가능하다. 또한 screen은 깊은 구조라 하나의 screen내에서 여러개의 터미널을 띄워서 사용하는 것도 가능하다.

즉 screen은 여러개의 세션을 사용하는 것 ( 즉 푸티로 3개의 계정에 접속할 필요없이 하나의 접속안에서 여러가지 세션을 실행가능)


세션 사용법 : 명령어는 ctrl A + [] 의 형태로 조합해서 사용한다. 또한 tab으로 세션이름 자동완성 가능

screen -S mysession : mysession 이라는 이름의 새로운 세션을 생성한다.(이름을 잘정해야됨)

screen -S mysession bash : 현재의 bash shell 과 동일하게 동작하는 세션 생성

ctrl A + D : 세션에서 분리해서 떨어져 나온다. (detached. 세션은 그대로 하던일을 하고 있음)

screen -ls : 세션 리스트를 확인한다.

screen -r mysession : 분리했던 세션에 다시 연결한다. (attached)

screen -S mysession -X quit : mysession 을 강제종료한다. (mysession대신에 앞에 붙은 세션 번호도 가능함)

screen -S mysession -X screen : screen 안에 screen 만들기.(다른 명령어도 가능)



- Screen에서의 고급 터미널 사용법 : 명령어는 ctrl A + [] 의 형태로 조합해서 사용한다

ctrl A + ? : 터미널 관리 명령어들을 확인한다.

ctrl A + c : 새로운 터미널을 생성한다.
ctrl A + A/space/backspace : 터미널을 전환한다.
ctrl A + 숫자 : 해당 숫자의 터미널로 전환한다

exit : 현재 터미널을 종료한다.
ctrl A + k : 현재 터미널을 강제 종료한다.

ctrl A + S : 화면을 2개로 분할한다.
ctrl A + X : 생성한 화면을 제거한다.

ctrl A + s : 키보드 lock을 건다. (잘못누르면 버그처럼 생각됨)
ctrl A + q : 키보드 unlock을 한다.


https://kldp.org/node/18744


# bash -c 옵션 확인 방법
man bash


- Screen을 이용한 백그라운드 프로세스 돌리기

screen -dm 할일
ex) screen -dm bash -c 'python /home/biadmin/dhkwak/deep-rl-tensorflow/main.py; sleep 10'
screen -dm bash -c "myscript.sh; sleep 10" # 여러개의 명령어를 실행할 수도 있고, sleep 을 이용해서 에러메시지를 확인할 수가 있다!!!
screen -S pingsession -d -m -L ping localhost

screen -dm bash -c 'export PATH=/usr/local/cuda/bin:$PATH; export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH; python main.py ;'

# 특히 위와 같은 방법으로 export를 해주어야할 때가 있음. 근데 이런 export를 편하게하기 위해서 .screenrc를 사용하면 된다고함.


http://www.dreamy.pe.kr/zbxe/CodeClip/164809
https://www.gnu.org/software/screen/manual/screen.html#Invoking-Screen


Ubuntu Process 컨트롤

- 프로세스 확인
top : 현재 돌고있는 프로세스 확인
ps -a : 프로세스 확인


- 트래픽 확인
iftop : 트래픽확인


- 프로세스 강제 종료
kill -9 프로세스이름 or PID
(프로세스이름이나 PID는 ps -a 등을 통해 확인)


- 어떤 작업을 background에서 실행시키기
커멘드 뒤에 & 을 붙인다.
ex) python main.py &

http://www.thegeekstuff.com/2010/05/unix-background-job
https://www.gnu.org/software/bash/manual/html_node/Job-Control-Builtins.html


- 현재 shell에서 돌아가고 있는 process를 일시중지하기

ctrl + z (ctrl + c 혹은 ctrl + d 는 process를 완전히 stop시키는 것임)
ex) 파이썬을 컨트롤 D로 종료안하고, 컨트롤 Z로 빠져나온 경우 파이썬은 bg에 남아있음.


- 백그라운드 작업 확인
jobs

- 일시 중지된 process를 foreground에서 다시 실행시키기
fg : 방금 정지한 process를 실행
fg %숫자 : jobs로 확인한 번호의 process를 실행

- 일시 중지된 process를 background에서 다시 실행시키기
bg : 방금 정지한 process를 실행
bg %숫자 : jobs로 확인한 번호의 process를 실행

- jobs에 있는 process 중지시키기
kill %숫자

- Background에서 작업중인 process 일시정지하기
jobs 명령어로 job숫자를 알아낸다음, fg %숫자 로 foreground로 가져온 다음, ctrl + z 를 눌러서 일시중지 시킨다.

http://pragp.tistory.com/entry/Linux%EB%A6%AC%EB%88%85%EC%8A%A4-fg-bg-kill-CtrlZ



Ubuntu 기초 명령어

- 폴더/파일 용량확인

du -sh *


- 파일 이름으로 찾기

find / -name '*.html'

- 찾아진 파일이나 폴더 삭제하기
find [dir_name] -name ".ipy*" -delete

- 찾아진 디렉토리만 삭제하기
find [dir_name]-name ".ipy*" -type d -exec rm -r "{}" 

https://unix.stackexchange.com/questions/89925/how-to-delete-directories-based-on-find-output

- 명령어 실행 결과 페이지 스크롤해서 넘기기

ls | less 이렇게 하면 긴 화면이 한번에 안넘어가고 천천히 넘어감.


- copy

cp 원본 타겟 : 파일 복사

cp -r 원본 타겟 : 디렉토리 복사



- 서버간 파일복사(scp)

scp -rpC source경로 dest경로

ex)  scp -rpC tensorflow-deepq biadmin@147.46.215.136:dhkwak

#주의사항. dest경로 마지막에 반드시 " : " 를 붙여줘야함. 여기가 home디렉토리임
또한 scp를 이용해서 자신의 파일을 외부로 서버로 보낼 수도 있고, 반대로 외부의 파일을 자신의 서버로 가져올수도 있다.


- 파일내에서 문자열 검색

grep -rn 검색키워드


-우분투 리눅스 계정 생성

adduser 아이디

http://mintnlatte.tistory.com/256




-bad interpreter: No such file or directory 문제

윈도우즈 에디터로 편집한 파일을 실행하는 경우 발생

http://tod2.tistory.com/28

--

sudo poweroff : 컴퓨터 종료


reboot : 리부팅
(shutdown이나 poweroff가 잘 작동안하는 경우가 있다고함.)


- 웹에서 다운 받기

wget url : 현재경로에 파일 다운로드 받기
wget url -O 파일명 : 지정한 파일명으로 다운로드 받기.


- sudoers에 권한 추가하기

http://blog.outsider.ne.kr/505


- 파일 실행법
(실행시 permission denied가 뜨면, 다음과 같이 실행권한을 추가해주어야한다.)
#>chmod a+x file.run
#>./file.run



export
-> 환경변수 리스트를 보여준다.

export 변수명=변수값
-> 해당 변수명에 변수값을 등록한다.

echo $변수명
-> 변수명에 해당하는 환경변수값을 보여준다.

export 변수명=$변수명:변수값
-> 변수명에 변수값을 추가한다

http://akaseon.tistory.com/50



- 리눅스 계정 생성(root계정이 아닌경우 sudo를 앞에 붙여야함)

useradd -G 그룹명 -m 아이디 -d 홈경로지정 -s /bin/bash
(-m 홈디렉토리를 만듬, -s 기본 베쉬를 지정)
passwd 아이디
(치면 2번에걸처 비밀번호를 입력함)


- 파이썬 실행
그냥 python 치고 입력하면 바로 실행되네

python -c 하는건 그냥 커맨드라인에서 실행하는 것\



싹다지워버리기:

rm -rdf 지울폴더 #조심해서 사용할 것. os 다시설치하는 수가 있음



# Symbolic link를 만들어서 bin파일 위치를 등록하기
sudo ln -s 원래Bin파일위치 /usr/local/bin/심볼릭링크이름


- tar 파일

# 압축하기

tar -cvf [원하는이름.tar] 대상들(디렉토리도 됨)

ex) tar -cvf test.tar abc.c


-cvf 가아니라 -cvzf 를 쓰면 gz로 압축이 되고, z를 빼면 압축이안되고 묶기기만함


# 압축풀기

tar- xvf 파일명 를쓰면 압축풀린다.

마찬가지로 xvzf를 하면 tar.gz 를 풀 수 있음.

http://sarghis.com/blog/468/


- zip 하기

zip -r my_arch.zip my_folder

- unzip 하기

unzip my_arch.zip

- gz 파일 : 1개의 파일을 압축하는 용도. 여러개의 파일은 tar 등을 사용

# 압축하기

gzip -d 파일명

# 압축풀기

gzip 파일명


- tgz 파일 : tar+gz 파일임

# 압축 풀기

tar xvzf 파일명

# 압축 하기

tar cvzf 원하는이름.tar.gz 폴더명


- 파일에서 특정한 문자열을 검색해서 바꾸기

sed -i 's/바꿀대상/바꿀내용/g' 파일명

ex) sed -i "s/kDefaultTotalBytesWarningThreshold/kDefaultTotalBytesWarningThreshold = 5121 \<\< 20\;\/\//g" google/protobuf/src/google/protobuf/io/coded_stream.h

http://forum.falinux.com/zbxe/index.php?document_srl=535694&mid=lecture_tip


http://ngee.tistory.com/309

'프로그래밍 > 프로그래밍 팁' 카테고리의 다른 글

C++ 프로그래밍  (0) 2014.11.26
Visual Studio  (0) 2014.11.24
Ubuntu - Screen , zip, tar 사용법  (0) 2014.07.07
MATLAB 문법, API, 단축키, 환경설정  (0) 2014.06.23
Java, 클래스간 변수 공유  (0) 2014.06.19
정규표현식, 정규식  (0) 2014.06.17
by 곽동현 이스텔리앙 2014.07.07 16:31