2017-03-05 1 views
0

오래된 캐시에 다시 물렸습니다. 마침내 모든 캐시 재 구축 명령을 조사하는 것에 질려 버렸고, 내가 아는 모든 것을 수행하기 위해 간단한 zsh 함수를 작성하기로 결정했다. 여기이 순간에있어 무엇 :여러 개의 sudo 명령을 동시에 실행합니다.

첫 번째 sudo true는 다음과 같은 백그라운드 프로세스가 나를 입력을 기다리고 입력을 중단 앉아하지 않도록 sudo는, 최근의 타임 스탬프를 가지고 있는지 확인하기위한 것입니다
recache() { 
    sudo true 
    sudo updatedb & 
    local updatedbpid=$! 
    sudo ldconfig & 
    local ldconfigpid=$! 
    rehash 
    wait $updatedbpid $ldconfigpid 
} 

내 암호. 내 작업을 계속하기 전에 캐시가 최신 상태가 될 때까지 wait을 원하기 때문에 sudo -b을 사용하지 않습니다.

대부분의 경우이 방법이 효과적입니다. 그러나 3 분의 1 정도에 한 번만 다음 텍스트를 끝없이 복사합니다.

[2] + suspended (tty output) sudo updatedb 

왜? 문제를 해결하려면 어떻게해야합니까?

답변

0

그래서 나는 이런 일이 왜 발생했는지 결코 알지 못했습니다. 내 가장 좋은 추측은 sudo이 잠글려고하는 리소스가 있으며 두 번의 호출이 sudo인데이를위한 경쟁이 있습니다. 어쨌든, 나는 다음 번 수정 된 recache 함수를 문제없이 사용하고 있습니다. 가장 큰 차이점은 배경이 하나만있는 sudo이 있으며 프로세스 당 하나의 배경색이 sudo이 아닌 updatedbldconfig을 모두 실행한다는 것입니다.

recache() { 
    sudo true 
    sudo zsh -c 'updatedb & ldconfig & wait' & 
    local pid=$! 
    rehash 
    wait $pid 
} 
관련 문제