タグ: Ubuntu Page 5 of 19

シェルスクリプト天気予報ツールの改良:機能追加とエラー処理の強化

以前作成したコマンドラインでの天気予報ツールについて改良を行いました。

修正前のスクリプト

まず、修正前のスクリプトはこちらです。

#!/bin/bash

# 都市名をコマンドライン引数から取得するか、ユーザーに尋ねる
city=$1
if [[ -z "$city" ]]; then
  echo "都市名を入力してください:"
  read city
  if [[ -z "$city" ]]; then
    echo "都市名が入力されませんでした。"
    exit 1
  fi
fi

# ansiweatherコマンドを実行して天気情報を表示
echo "ansiweatherの情報:"
if ! ansiweather -l "$city"; then
  echo "ansiweatherから情報を取得できませんでした。"
fi

# curlコマンドを使用してwttr.inから天気情報を表示
echo "wttr.inの情報:"
if ! curl -s "wttr.in/${city}?lang=ja"; then
  echo "wttr.inから情報を取得できませんでした。"
fi

このスクリプトは、コマンドライン引数で都市名を受け取るか、引数がなければユーザーに都市名の入力を求め、ansiweathercurlを使って天気情報を取得し表示します。

問題点

  • エラー処理が不十分: 都市名が入力されない場合のエラー処理はありますが、ansiweathercurlコマンドが失敗した場合の処理は警告メッセージを表示するだけです。
  • 入力検証がない: 空白のみの入力など、不正な入力に対する検証が行われていません。
  • 複数都市に対応していない: コマンドライン引数で複数の都市を指定することができません。
  • コードの再利用性がない: 処理がまとまっていないため、コードの再利用が難しいです。

修正後のスクリプト

そこで、以下のように修正です。

#!/bin/bash

# 都市名を取得する関数
get_city() {
  if [[ -z "$1" ]]; then
    read -p "都市名を入力してください: " city
    if [[ -z "$city" ]]; then
      echo "エラー: 都市名が入力されていません。" >&2
      return 1
    fi
  else
    city="$1"
  fi

  # 入力値の検証
  if [[ "$city" =~ ^[[:space:]]+$ ]]; then
    echo "エラー: 都市名に空白のみが入力されています。" >&2
    return 1
  fi
  return 0
}

# 天気情報を表示する関数
show_weather() {
  local city="$1"

  echo "--------------------"
  echo "ansiweatherの情報 (${city}):"
  if ! ansiweather -l "$city"; then
    echo "警告: ansiweatherから情報を取得できませんでした。" >&2
  fi

  echo "--------------------"
  echo "wttr.inの情報 (${city}):"
  if ! curl -fs --connect-timeout 5 "wttr.in/${city}?lang=ja"; then
    echo "警告: wttr.inから情報を取得できませんでした。" >&2
  fi
}

# メイン処理
if [[ $# -eq 0 ]]; then
    if ! get_city; then
        exit 1
    fi
    show_weather "$city"
elif [[ $# -gt 0 ]]; then
    for city in "$@"; do
        if ! get_city "$city"; then
            echo "$city の処理をスキップします。" >&2
            continue
        fi
        show_weather "$city"
    done
fi

exit 0

修正の意図と変更点

  • 関数化: get_city()関数とshow_weather()関数に処理を分割し、コードの可読性と再利用性を向上させました。
  • エラー処理の改善:
  • get_city()関数内で都市名が入力されない場合や空白のみが入力された場合にエラーメッセージを出力し、終了ステータスを返しています。エラーメッセージは標準エラー出力(>&2)に出力することで、通常の出力と区別しています。
  • show_weather()関数内でansiweathercurlコマンドが失敗した場合に警告メッセージを標準エラー出力に出力するように変更しました。
  • 入力検証の追加: get_city()関数内で空白のみの入力に対する検証を追加しました。
  • 複数都市への対応: コマンドライン引数で複数の都市を指定できるように変更しました。forループを使って、それぞれの都市に対して天気情報を取得し表示します。
    ./script Narita Londonとすることで、出発地と目的地の天気を同時に示すことができます。
  • curlコマンドのオプション変更: curl -sに加えて-f(エラー時にHTTPステータスコードを返す)と--connect-timeout 5(接続タイムアウトを5秒に設定)を追加し、より堅牢な処理を実現しました。

修正後に加わった挙動。

  • コマンドライン引数で複数の都市を指定して実行できるようになりました。例:./script.sh Osaka Kyoto
  • 都市名が入力されない場合や空白のみが入力された場合、エラーメッセージが表示されるようになりました。
  • ansiweathercurlコマンドが失敗した場合、警告メッセージが標準エラー出力に出力されるようになりました。
  • curlコマンドのタイムアウトが設定されたため、ネットワークの問題などで応答がない場合に処理が止まるのを防ぐことができます。

Redmineのかんばんプラグインの差し替えメモ。

概要

Redmineのプラグインをかんばんからダッシュボードプラグインに差し替えたときのメモです。

環境

  • Ubuntu 24.04
  • Redmine 5.1
  • MySQL 8
  • Ruby 3.2
  • Apache 2.4

さっくりとした手順

  1. DBのバックアップ
  2. 既存のかんばんプラグイン削除
  3. ダッシュボードプラグインインストール
  4. 動作確認

DBバックアップ

  • 作業ディレクトリ移動
cd /hoge && pwd

任意の作業ディレクトリに移動

  • DBバックアップ
mysqldump -h localhost -u redmine -p --no-tablespaces --single-transaction redmine > redmine_backup.$(date +%Y%m%d).sql
  • バックアップ確認
view redmine_backup.$(date +%Y%m%d).sql

Redmine kanbanのアンインストール (退避)

  • ディレクトリ移動
cd /path/to/redmine/root/directory/plugins && pwd
  • kanbanプラグインの退避
sudo mv kanban /path/to/backup/directory/kanban_org_$(date +%Y%m%d)
  • 退避確認
ls -ld /path/to/backup/directory/kanban_org_$(date +%Y%m%d)
  • Webサービス再起動
sudo systemctl restart apache2.service && echo $?

0を確認

Dashboardプラグインのインストール

  • git clone
sudo -u www-data git clone https://github.com/jgraichen/redmine_dashboard
  • clone 確認
ls -ld redmine_dashboard
  • Redmineルートディレクトリに移動
cd /path/to/redmine/root/directory && pwd
  • bundle install
sudo -u www-data bundle install --without development test
  • DBマイグレーション
sudo -u www-data bundle exec rake redmine:plugins:migrate RAILS_ENV=production
  • Webサービス再起動
sudo systemctl restart apache2.service && echo $?

0を確認

確認

  1. Redmineに管理者権限でログイン
  2. 管理>プラグインにRedmine Dashboard pluginがあることを確認
  3. 任意のプロジェクト>設定で「ダッシュボード」を有効化して保存。
  4. プロジェクトのタブにダッシュボードが表示されること、自分が担当するチケットをドラッグアンドドロップで表示されることを確認

Railsのハマり案件。状況収束。

昨日のこの案件は無事に解決。

対処

原因が自分のRails/Rubyによるものが明らかだったので、それぞれの入れ直しです。

Rubyアンインストール

sudo apt remove --purge ruby ruby-dev rubygems
apt autoremove

として、関連のパッケージを全て削除。設定は特にしていなかったのが幸いしました。

Ruby 再インストール

sudo aptitude install ruby libruby ruby-dev libmysqlclient-dev
sudo aptitude install libapache2-mod-passenger

gemで関連パッケージインストール

sudo gem install bundler racc mysql2

apache再起動

sudo systemctl restart apache2.service && echo $?

→ 0が返ってきたので反映もOK。

後はbundle installもDBマイグレーションも無事に通るようになりました。

Railsのハマり案件。状況発生。

前に見たことがないエラーにとっ捕まったため、状況をメモしておきます。

環境

  • Ubuntu 24.04
  • Ruby 3.2

何が起きているか

Redmineの検証のため、新たに5.1を立てています。

  1. SVNでチェックアウト
  2. DBなどを作成
  3. database.ymlにDB情報を追記
 sudo -u www-data bundle exec rake generate_secret_token

実行後、

rake aborted!
NameError: uninitialized constant ActiveSupport::LoggerThreadSafeLevel::Logger (NameError)

    Logger::Severity.constants.each do |severity|
          ^^^^^^^^^^
/home/www-data/hideout/vendor/bundle/ruby/3.2.0/gems/activesupport-6.1.7.10/lib/active_support/logger_thread_safe_level.rb:16:in `<module:LoggerThreadSafeLevel>'
/home/www-data/hideout/vendor/bundle/ruby/3.2.0/gems/activesupport-6.1.7.10/lib/active_support/logger_thread_safe_level.rb:9:in `<module:ActiveSupport>'
/home/www-data/hideout/vendor/bundle/ruby/3.2.0/gems/activesupport-6.1.7.10/lib/active_support/logger_thread_safe_level.rb:8:in `<top (required)>'
<internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:38:in `require'
<internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:38:in `require'
/home/www-data/hideout/vendor/bundle/ruby/3.2.0/gems/activesupport-6.1.7.10/lib/active_support/logger_silence.rb:5:in `<top (required)>'
<internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:38:in `require'
<internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:38:in `require'
/home/www-data/hideout/vendor/bundle/ruby/3.2.0/gems/activesupport-6.1.7.10/lib/active_support/logger.rb:3:in `<top (required)>'
<internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:38:in `require'
<internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:38:in `require'
/home/www-data/hideout/vendor/bundle/ruby/3.2.0/gems/activesupport-6.1.7.10/lib/active_support.rb:29:in `<top (required)>'
<internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:38:in `require'
<internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:38:in `require'
/home/www-data/hideout/vendor/bundle/ruby/3.2.0/gems/railties-6.1.7.10/lib/rails.rb:7:in `<top (required)>'
<internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:38:in `require'
<internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:38:in `require'
/home/www-data/hideout/config/application.rb:5:in `<top (required)>'
<internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:38:in `require'
<internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:38:in `require'
/home/www-data/hideout/Rakefile:5:in `<top (required)>'
/home/www-data/hideout/vendor/bundle/ruby/3.2.0/gems/rake-13.2.1/exe/rake:27:in `<top (required)>'
(See full trace by running task with --trace)

が発生。そのため、DBマイグレーションも通らないという状況。

この問題はやっかいそうなので、まずは事象が発生したという事実だけメモをします。

RedmineにLightbox2プラグインをインストール。

それなりに読まれていると自負している『ライザのアトリエ3』の攻略記事「有料DLC:ロスカ島」の文献探しの記事にも使われているLightbox2プラグインのインストール方法です。

メールアドレスの登録が必要なものの無料で利用できます。

  • 画像を拡大表示できるライトボックス機能。
  • スライドショー形式で画像を順に閲覧可能。

の2つが強力なため、Remdineで画像を多用する際にも大いに役立ちます。

動作環境

  • Ubuntu 24.04
  • Apache 2.4
  • Ruby 3.2

手順

Redmine Xでのパッケージ取得

公式サイトよりメールアドレスを登録します。

登録後、送られてくるメール内に記載されているURLからパッケージを取得。

任意の方法でサーバ内にアップロードします。

パッケージの展開

  • アップロードしたファイルがあるディレクトリに移動
cd /hoge && pwd
  • パッケージの所有者変更
sudo chown www-data:www-data redmine_x_lightbox2.zip

Redmineの実行ユーザーに合わせます。

パッケージの展開と配置

  • パッケージ配置
sudo -u www-data unzip redmine_x_lightbox2.zip -d /path/to/redmine/plugins

自分のRedmine環境に合わせます。

  • パッケージ配置確認
ls -ld /path/to/redmine/plugins/redmine_x_lightbox2

ディレクトリがあることを確認します。

プラグインインストール

  • Redmineルートディレクトリに移動
cd /path/to/redmine && pwd

自分の環境に合わせます。

  • bundle install
sudo -u www-data bundle install
  • DBマイグレーション
sudo -u www-data bundle exec rake redmine:plugins:migrate RAILS_ENV=production
  • Apache再起動
sudo systemctl restart apache2.service && echo $?

返値が0であることを確認します。

  • Apache再起動後のステータス確認
systemctl status apache2.service

active(running)を確認します。

動作確認

  1. 画像を添付 任意のチケットまたはWikiに画像を添付します。
  2. 画像をクリック 添付された画像をクリックし、ポップアップ表示が正常に動作することを確認します。
  3. ナビゲーションの確認 表示された画像を左右に切り替え、スライドショー機能が動作していることを確認します。

Firefly-III 1年間の検証結果と運用レビュー

オープンソースの家計管理システム「Firefly-III」を使い始めてから1年が経過しました。この1年間の運用を通じて、得られた知見や感想をまとめました。最初に導入した環境や特徴的なポイントについて、振り返ってみます。

環境の構築

最初にインストールした環境は、Ubuntu 20.04にPHP 8.1を使用していましたが、その後、Ubuntu 24.04とPHP 8.3にアップグレードしました。

(インストールのメモはこちら)

構築自体はWordpressの構築実績があれば理解可能で、公式ドキュメントに従うことでスムーズに進みました。特に専門的な知識がなくても、簡単に運用を開始できる点は大きな魅力でした。

入力の簡便さ

家計簿の管理で最も重要なのは、入力の手間をいかに減らすかです。Firefly-IIIでは、サブスクリプションや保険料など、毎月定期的に発生する費用を簡単にコピーして入力できる機能があり、手間を大幅に削減できました。これにより、月ごとの出金管理が非常に楽になりました。

直感的なインターフェース

「Firefly-III」のインターフェースは非常に直感的で、出金、入金、送金というシンプルな3つの取引項目で構成されています。このシンプルさにより、簿記などの知識に乏しくても迷うことなく運用できるようになりました。

視覚的な管理: グラフの活用

「Firefly-III」では、家計の動きをグラフで視覚化できるため、特に大きな支出がある場合に、どのくらいの金額が減るのかが一目で分かります。また、クレジットカードのような未来の引き落としもグラフに表示されるため、前もって支出を把握することができます。

予算管理とモチベーションの向上

予算を設定することで、趣味や娯楽に使うお金の限度を決めることができ、(ある程度の)無駄遣いを防げました。デジタルガジェットの購入やフィギュアの予約などに備えて出費を抑えられるようにもなりました。

また、「Firefly-III」では予算管理以外にもカテゴリー分けができ、食費や日用品などを細かく把握することができました。これにより、家計全体のバランスをよりよく理解できるようになりました。

入出金は極めて有用なライフログ

家計簿をつけることで、いつ、どこで、何に、どれくらい使ったかという行動の記録が残ります。この記録は、単なる金銭的な管理にとどまらず、ライフログとしても非常に有用です。例えば、病院での支出を記録することで、いつ、どの病気にかかったかがわかり、過去の体調管理にも役立ちました。

また、突発的な出来事の際に、どのような出金が発生したかも目の当たりにできました。

旅行時の支出記録

旅行中も「Firefly-III」は大いに役立ちました。どんな店で何を食べたのか、お土産を買ったのかなど、旅行の詳細を記録しておくことで、後から振り返って思い出に浸ることができました。

すべての支出を記録するのは大変

一方で、全ての支出を記録するのはやはり大変です。LINEなどのトークアプリで自分自身にメモを送ることで忘れずに記録していますが、入力ミスや記録漏れが発生することもあり、後で差分をチェックすることが課題として残っています。

とはいえ、自分自身の予算管理のために多少の誤差は許容できる範囲であり、精度向上のための改善は引き続き行っています。

運用に関する課題

「Firefly-III」をサーバーで管理するため、サーバー運用に関する一定の知識が必要です。また、お金の流れという非常にセンシティブな情報を扱うため、慎重な運用が求められます。

データのセキュリティやバックアップについても配慮が必要です。

今後の目標

今後は、「Firefly-III」のタグ機能を活用して、さらに細かく支出のカテゴリーを分けて管理していく予定です。

また、自動的に支出が登録される仕組み(例えばAPIやスマートフォンアプリを活用)を導入することで、手間をさらに減らすことを目指しています。最終的には、資産の流れをより明確に把握し、効果的な予算の策定を行いたいと考えています。

1年間の運用を通じて、Firefly-IIIは家計管理を効率的に行うための強力なツールであることが実感できました。今後も継続して使いながら、より精度の高い予算管理を目指していきたいと思います。

Apache設定ファイル反映を効率化するスクリプトをコマンド化。

先日ご紹介したApache環境のWebサービス再起動を効率的に行うスクリプトをコマンドとして登録します。

コマンドとして登録

  • 実行権限付与
sudo chmod +x apache_check_restart.sh
  • シンボリックリンク付与
sudo ln -s /path/to/script/apache_check_restart.sh /usr/local/bin/apache_check_restart

スクリプトが配置されたディレクトリをフルパスで書きます。

  • シンボリックリンク付与確認
 which apache_check
/usr/local/bin/apache_check_restart

実行例

sudo apache_check_restart
==== 有効なサイト設定ファイル ====
設定ファイル: atelier.conf
ServerName atelier.reisalin.com
servername atelier.reisalin.com
設定ファイル: bookstack.conf
ServerName barrel.reisalin.com
servername barrel.reisalin.com
構文チェック中...
Syntax OK
構文チェック完了: 問題ありません。
Apacheを再起動しますか? (y/n): 

Apacheが正常に再起動されました。

となり、yならapacheサービスを再起動後にステータスを表示。nならそのままスクリプトを抜けます。

Apacheのサービス再起動と確認スクリプト。

Ubuntu 24.04/Apache環境で

  • 再起動前に稼働しているサイトを確認
  • 構文チェック
  • 再起動
  • 再起動後のサービス状況

を一括で行うスクリプトです。

スクリプト

  • apache_check_restart.sh
#!/bin/bash


# サイト設定ディレクトリ
SITES_DIR="/etc/apache2/sites-enabled"

# スクリプトを root ユーザーで実行しているかチェック
if [ "$EUID" -ne 0 ]; then
    echo "このスクリプトは root 権限で実行する必要があります。"
    exit 1
fi

# 1. /etc/apache2/sites-enabled 配下のファイルとURL表示
echo "==== 有効なサイト設定ファイル ===="
if [ -z "$(ls -A $SITES_DIR)" ]; then
    echo "サイト設定が存在しません。"
else
    for site in "$SITES_DIR"/*; do
        echo "設定ファイル: $(basename "$site")"
        # URL部分を含むServerNameやServerAliasをgrepして表示 (重複行を削除)
        grep -Ei "ServerName|ServerAlias" "$site" | sed 's/^[ \t]*//' | sort | uniq
    done
fi

echo "=================================="

# 2. Apache構文チェック
echo "構文チェック中..."
apachectl configtest
if [ $? -ne 0 ]; then
    echo "構文エラーが検出されました。Apacheを再起動できません。"
    exit 1
fi
echo "構文チェック完了: 問題ありません。"

# 3. Apache再起動の確認
read -p "Apacheを再起動しますか? (y/n): " CONFIRM
if [[ "$CONFIRM" =~ ^[Yy]$ ]]; then
    echo "Apacheを再起動します..."
    systemctl restart apache2
    if [ $? -ne 0 ]; then
        echo "Apacheの再起動に失敗しました。"
        exit 1
    fi
    echo "Apacheが正常に再起動されました。"

    # 4. Apacheステータス確認
    echo "==== Apacheステータス ===="
    systemctl status apache2 --no-pager
else
    echo "Apacheの再起動はキャンセルされました。"
fi

root権限で作成し、

sudo chmod +x apache_check_restart.sh

で実行権限を付与します。

動作例

sudo bash apache_check_restart.sh
==== 有効なサイト設定ファイル ====
設定ファイル: atelier.conf
ServerName atelier.reisalin.com
servername atelier.reisalin.com
設定ファイル: bookstack.conf
ServerName barrel.reisalin.com
servername barrel.reisalin.com
構文チェック中...
Syntax OK
構文チェック完了: 問題ありません。
Apacheを再起動しますか? (y/n): 

Apacheが正常に再起動されました。
==== Apacheステータス ====
● apache2.service - The Apache HTTP Server
     Loaded: loaded (/usr/lib/systemd/system/apache2.service; enabled; preset: enabled)
     Active: active (running) since Wed 2024-12-18 08:23:29 JST; 12ms ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 335542 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
      Tasks: 11 (limit: 4690)
     Memory: 535.1M (peak: 2.2G swap: 0B swap peak: 67.9M)
        CPU: 510ms
     CGroup: /system.slice/apache2.service
             ├─335551 "Passenger core"
             ├─335577 "PassengerWatchdog (cleaning up...)"
             └─335580 /usr/sbin/apache2 -k start

と表示されます。上記、一連の流れを一括で行うので便利です。

Redmineに「いいね」機能を付与。

Redmineにソーシャルネットワークのように「いいね!」をつけるプラグインです。

環境

以下の環境で確認しています。

  • Ubuntu 24.04
  • Redmine 5.1
  • MySQL
  • Apache 2.4
  • Ruby 3.2

Redmine heartsインストール

  • Redmine プラグインディレクトリに移動
cd /path/to/redmine/root/directory/plugins

自分の環境に合わせます。

  • git clone
sudo -u www-data git clone --branch v3.0.0 --depth 1  https://github.com/cat-in-136/redmine_hearts

バージョンを指定したのは、本Redmineが4.2からアップデートしたこともあります。

  • マイグレーション
cd /path/to/redmine/root/directory/

Redmineのルートディレクトリに移動します。

 sudo -u www-data bundle exec rake redmine:plugins:migrate RAILS_ENV=production
  • Webサービス再起動
sudo systemctl restart apache2.service && echo $?

0が返ってくることを確認します。

  • 確認

設定後のRedmineにブラウザでアクセス。

いいね!欄がつけばOKです。

inotifywaitコマンドによるファイル書き換え状況の調査。

ちょっとした調査のためにinotifywaitを使ったので、そのメモです。

概要

inotifywait は、Linux の inotify インターフェースを利用してファイルやディレクトリの変更をリアルタイムで監視するコマンドです。これにより、ファイルの作成、削除、変更などのイベントを検知できます。

インストール方法

好みに応じてapt-getを利用します。

sudo aptitude install inotify-tools

基本的な使用例

特定のディレクトリ内でのファイル変更を監視する基本的な例です。

inotifywait -m /path/to/directory

このコマンドは、指定したディレクトリ内のファイル変更を監視し、変更があるたびにそのイベントを表示します。

特定のイベントを監視

特定のイベント(例: ファイルの修正)のみを監視する場合は、-e オプションを使用します。

inotifywait -m -e modify /path/to/directory

出力を tee コマンドでログに追記

監視結果をリアルタイムで表示しつつ、ログファイルに追記するには tee コマンドを使用します。

inotifywait -m /path/to/directory | tee -a /path/to/logfile.log

表示例

以下は、inotifywait コマンド実行時の表示例です。

inotifywait -m -e modify /path/to/directory
Setting up watches.
Watches established.
`/path/to/directory/modified_file.txt` MODIFY

この例では、/path/to/directory 内の modified_file.txt が修正されたことが検知されています。

tee コマンドを使用したログ追記例

監視結果をログファイルに追記する例を示します。以下のコマンドは、/home/mongodb ディレクトリ内での変更を監視し、イベントが発生するたびにその内容を mongodb_changes.log に記録します。

sudo inotifywait -m -e modify,create,delete /home/mongodb/ | tee -a mongodb_changes.log

実行例:

Setting up watches.
Watches established.
`/home/mongodb/` MODIFY index-143--5004584659078615538.wt
`/home/mongodb/` MODIFY WiredTiger.wt
`/home/mongodb/` CREATE WiredTiger.turtle.set
`/home/mongodb/` MODIFY collection-4--5004584659078615538.wt

このコマンドは、変更イベントをリアルタイムで表示するとともに、mongodb_changes.log にも追記します。

Page 5 of 19

Powered by WordPress & Theme by Anders Norén