如何使用 Shell 脚本执行 .NET Core 应用

在本文中,我将研究如何创建 shell 脚本来运行简单的 .NET Core 应用程序。之所以有这个研究议题,是因为本站(pzy.io)数据库需要每天定时备份,并在备份完成后,将备份文件上传远程云存储,保证了数据安全。由于数据库备份是 shell 脚本执行,而备份文件上传功能基于 .NET Core 开发,在备份完成后,shell 脚本需要调用 .NET Core 应用程序。

具体操作执行步骤很简单。

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、基于运行的操作系统平台版本发布。由于我是基于 Ubuntu 18.04 运行,故执行以下命令行进行发布:

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

4、在 Linux 上创建目录(假设为: /home/dotnet/test )。将第 3 点发布生成的文件(在 release 对应平台的 publish 下)上传到 /home/dotnet/test 目录,如果上传失败,则设置一下目录权限为 777。上传完成后,将该平台的可执行文件(本站为 Pzy.DbBackup)权限设置为777。

5、创建 shell 脚本文件(假设为 dbbackup.sh )。创建后,必须通过更改权限使其成为可执行文件,在该文件中写入以下内容:

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

这里有一点要注意,一定要到 .NET Core 应用当前目录下执行 .NET Core 应用,即先通过 cd /home/dotnet/test 定位到当前目录,再执行应用 ./Pzy.DbBackup ,而不是直接通过 /home/dotnet/test/Pzy.DbBackup 来执行应用,因为这要将引起读取不到配置文件等问题。

以上就是如何使用 Shell 脚本执行 .NET Core 应用的详细内容,更多关于Shell 脚本执行应用的资料请关注我们其它相关文章!

(0)

相关推荐

  • 一个ASP.Net下的WebShell实例

    代码如下: 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" %><%@ Import Namespace="System.Runtime.InteropServices" %><%@ Import Namespace="System.IO" %><%@ Import Namespace="System.Data

  • ASP.NET下使用WScript.Shell执行命令

    ASP.NET提供了两种方法让我们使用COM组件:1.Server对象的CreatObject方法:2.将COM组件转化为.NET组件. ·Server对象的CreatObject方法 这个方法比较简单,直接使用就是.当然前提是服务器上已经注册了该组件,而WScript.Shell是系统自带的,我们不用担心.只是在编写代码时注意ASP.NET与ASP语法上的细微差别就可以了.直接给出代码如下: <!-- Titel: WScript.Shell .NET Version 1 Author: la

  • PowerShell中使用.NET将程序集加入全局程序集缓存

    通常情况下,将程序集(Assembly)加入全局程序集缓存(GAC,Global Assembly Cache),可以使用GacUtil工具.只要使用/i参数,就可以把指定路径的程序集添加进GAC了. 不过由于GacUtil并不是.Net Framework的一部分,而是和Windows SDK一起发布的,这就导致了机器中安装了.Net,却可能找不到GacUtil的情况. 在PowerShell中,我们可以直接使用.Net的类库来搞定这件事,而不需要通过GacUtil.具体代码如下: [Refl

  • PowerShell中查看当前版本、Windows版本、.NET版本信息的代码

    PowerShell查看当前版本.Windows版本..NET版本信息 有很多cmdlet或者cmdlet的参数,在PowerShell不同的版本中,支持得不一样.所以,弄清楚当前PowerShell的版本信息是非常重要的一件事情.那么怎么查看当前PowerShell的版本信息呢?洪哥向大家介绍两个方法: 其实就是两个PowerShell的环境变量,一个是$psversiontable,另一个是$host. 有很多cmdlet或者cmdlet的参数,在PowerShell不同的版本中,支持得不一

  • 使用PowerShell .Net获取电脑中的UUID

    UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织应用在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部分. 组成 UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的.通常平台会提供生成的API.按照开放软件基金会(OSF)制定的标准计算,用到了以太网

  • Powershell中可以使用的.Net实用静态方法

    支持所有版本. Powershell能够使用.net静态方法,比如下面有一些你常用的方法: 复制代码 代码如下: [Math]::Round(7.9)   [Convert]::ToString(576255753217, 8)   [Guid]::NewGuid()   [Net.Dns]::GetHostByName('schulung12')   [IO.Path]::GetExtension('c:\test.txt')   [IO.Path]::ChangeExtension('c:\

  • PowerShell 定时执行.Net(C#)程序的方法

    可能也有其他方法,比如用 WGet 等等,但是 推荐用 PowerShell ,为什么呢,因为 PowerShell 太强大呗 PowerShell 语法(demo1.ps1): 复制代码 代码如下: $date = Get-Date;$beginTime = 2 * 60 ;$endTime = 2 * 60 + 11;$minuteCount = $date.hour * 60 + $date.minute #if the time is rightif(($minuteCount -le

  • PowerShell入门教程之访问.Net程序集、COM和WMI实例

    PowerShell可以设计的大而全,重新实现一切:也可以像现在一样设计成胶水语言,利用现有的资源.特别是,与.Net.COM和WMI三大豪门的联姻,使得PowerShell必将在Windows世界里大放光彩. 与新锐.Net联姻 在Windows的世界里,.Net代表着现在和将来,是新生力量.与.Net联姻,就意味着榜上了粗腿,迈上了快车道.号称基于.Net Framework,那么使用.Net的基类就易如反掌.基本步骤如下:1.添加类所在程序集:2.创建类的实例:3.调用实例的函数或者属性.

  • PowerShell中调用.NET对象的静态方法、静态属性和类方法、类属性例子

    本文介绍在PowerShell中如何使用.NET对象,PowerShell内在支持大量的.NET对象. 调用类的静态方法 用中括号把类的名称括起来,然后输入两个冒号,然后再输入方法名,最后是方法的参数.语法如下: [类名]::方法名(参数列表) 如: 复制代码 代码如下: [System.Diagnostics.Process]::GetProcessById(0) 访问类的静态属性 要访问.NET类的静态属性,可以使用中括号把类的名称括起来,然后输入两个冒号,然后再输入属性名.语法如下: [类

  • Powershell小技巧之查看安装的.Net framework版本信息

    查看当前PowerShell的.Net运行版本 PS> $PSVersionTable.CLRVersion Major Minor Build Revision ----- ----- ----- -------- 4 0 30319 34014 PS> [environment]::Version Major Minor Build Revision ----- ----- ----- -------- 4 0 30319 34014 查看所有安装的.Net 版本 PS> dir '

随机推荐