disown
저는 SSH를 통해 장기 실행 프로세스를 실행하는 데 익숙합니다 . 예를 들어 다음 프로그램을 실행합니다.
vmd -e script.tcl > out.txt &
disown -a
그런 다음 그것을 케이스에서 제거하는 데 사용했습니다 . 터미널을 다시 연결하면 out.txt
프로그램이 완료되었다는 메시지가 나타납니다. 그러나 vmd>
vmd()의 명령 프롬프트가 표시됩니다. VMD는 화학 시뮬레이션을 위해 TCL 스크립트를 실행하는 프로그램입니다. 자체 쉘이 있는 Python과 유사하다고 가정할 수 있습니다.
http://www.ks.uiuc.edu/Training/Tutorials/vmd/tutorial-html/node8.html
fork retry: Resource temporary unavailable
잠시 후 실행 중인 프로세스의 제한으로 인해 ssh()에 연결할 수 없습니다 . 먼저 대기 상태에 있는 거부 프로세스를 종료하는 방법을 알고 싶습니다.
둘째, 끝에 my 를 vmd
넣어 프로그램을 종료하면 나중에 사용할 수 있도록 위의 문제를 해결할 수 있는지 궁금합니다 .exit
script.tcl
답변1
이를 수행하는 방법은 여러 가지가 있습니다. (TM값)
해결 방법 1(아마도 최고): vmd
스크립트 끝에 종료 명령을 추가합니다.
해결 방법 2: vmd
다음과 같이 명령의 표준 입력을 빈 장치로(또는 마음 상태에 따라 빈 장치에서) 리디렉션합니다.
vmd -e script.tcl > out.txt < /dev/null &
이렇게 하면 vmd
스크립트가 완료되고 표준 입력에서 다음 명령을 읽으려고 시도할 때 "파일 끝"을 수신하고 종료됩니다.
해결 방법 3: Kill 남은 vmd
프로세스를 사용합니다 kill
. 쉘이 시작된 후 인쇄할 때 적어 &
두거나 명령을 통해 찾을 수 있는 PID가 필요합니다 ps ax
. 먼저 kill -TERM
(기본값) 시도하고, 작동하지 않으면 로 수행하십시오 kill -HUP
.아니요kill -KILL
별칭을 사용하십시오 kill -9
.
해결 방법 4: 대신 screen
또는 를 사용합니다 . 이렇게 하면 실행 중인 프로세스에 다시 연결하고 더 많은 명령을 입력할 수 있습니다(예: ) .tmux
disown
vmd
exit