팁: Liux 프로그램 을 배경 에서 실행 합 니 다.

8417 단어
어떤 때 는 터미널 에서 프로그램 을 시작 하고 실행 시 켜 야 합 니 다. 그러나 터미널 을 닫 으 면 이 프로그램 도 닫 힙 니 다.터미널 을 닫 은 후에 이 터미널 에서 시 작 된 프로그램 을 계속 실행 시 키 는 방법 은 없 을 까?
선행 지식:
xterm, console, tty, pts, pty 의 차이
셸 은 커 널 과 직접 통신 하 는 것 xterm 은 소프트웨어 개념 으로 이 프로그램 을 통 해 console 에 연결 하여 호스트 를 제어 할 수 있 으 며, cli 형식의 단말기 시 뮬 레이 터 로 이해 할 수 있 으 며, gnome - terminal, konsole 은 gui 형식의 단말기 시 뮬 레이 터 이다.
console 은 호스트 의 콘 솔 로 물리 적 개념 입 니 다.
tty, pty, pts 는 모두 단말기 이 고 하드웨어 나 설비 개념 입 니 다.
tty 는 모든 단말기 의 총칭 pty 는 그 중의 하나 로 가짜 단말기 또는 가상 단말기 라 고 부른다.
"&"명령 행 마무리 법: 유 닉 스/리 눅 스에 서 프로그램 을 독립 적 으로 실행 시 키 려 면 보통 & 명령 끝 에 프로그램 이 자동 으로 실 행 됩 니 다.(명령 후 스페이스 바 를 추가 하지 않 아 도 됨)
gnome - terminal 을 열 고 다음 명령 을 수행 합 니 다.
delectate@delectate:~$ totem & [1] 8510 delectate@delectate:~$ 

몇 가지 주의해 야 할 점 이 있다.
시 작 된 프로그램 은 현재 pts 에 연결 되 어 있 습 니 다. 현재 터미널 시 뮬 레이 터 만 닫 히 고 (exit 명령 으로 종료) 프로 세 스 는 tty 에 의 해 자동 으로 계승 되 었 습 니 다.
delectate@delectate:~$ ps -e | grep totem     //程序已被以totem & 形式启动,当前附在pts0上 8819 pts/0    00:00:00 totem delectate@delectate:~$ ps -e | grep totem    //pts0的模拟终端被exit命令关闭,totem自动附在tty 8819 ?        00:00:00 totem delectate@delectate:~$

debug 출력 이 있 는 프로 세 스 는 enter 키 를 누 르 면 현재 debug 출력 을 중단 해 야 합 니 다.그러나 프로그램 이 printf 를 계속 진행 하면 명령 을 입력 할 수 없습니다.
delectate@delectate:~$ vlc & [1] 8850 delectate@delectate:~$ VLC media player 1.0.6 Goldeneye [0x8b998b0] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.                                                                //enter pressed delectate@delectate:~$                               //show a clean terminal now ** (:8850): CRITICAL **: giop_thread_request_push: assertion `tdata != NULL' failed                                                                //仍然在输出数据……                                                                //关闭程序 [1]+ Done vlc delectate@delectate:~$

프로그램의 debug 출력 결 과 를 기록 할 수 없습니다.
가상 터미널 이 $또는\# 일 때 만 이 터미널 을 닫 을 수 있 습 니 다. 그렇지 않 으 면 시 작 된 프로 세 스 가 닫 힐 수 있 습 니 다.
nohup 명령 사용: nohup 설명: Run COMMAND, ignoring hangup signals. (중단/끊 기 신 호 를 무시 하고 명령 을 계속 실행 합 니 다)
하지만 명령 을 사용 하려 고 시도 하면:
1 nohup command
때 가 되면 크 지도 작 지도 않 은 번 거 로 움 을 만 나 게 되 는데..........................................
delectate@delectate:~$ nohup vlc nohup: ignoring input and appending output to `nohup.out'

예, debug 정 보 를 nohup. out 파일 에 자동 으로 기록 하지만 이 터미널 을 사용 하여 어떠한 조작 도 할 수 없습니다.
그래서 첫 번 째 방법 과 혼용 해 야 한다. 즉,
nohup command {option} &

혼용 하면 실행 중인 명령 출력 결 과 를 - rw -, nohup. out 라 는 파일 에 자동 으로 기록 합 니 다.
그래도 필요 해.
delectate@delectate:~$ nohup vlc & [1] 9045 delectate@delectate:~$ nohup: ignoring input and appending output to `nohup.out'                                                                          //在这里按一下回车或以ctrl+c以                                                                              //show a clean terminal 
delectate@delectate:~$

& 성질 이 같 습 니 다. 현재 시작 프로그램의 터미널 이 닫 히 지 않 으 면 시 작 된 프로그램 이 pst 에 붙 어 있 습 니 다.터미널 이 닫 히 면 자동 으로 tty 에 붙 습 니 다.
하면, 만약, 만약... nohup.out 파일 을 쓸 수 없습니다. 출력 을 다시 지정 합 니 다. $HOME/nohup.out.기본 상태 에서 nohup 은 기본적으로 nohup. out 파일 로 출력 합 니 다. 출력 파일 을 다시 지정 할 수도 있 습 니 다.
nohup command {option} > myout.file 2>&1 &

가상 터미널 이 $또는\# 일 때 만 이 터미널 을 닫 을 수 있 습 니 다. 그렇지 않 으 면 시 작 된 프로 세 스 가 닫 힐 수 있 습 니 다.
기타 관련 명령: jobs: 현재 백 스테이지 에서 실행 중인 명령 이 얼마나 되 는 지 확인 합 니 다 fg: 백 스테이지 에서 명령 을 프론트 데스크 톱 으로 옮 겨 계속 실행 합 니 다.배경 에 여러 명령 이 있 으 면 fg% jobnumber 로 선택 한 명령 을 내 보 낼 수 있 습 니 다.% jobnumber 는 jobs 명령 을 통 해 알 수 있 는 배경 에서 실행 중인 명령 의 번호 (pid 가 아 닌) bg 입 니 다. 배경 에서 일시 정지 하 는 명령 을 계속 실행 합 니 다.배경 에 여러 명령 이 있 으 면 bg% jobnumber 로 선택 한 명령 을 호출 할 수 있 습 니 다.% jobnumber 는 jobs 명령 을 통 해 알 수 있 는 배경 에서 실행 중인 명령 의 번호 입 니 다 (pid 가 아 닙 니 다)
프로 세 스 죽 이기 시 작 된 프로그램 을 죽 이 는 것 은 일반적인 방식 과 같 습 니 다.
pkill -9 name
killall name
kill pid

명령 어 적용: 링크 ux 서버 자동 사냥 다운로드;관련 서비스 시작 하기;linux 서버 시작 프로 세 스 (특히 ssh 로그 인)
나 는 일찍이 사용 한 적 이 있다.
1 nohup aria2c -i downloadlist -m 0 -j 1 &
jsharer 에서 많은 애니메이션 을 다운 받 았 다.
참고 자료 http://topic.csdn.net/u/20100201/17/a34370cc-8a61-4315-a4d0-84242362064d.html http://www.linuxsir.org/bbs/thread362001.html http://www.williamlong.info/archives/482.html http://dev.firnow.com/course/6_system/linux/Linuxjs/2008716/133186.html
다음으로 이동:https://www.deleak.com/blog/2010/05/19/run-software-on-background/

좋은 웹페이지 즐겨찾기