次を実行してKali Linuxを更新しようとするたびに
sudo apt update
次のエラーメッセージが表示されます。
Unable to lock directory /var/lib/apt/lists/
この問題を解決したのは、以下を実行してプロセスを見つけることでした。
lsof /var/lib/dpkg/lock
lsof /var/lib/apt/lists/lock
lsof /var/cache/apt/archives/lock
ロックを獲得したプロセスを終了します。
このプロセスを自動化したいと思います。
答え1
尋ねるべき質問に対する答え
これは良い考えではありません。。盲目的にプロセスを終了しないでください。ファイルをロックしたプロセスとその理由を学びます。
また、この問題が頻繁に発生する場合は、何かが間違っている可能性があります。 Kali Linuxは侵入テストに使用される特別なディストリビューションです。インストール用に設計されていません。侵入テスト以外の作業を行うには、Kaliを使用しないでください。。 Ubuntuなどの正規分布を使用します。
Pythonでファイルを開くプロセスを見つける方法
あなたはそれを使用することができますpsutil
プロセスを列挙し、そのプロセスの開かれたファイルを列挙するパッケージ。https://stackoverflow.com/questions/20106220/check-for-open-files-with-python-in-linuxコード例があります。
ファイルが開いているプロセスのみを列挙するには、次のコマンドの出力を解析する方が簡単です。fuser
。
import os, subprocess
try:
pids = subprocess.check_output(['fuser', '--', filename], stdout=open(os.devnull))
for pid in map(int, pids.split()):
print('Process {} has {} open'.format(pid, filename))
答え2
/var/lib/apt/lists/ ディレクトリをロックできません。
apt
有効にすると、バックグラウンドで実行されるサービスapt-daily-upgrade.service
を提供します。バラよりapt-daily.service
apt
systemctl list-timers
無効:
systemctl disable apt-daily.timer
systemctl disable apt-daily.service
systemctl disable apt-daily-upgrade.timer
systemctl disable apt-daily-upgrade.service
ダーバン:無人アップグレード