gzipプロセスは私のシステムで定期的に実行されます。これをトリガーする要素をどのように理解できますか?

gzipプロセスは私のシステムで定期的に実行されます。これをトリガーする要素をどのように理解できますか?

gzip私はKubuntuシステムのプロセスがランダムに始まり、多くのリソースを占有し、ラップトップファンが狂ったように動作する問題をしばらく経験しました。プロセスが表示され、gzip -c --rsyncable --best長時間htop実行されます。原因が何なのかわかりません。システムは Kubuntu 14.04 で、バックアップ計画は設定されていません。次回プロセスが現れたときにプロセスの原因をどのように見つけるかを知っている人はいますか? Google で検索しましたが、まだ理由が見つかりません。コマンドに関するいくつかの提案を見ましたが、psそこにあるすべての行のgrepは実際には何も指していません。

gzip -c --rsyncable --best

答え1

プロセスツリー

プロセスの実行中にプロセス階層を表示するには、psオプションを試してください。f

ps axuf

その後、プロセスツリーを取得する必要があります。これは、親プロセスが何であるかを確認する必要があることを意味しますgzip

gzipthenの直系の子孫の場合、プロセスを作成したinit可能性がないため、親プロセスが終了した可能性があります。initgzip

予約されたこと

crontabまた、sをチェックして生成されたエントリがあることを確認する必要があります。あなたが見ているプロセスを実行しているユーザーはどこにいますかsudo crontab -l -u <user>(あなたの場合はそうです)。usergziproot

このシステムにバックグラウンドサービス設定などの操作を行った他のユーザーがいる場合は、そのcrontabユーザーも確認してください。gzip実行中という事実がrootトリガされた元のプロセスも実行中であることをgzip保証するものではありません。を実行すると、root既存のリストをすべて表示できます。crontabsudo ls /var/spool/cron/crontabs

丸太

プロセスの作成時に疑わしいエントリがあるかどうか、システムログを確認してください。 Kubuntuがログファイルの名前を別々に指定しているかどうかはわかりませんが、標準のUbuntuでは少なくとも/var/log/syslog

最後の手段:gzipラッパー

これらのいずれかが発生しない場合は、gzipバイナリ名を変更して渡された引数で始まる小さなラッパーを置くことができますが、その時点でgzipシステム状態もキャプチャできます。

答え2

おそらく使用するファイルに集中する必要があります。

lsof -c gzip

...かなり良いアイデアを与えます。質問の画像のリストを強調表示した後にのみhtop押すと、これがすぐに有効になります。lこれに加えて、htopキーストロークで要求するとプロセスツリーも表示されるため、F5プロセスのソース(存在する場合)を直接確認できます。

Linuxシステムの場合:

ps -Fwwp"$((gzip_ppid=$(ps -oppid= -Cgzip)))"
fuser -vau "/proc/$gzip_ppid/fd/"*

gzip...親プロセスとそれが使用するファイル、およびそれを使用する他のプロセスに関する多くの情報を印刷する必要があります。

答え3

pstreeは、何が生成されたかを示す正しい形式の出力を提供します(親がgzipコマンドを生成した直後に死ぬことはないと仮定します)。

また確認してみてくださいコマンドライン引数を含むすべての実行されたコマンドを記録する簡単な方法はありますか?

答え4

以下は、何が起こっているのかを理解するのに役立ついくつかのヒントです。

  1. 問題のあるプロセスのPIDを取得します。

    $ pgrep -a gzip 
    25267 gzip -c --best file
    

    私のシステム(主な仕事を始めたところgzip)は単一のPID:25267を返します。複数のPIDがある可能性があるため、正しいPIDを選択したことを確認してください。この-aフラグはpgrepコマンドライン全体を印刷し、正確に何が実行されているかを確認するように指示します。

  2. これを開始したプロセスのPID、親PID、またはPPID、および責任あるユーザーを取得します。

    $  ps -p 25267 -o user -o pid -o pgid -o args
    USER       PID  PGID COMMAND
    terdon   25267 25266 gzip -c --best file
    

    今、私たちはPIDを使用するプロセスによってgzip開始されることを知っています。terdon25266

  3. 親プロセスが何であるかをご覧ください。

    $ ps -p 25266 -o user -o pid -o pgid -o args
    USER       PID  PGID COMMAND
    terdon   25266 25266 /bin/bash /home/terdon/scripts/a.sh
    
  4. またはプロセスツリーを見てください。

    $ pstree -p 25266
    a.sh(25266)───gzip(25267)
    
  5. どのディレクトリで実行されているかを確認してください(Linux):

    $ readlink -f /proc/25267/cwd
    /home/terdon/foo
    

/home/terdon/scripts/a.shしたがって、私の場合はシェルスクリプトによって開始されました/home/terdon/foo

関連情報