2017-03-14 5 views
0

내가 아는 것과 내가 시도한 것 : .rdata, .pdf 및 .jpg 파일을 출력하는 백그라운드에서 실행하려는 R (GAM.R)의 스크립트가 있습니다. 명령 줄에서이 작업을 실행하는 것은 비교적 간단하다 : 나는 배경에 보내 사랑하고 내가 로그 아웃하고 설정 한 후에도 작업 할 것Linux 서버 : nohup을 어떻게 사용합니까? 작동하는지 확인하십시오.

$ Rscript GAM.R 

그러나,이 코드는 그렇게 실행하는 데 매우 오랜 시간이 걸립니다 컴퓨터가 꺼져있어. 나는이뿐만 아니라, 아주 쉽게 이해하고, 내 코드는 다음과 같습니다

$ nohup Rscript GAM.R >/dev/null 2>&1 & 

내가이 일하고 있는지를보기 위해 사용 :

$ fg 
nohup Rscript GAM.R > /dev/null 2>&1 

문제 : 내가 돈 ' 코드가 작동하는지 확인하는 방법을 알지 못합니다. (진행 상황을 볼 수있는 방법이 있습니까?) 출력이 어디로가는 지 모릅니다. 첫 번째 코드로 진행 상황과 결과를 볼 수 있으므로 너무 멀리 떨어져서는 안됩니다. 두 번째 코드의 출력물이 첫 번째 코드의 출력물이있는 곳으로가는 것 같지 않습니다.

답변

0

귀하의 명령 줄은 모든 출력을 /dev/null 일명 The Bit Bucket으로 전환하고 있습니다.

임시 파일로 전환 고려 :
$ nohup Rscript GAM.R >/tmp/GAM.R.output 2>&1 & 

이 그럼 당신은 tail /tmp/GAM.R.output 결과를 볼 수 있습니다, 그것은 기본적으로 파일의 마지막 10 줄을 표시합니다. tail -f을 사용하여 파일의 끝과 새로운 출력을 실시간으로 표시 할 수 있습니다.

/tmp/ 파일 시스템은 재부팅 사이에 존재한다는 보장이 없습니다. 파일을 다른 곳에 둘 수 있습니다 (예 : ~/GAM.R.output).

그러나 컴퓨터를 끄면 모든 처리가 중단됩니다. 컴퓨터가 작동하려면 계속 실행해야합니다. 잠자기, 또는 종료로 이동합니다.

+0

나는 다음과 같이 실행한다. (나는 당신과 @Loay가 제안한 것과 동의어라고 생각한다.) 작동하지 않는 것 같은가? 내 디렉토리가 디렉토리라고 말하는 이유는 무엇입니까? $ RSCRIPT nohup을 GAM.R>은/usr/에밀리/GAMS/2017_03_14 2> & 1 [1] -bash $ 20,403 :은/usr/에밀리/GAMS/2017_03_14 : 디렉토리 일 [1] + 1 출구 nohup Rscript GAM.R>/usr/emily/gams/2017_03_14 2> & 1 – Emms

+0

입력 내용과 주석 텍스트의 출력 내용을보기 위해 약간 힘들지만, : :'2017_03_14' 파일은' 명령을 실행하기 전에 존재하지 않습니까? 기존 디렉토리 일 것 같습니다. 입출력 방향 재 지정의 대상은 디렉토리가 아닌 파일 이름이어야합니다. –

0

을 당신이하고있는 것은 > 당신이 /dev/null에 스크립트의 출력을 리디렉션 및 2>&1를 수행하여 같은 장소에 오류 출력을 리디렉션하는 것입니다. 마지막으로 nohup 실행하여 처리하고 현재 터미널에서 분리하십시오.

그래서 당신이하고있는 일을 요약하면, 프로세스를 호출하고 출력 및 오류 출력을 /dev 아래에 저장된 null이라는 파일로 리디렉션합니다.

질문에 대답하기 위해 출력을 정상 사용자가 아닌 일반 사용자로 액세스 할 수있는 폴더로 리디렉션하는 것이 좋습니다. 그런 다음 모든 것이 잘되었는지 확인하기 위해이 파일을 인쇄 할 수 있습니다.

nohup Rscript GAM.R >/home/username/documents/output_file 2>&1 & 

을하고 당신이 할 수있는 터미널에서 파일을 볼 수 :

예를 들어, 당신은 할 수있는 마지막

cat /home/username/documents/output_file 

내가 당신의 프로그램이 실행 계속 것이라고 생각하지 않는다 귀하의 PC를 끄고 나는 그렇게 할 방법이 없다고 생각합니다.

0

당신은 백그라운드에서 프로그램을 실행하고 프로그램 실행의 출력을 확인하고자 할 때 그 다음

exec 3< <(Rscript GAM.R) 

그리고를 작성하여 쉽게 할 수있는 프로그램의 출력을 액세스하려면

cat <&3 # or you can use 'cat /dev/fd/3' 
0

우수! 유용한 답변, 특히 @ 그렉 타사에 감사드립니다. 궁극적으로 내가 사용하는 데 필요한 : 명령에 의해 만들 수

$ nohup Rscript GAM.R >/usr/emily/gams/2017_03_14 2>&1 & 

위 에밀리에 화면 출력을 스크립트를 실행하고 저장하는 데 사용됩니다/GAMS는 (소위 "2017_03_14"파일이 아닌 폴더로 I origionally 생각했다). 또한 스크립트에서 내 .rdata, .pdf 및 .jpg 출력 파일을 usr/emily로 출력합니다.

그럼 내가 사용 진보와 실행중인 프로그램을 볼 수 완성도의 정신

$ tail -f 2017_03_14 #Shows the last 10 lines of the program's progress 
$ ps #shows your running projects 
$ ps -fu emily #see running projects regardless of session, where username==emily 

, 나는 또한 프로세스를 취소 할 점에 유의 할 수 있습니다, 당신은 사용할 수 있습니다 : 그래서

$ kill -HUP processid #https://kb.iu.edu/d/adqw