Webmin - Webmin モジュール


 クラウディア


1. 概要
2. 調査
3. さらに調査
4. モジュールを削除
5. オチ

1. 概要

 わたしが、意識したのは、「12.3 RELEASE」を「13.1 RELEASE」へアップグレードしてからです。  なんか、マシンが重いなぁと思って、「top」を見てみると「pkg」コマンドが動作しています。

last pid: 98574;  load averages:  1.29,  1.33,  1.34; battery: -1%                         up 4+11:11:30  18:53:39
116 processes: 2 running, 114 sleeping
CPU: 23.0% user,  0.0% nice,  0.6% system,  0.0% interrupt, 76.4% idle
Mem: 1097M Active, 801M Inact, 92M Laundry, 936M Wired, 356M Buf, 875M Free
ARC:

Swap: 12G Total, 1738M Used, 10G Free, 14% Inuse

  PID USERNAME    THR PRI NICE   SIZE    RES STATE    C   TIME    WCPU COMMAND
84818 root          1 103    0   467M   119M CPU3     3 143:08 100.00% pkg
96874 www          27  52    0   703M   446M piperd   2   0:21   1.76% httpd
 こんな感じ。  いつ終わるとも知れず、「CPU」を 100% も使っておるではないか。  そもそも、これが誰が実行しているのかもわからず・・・。  「freebsd-user-jp」のお世話になって、「ps -j」と「pstree」を駆使して、なんとか

$ pstree 73709
-+= 73709 root /usr/local/bin/perl /usr/local/lib/webmin-1.995/miniserv.pl /usr/local/etc/webmin/miniserv.conf
 |-+- 84791 root /usr/local/lib/webmin-1.995/webmincron/webmincron.pl (perl)
 | \-+- 84815 root sh -c yes no | pkg upgrade 2>/dev/null 2>/dev/null
 |   |--- 84816 root yes no
 |   \-+- 84817 root pkg upgrade
 |     \--- 84818 root pkg upgrade
 \--- 98561 root /usr/local/bin/perl /usr/local/lib/webmin-1.995/miniserv.pl /usr/local/etc/webmin/miniserv.conf
 というところまで、つきつめた。

2. 調査

 では、いったい、「Webmin」のどんな機能なの?と。  これが、実はよくわからないのですね。  まぁ

/usr/local/lib/webmin-1.995/webmincron/webmincron.pl
 ちゅうのがなんかしてるのは、わかった。  しかし、そんな長いソースではないのですが  中身が

#!/usr/local/bin/perl
# Wrapper to run a single function via webmin cron

$main::no_acl_check = 1;
$main::no_referers_check = 1;
$main::webmin_script_type = 'cron';
do './webmincron-lib.pl';
$cron = $ARGV[0];

# Build list of args
my @args;
for(my $i=0; defined($cron->{'arg'.$i}); $i++) {
    push(@args, $cron->{'arg'.$i});
    }

# Force webmin script type to be cron
$main::webmin_script_type = 'cron';
$main::webmin_script_webmincron = $cron->{'module'}."::".$cron->{'func'};

# Require the module, call the function
eval {
    local $main::error_must_die = 1;
    &foreign_require($cron->{'module'}, $cron->{'file'});
    &foreign_call($cron->{'module'}, $cron->{'func'}, @args);
    };
$log = { %$cron };
if ($@) {
    $log->{'error'} = $@;
    }

# Log it, if enabled
if ($gconfig{'logsched'}) {
    &webmin_log("run", "webmincron", $cron->{'id'}, $log);
    }
 とまぁ、予約語だらけで、要領を得ない。  ただまぁ、名前から類推するに、「cron」のような動作をして、定期体にパッケージをアップグレードしようとしているのだな・・・というところまではわかります。  しかし、これ一向に終らないし、そもそもそのマシンは、パッケージ管理を「pkg」でなく「ports」で行っておる。  「pkg upgrade」を勝手にやるなんざ、いわぬお世話なのである。  なので、この処理を止めたいのだが、止め方がわからぬ。  まぁ、「Webmin」自体を止めちゃえばいいのではありますが、「Webmin」には、ときどきお世話になりますのだ。

3. さらに調査

 「webmincron.pl」と同一のディレクトリにある

/usr/local/lib/webmin-1.995/webmincron/module.info.ja.auto
 の中身を読んで

desc_ja=スケジュールされたWebmin機能
longdesc_ja=Webmin Webサーバーによって定期的なスケジュールで呼び出されるWebminモジュール関数を定義する
 なんとなく、あたりをつけました。

4. モジュールを削除

 これは、「Webmin モジュール」というものらしい。  削除できそうなのでやってみます。  「Webmin」→「Webmin 設定」→「Webmin モジュール」

 「Wbmin モジュール」の中に「スケジュールされたWebmin機能」というのがありますので、選択して
 「選択されたモジュールを削除」


 「削除」


 これで


/usr/local/lib/webmin-1.995/webmincron
 が、ディレクトリごとなくなっちゃいます。  ログアウトして、「Webmin」を再起動します。

service webmin restart
 ところが、これだけでは、前に動いていたコマンドが終らなかったので

$ pgrep -lfa pkg
84815 sh -c yes no | pkg upgrade 2>/dev/null 2>/dev/null
84817 pkg upgrade
84818 pkg upgrade
$ kill -KILL 84818
$ pgrep -lfa pkg

 と、いなくなったことを確認して。  しばらく様子を見ようと思います。

5. オチ

 で、前項を適用して、様子を見ていたら、また現象が発生するのですよ。  困り果てましたな。  で、結局、「Webmin」をアンインストールして、いちから、インストールしなおしましたら・・・。  現象が収まりました。  結局、「初心に戻れ」ってことですな。

audiobook.jp
5G CONNECT
ハイスピードプラン
ベルリッツ
サウンドハウス
JETBOY
TikTok Shop 【リピート用プログラム】
EaseUS
Amazonギフトカード
earthcar(アースカー)
葬送のフリーレン Prime Video
健康サポート特集
損保との違い
アフィリエイトのアクセストレード
それがだいじWi-Fi
ネットオークションの相場、統計、価格比較といえばオークファン
薬屋の独り言
【usus ウズウズ】
U-NEXT