약 10일 정도 걸리는 실행 명령이 있습니다. 프로세스는 모든 하위 디렉터리에서 파일을 검색하고 비디오를 변환하는 것이기 때문입니다. 발견된 각 비디오 명령줄에 대해 시스템은 프로세스 번호를 변경합니다.
이것은 내가 실행중인 라인입니다 :
find . -exec ffmpeg -i {} -vf scale=1280:720 -vcodec libx264 -crf 30 -b:v 300000 {}_250.mp4 \;
SSH 세션을 종료하고 현재 명령줄을 계속 실행하려면 어떻게 해야 합니까?
벌써 둘째 날을 맞이했는데 단순히 연결이 끊어져서 이 모든 시간을 잃게 될까 봐 걱정됩니다.
답변1
그리고
netstat --inet --inet6 -lnp | grep :22
프로세스의 PID를 찾을 수 있습니다 sshd
. 그리고
# pstree -p -n 1527
sshd(1527)─┬─sshd(32296)───bash(32298)───screen(32336)
└─sshd(32723)───bash(32725)───find(32763)───sleep(323)
하위 프로세스를 볼 수 있습니다.
죽으면 bash(32725)
죽는다 .find(32763)
SIGHUP
이는 find
백그라운드에서 실행하고 내장된 쉘을 사용하여 방지 할 수 있습니다 disown
. 그러나 sshd(32723)
프로세스가 종료되면 모든 하위 프로세스와 제어 터미널이 사라지므로 커널이 해당 프로세스를 종료합니다.
일시 중지 shd(32723)
하고 bash(32725)
. 이렇게 하면 SSH 연결이 끊어졌을 때 조회를 종료할 수 없습니다.
kill -stop 32723 32725
다음 번에는 더 똑똑하게 행동하십시오. 웹을 통해 로그인을 하면 이용하지 않거나 screen
로그인하지 않을 이유가 거의 없습니다.tmux
답변2
nohup find . -exec ffmpeg -i {} -vf scale=1280:720 -vcodec libx264 -crf 30 -b:v 300000 {}_250.mp4 \; &
처음 종료할 때 경고 메시지가 표시되지만 반복적으로 종료하면 터미널 입력이 필요하지 않는 한 프로그램이 계속 실행됩니다.
그러나 나는 너무 빨라서 귀하의 프로그램이 이미 실행 중이라는 사실을 무시했습니다.