lsof 用の Python モジュールはありますか?

lsof 用の Python モジュールはありますか?

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.serviceapt-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

デビアン:無人アップグレード

関連情報