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
デビアン:無人アップグレード