git 저장소로 뭔가를 할 수있는 ssh 트리거를 얻으려고합니다. 백그라운드에서 코드를 실행하면 작동합니다. nohup
을 추가해도 영향을주지 않습니다. 나는 마침내 배경은,이 작업을 중지 할 때배경으로 사용할 때 git checkout이 작동하지 않습니다.
git checkout master
Already on 'master'
을 :하지만 관련 비트는 말한다 즉이뿐만 아니라 포 그라운드에서 수행되며,
이git checkout master
fatal: unable to write new index file
(출력은 로그 파일로 이동됩니다 로그 파일에는 실행중인 명령이 포함됩니다).
나는 스크립트의 시작 부분에 id
과 umask
을 인쇄했으며 동일하게 보입니다. 그리고 두 경우 모두 ssh 트리거에 의해 실행됩니다. 유일한 차이는 명령 뒤에 &
입니다. 슬립이없는 경우 1 ~
#!/bin/sh
export GIT_DIR=/somewhere
nohup git-using-script.sh </dev/null >/dev/null 2>&1 &
sleep 1
에서, 리디렉션은 nohup을 시작하기 전에, SSH는 nohup을하기 전에 종료 관리하는 일이 (가 시작되지 않는 nohup을 새로운 세션 명령을 생성합니다
스크립트는 다음과 같습니다 어쨌든 종료됩니다.) 그러나 &
이 없으면 스크립트가 실행되지만 git은 오류를 생성합니다.
어떻게 프로세스를 재개합니까? 현재 작업 디렉토리 또는 사용자가 변경 될 수 있습니까? – bundacia
@bundacia : 나는'nohup'과 결합 된'&'로 되돌아갑니다. 그리고 잠을 자면, nohup이 세션을 변경하기 전에 ssh가 연결을 끊고 어쨌든 프로세스를 종료하기 때문입니다. –