적절한 잠금을 유지하는 프로세스를 종료하는 방법은 무엇입니까?

적절한 잠금을 유지하는 프로세스를 종료하는 방법은 무엇입니까?

나는 ~하려고 노력한다

sudo apt update

하지만 다음을 얻으세요:

/var/lib/apt/lists/lock 잠금을 획득할 수 없습니다 - 열기(11: 리소스를 일시적으로 사용할 수 없음)

E: /var/lib/apt/lists/ 디렉토리를 잠글 수 없습니다.

최신 버전의 mongod를 얻으려고합니다. 내가 찾은 몇 가지 지침에 따라 다음을 수행했습니다.

$ ps aux | grep apt
5019  0.0  0.0  14224   980 pts/0    S+   02:52   0:00 grep --color=auto apt

그런데 어느 부분을 넣어야 할지 모르겠어요

kill -9 processnumber <id>

작동하게 만들다.

신분증의 어떤 부분인가요? 이런 일이 다시 발생하지 않도록 할 수 있는 방법이 있나요?

답변1

이름이나 인수 목록을 기반으로 프로세스를 종료하려면 를 사용하십시오 pkill.

pkill regexp

이름이 확장 정규식과 일치하는 모든 프로세스가 종료됩니다 regexp.

pkill -f regexp

정규식과 일치하는 공백으로 연결된 인수 목록(일반적으로 명령 이름을 포함하는 첫 번째 목록 포함)이 종료되는 모든 프로세스를 종료합니다.

그러나 여기서는 잠긴 파일을 보유하고 있는 프로세스를 종료하려는 것처럼 보입니다 /var/lib/apt/lists/lock. 따라서 다음과 같습니다.

fuser -k /var/lib/apt/lists/lock

(일부 퓨전을 사용하여 구현됨) 또는

lsof -t /var/lib/apt/lists/lock | xargs kill

더 적절할 수도 있습니다.

lsof /var/lib/apt/lists/lock먼저 어떤 프로세스를 사용하고 있는지 확인 하고 싶을 수도 있습니다 fuser /var/lib/apt/lists/lock. 가능하다면 냉정하게 죽이기보다는 정상적으로 종료하세요.

무슨 수를 써서라도 kill -9프로세스가 깔끔하게 종료될 기회를 주지 않는 상황은 피하십시오.

답변2

이는 이를 사용하지 말아야 하는 두 가지 이유를 보여줍니다 ps … | grep ….

ps머리글 행을 인쇄합니다. 그러나 출력이 파이프로 연결 grep되고 grep 패턴이 헤더 행과 일치하지 않으므로 헤더 행이 표시되지 않습니다. 헤더 행에 라는 열이 표시됩니다 PID. 이 열의 값은 에 전달해야 하는 값입니다 kill.

ps … | grep …일반적으로 grep 프로세스를 실행할 때 그 자체가 나열됩니다. 귀하의 경우 grep 프로세스만 볼 수 있습니다. grep 프로세스가 무작위라는 것을 알 수 있습니까? 파이프는 병렬로 실행되며 ps일반적 grep으로 grep실행되는 동안 시작할 시간이 있지만 ps때로는 ps매우 빠르게 실행되어 grep아직 시작되지 않은 경우도 있습니다. 패턴이 일치하지 않는지 확인하는 등 grep 프로세스를 보지 않는 몇 가지 요령이 있습니다.

ps aux | grep '[a]pt'

하지만 이를 수행하는 더 안정적인 방법이 있습니다. Linux 및 기타 시스템에서는 다음과 같은 소프트웨어를 제공합니다.pgrep. 그것은 약간 비슷하게 작동 ps … | grep …하지만 더 안정적입니다.

pgrep apt

프로세스에 대한 정보를 얻으려면 프로세스 ID를 다음으로 전달할 수 있습니다 ps.

ps $(pgrep apt)

모두 죽이려면 pgrep명령을 로 변경하십시오 pkill. 이러한 프로세스 중 일부만 종료하려면 pgrep원하는 프로세스에만 일치하도록 명령줄에 더 많은 조건을 추가하거나 출력에서 ​​PID를 수동으로 선택하세요 ps.

Linux ps명령은 명령 이름을 포함한 여러 기준에 따라 프로세스를 일치시킬 수도 있지만 정확한 일치가 필요하지만 pgrep하위 문자열 및 보다 일반적인 정규식 일치를 찾을 수 있습니다.

ps -C apt     # won't find e.g. apt-get

그러나 이는 적절한 잠금 문제를 해결하는 최선의 방법은 아닙니다. 바라보다Stefan Chazeras의 답변이를 위해.

관련 정보