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.serviceを提供します。バラよりapt-daily.serviceaptsystemctl list-timers

無効:

systemctl disable apt-daily.timer
systemctl disable apt-daily.service
systemctl disable apt-daily-upgrade.timer
systemctl disable apt-daily-upgrade.service

ダーバン:無人アップグレード

関連情報