내 시스템 로그를 보면 다음 메시지가 표시됩니다 /var/log/messages
.
Sep 2 15:29:15 <myhostname> systemd[1]: Requested transaction contradicts existing jobs: File exists
제 질문은 이 오류를 어떻게 해결하나요?입니다. 이것이 무엇을 의미하는지, 원인은 무엇인지, 걱정할 만한 가치가 있는지, 그렇다면 문제를 해결하는 방법을 이해하려면 어떤 조치를 취해야 합니까?
그리고 "요청된 트랜잭션이 기존 작업과 충돌합니다"라는 메시지는 무엇을 의미합니까? 개념적 배경이 부족한 것 같아요. 어쨌든, 이 오류 메시지는 이 오류 메시지의 원인을 진단하고 원인을 이해하기 위한 다음 단계에 대한 후보를 제안합니까?
나는 systemd 문서를 읽었지만 이것에 도움이 되지 않는다고 생각합니다. 무엇을 찾아야 할지에 대한 일반적인 가이드가 있으면 좋을 것입니다. "...기존 작업과 모순되는" 정보를 경험한 다른 사람들에게도 도움이 될 것이라고 생각합니다.
답변1
문제 해결을 위해 이 오류에 대한 자세한 정보를 얻으려면 먼저 다음 명령을 실행하십시오.
$ journalctl -ab
그러면 systemd 로그에서 일부 자세한 로그가 덤프됩니다.
또한 이 오류 바로 앞에 어떤 서비스에 문제가 있는지 알려주는 또 다른 오류가 있을 수 있습니다. 또한 서비스를 진단해 보십시오(예: Firewalld).
$ systemctl status firewalld.service
특히 다음 줄은 트랜잭션 활성화를 위한 시스템 코드에서 가져온 것입니다.
http://cgit.freedesktop.org/systemd/systemd/commit/?id=75778e21dfeee51036d24501e39ea7398fabe502
특히 systemd 트랜잭션의 경우(man systemd에서):
systemd has a minimal transaction system: if a unit is requested to start up
or shut down it will add it and all its dependencies to a temporary
transaction. Then, it will verify if the transaction is consistent (i.e.
whether the ordering of all units is cycle-free). If it is not, systemd will
try to fix it up, and removes non-essential jobs from the transaction that
might remove the loop. Also, systemd tries to suppress non-essential jobs in
the transaction that would stop a running service. Finally it is checked
whether the jobs of the transaction contradict jobs that have already been
queued, and optionally the transaction is aborted then. If all worked out and
the transaction is consistent and minimized in its impact it is merged with
all already outstanding jobs and added to the run queue. Effectively this
means that before executing a requested operation, systemd will verify that
it makes sense, fixing it if possible, and only failing if it really cannot
work.
따라서 이 모든 것을 종합해 보면 시작하려고 하는 로그 항목 근처에 다른 항목이 있지만 이미 정리해야 할 잠금 파일(아마도 오래됨)이 있는 것 같습니다.