1. ホーム
  2. スクリプト・コラム
  3. リナックスシェル

シェルスクリプトで.NET Coreアプリケーションを実行する方法

2022-02-09 17:56:13

今回は、簡単な.NET Coreアプリケーションを実行するためのシェルスクリプトの作成方法について見ていきたいと思います。今回の研究テーマは、このサイト(pzy.io)のデータベースを毎日定期的にバックアップする必要があり、バックアップ後にバックアップファイルを遠隔地のクラウドストレージにアップロードしてデータの安全性を確保しているためです。データベースのバックアップはシェルスクリプトで実行され、バックアップファイルのアップロード機能は.NET Frameworkをベースに開発されているため、.NET Frameworkを利用したバックアップを行うことができます。

実行する手順は簡単です。

1. 次の例のように、すでに構築した基本的な.NET Coreコンソールアプリケーションを作成します。

class Program 
{ 
  /// <summary> 
  //// 
  /// </summary> 
  /// <param name="args"></param> 
  /// <returns></returns> 
  static async Task Main(string[] args) 
  { 
    var builder = new ConfigurationBuilder(); 
    builder.AddJsonFile("appsettings.json", false, false); 
    var configuration = builder.Build(); 
    var serviceProvider = new ServiceCollection() 
      .AddQiniuStorageX(configuration) 
      .BuildServiceProvider(); 
    var storageProvider = serviceProvider.GetService<IStorageProvider>(); 
    var backup = new MysqlBackQiniu(storageProvider); 
    var backupPath = configuration.GetValue<string>("BackupPath"); 
    await backup.ExecuteAsync(backupPath); 
  } 
}

2. プロジェクトをコンパイルして、アプリが正常に作成されたかどうか試してみてください。

3. 実行しているOSプラットフォームのバージョンに基づきパブリッシュします。私はUbuntu 18.04で動作しているので、以下のコマンドラインを実行して公開します。

dotnet publish -c release -r ubuntu.18.04-x64 --self-contained

4. Linuxでディレクトリを作成する(仮に /home/dotnet/test ). ポイント 3 でリリースによって生成されたファイル (リリースが対象としているプラットフォームの publish の下) をアップロードして /home/dotnet/test アップロードに失敗した場合は、ディレクトリのパーミッションを777に設定し、アップロードが完了したらプラットフォームの実行ファイル(このサイトではPzy.DbBackup)のパーミッションを777に設定してください。

5. シェルスクリプトファイルの作成( dbbackup.sh ). 作成したら、パーミッションを変更し、ファイル内に以下のように記述して、実行可能な状態にする必要があります。

#! /bin/sh 
cd /home/dotnet/test 
. /Pzy.DbBackup

ここで一つ注意したいのは、.NET Coreアプリケーションのカレントディレクトリで実行すること、つまり、最初に cd /home/dotnet/test カレントディレクトリを検索し、アプリケーションを実行します。 . /Pzy.DbBackup を直接経由するのではなく /home/dotnet/test/Pzy.DbBackup を実行してしまうと、設定ファイルを読み込めないなどの問題が発生します。

シェルスクリプトを使用して、.NET Coreアプリケーションを作成します。シェルスクリプトを使ったアプリケーションの実行については、Scripting Houseの他の関連記事もご参照ください