シェルスクリプトで.NET Coreアプリケーションを実行する方法
今回は、簡単な.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の他の関連記事もご参照ください
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
シェルバッチプロセスで存在するかどうかを判断する
-
シェルスクリプトとmy.cnfによるmysqlの追加・削除・設定
-
[解決済み】Bash スクリプトと /bin/bash^M: bad interpreter: そのようなファイルまたはディレクトリがない [重複] [重複
-
シェル特殊変数(シェル $#, $*, $@, $? , $$)の使用について
-
シェルスクリプトの入門書。記述形式と実行方法の実装
-
NCバウンスシェルのいくつかの方式を説明
-
シェルでスクリプトのパラメータを渡す2つの方法について説明します。
-
シェルスクリプトが他のスクリプトを呼び出す3つの方法
-
シェル $? 関数の戻り値、または直前のコマンドの終了ステータスを取得する
-
linux オートメーション インタラクション スクリプト 説明