C# 从.Net内核独立于主进程linux c运行bash#
我有一个服务,它需要独立于.Core进程执行更新的shell脚本。我尝试过/bin/bash、/bin/nohup和/bin/setsid。但每次脚本停止systemd服务时,脚本似乎也会停止。我怎样才能独立C# 从.Net内核独立于主进程linux c运行bash#,c#,linux,bash,.net-core,C#,Linux,Bash,.net Core,我有一个服务,它需要独立于.Core进程执行更新的shell脚本。我尝试过/bin/bash、/bin/nohup和/bin/setsid。但每次脚本停止systemd服务时,脚本似乎也会停止。我怎样才能独立 private static Process StartLinuxUpdateScript(string pathToUpdateScript, string pathToUpdateZip) { var process = new Process()
private static Process StartLinuxUpdateScript(string pathToUpdateScript, string pathToUpdateZip)
{
var process = new Process()
{
StartInfo = new ProcessStartInfo
{
FileName = "/bin/setsid",
UseShellExecute = true,
Arguments = $" bash {pathToUpdateScript} {pathToUpdateZip}"
}
};
return process;
}
也许这会有帮助:
public void RunProcess(string fileName, string arg)
{
var process = new Process
{
StartInfo =
{
RedirectStandardOutput = true,
RedirectStandardError = true,
FileName = fileName,
Arguments = arg ,
UseShellExecute = false,
CreateNoWindow = true
},
EnableRaisingEvents = true
};
process.Start();
string processOutput;
while ((processOutput = process.StandardError.ReadLine()) != null)
{
Console.WriteLine(processOutput);
}
process.Dispose();
}
也许这会有帮助:
public void RunProcess(string fileName, string arg)
{
var process = new Process
{
StartInfo =
{
RedirectStandardOutput = true,
RedirectStandardError = true,
FileName = fileName,
Arguments = arg ,
UseShellExecute = false,
CreateNoWindow = true
},
EnableRaisingEvents = true
};
process.Start();
string processOutput;
while ((processOutput = process.StandardError.ReadLine()) != null)
{
Console.WriteLine(processOutput);
}
process.Dispose();
}
谢谢…但我不想等待这个过程。启动的进程将停止我的systemd服务,这意味着我无法重定向输出或执行读取行。我刚刚通过覆盖文件并重新启动systemd服务解决了更新过程,因为我可以在服务运行期间覆盖文件。但是仍然想知道是否可以独立于主进程执行shell脚本您可以创建新线程并在其上运行shell。我希望你能看到你程序中的任何错误。如果您想让shell运行到其他线程,请使用fire并忘记扩展函数。谢谢……但我不想等待进程。启动的进程将停止我的systemd服务,这意味着我无法重定向输出或执行读取行。我刚刚通过覆盖文件并重新启动systemd服务解决了更新过程,因为我可以在服务运行期间覆盖文件。但是仍然想知道是否可以独立于主进程执行shell脚本您可以创建新线程并在其上运行shell。我希望你能看到你程序中的任何错误。如果希望shell运行到其他线程,请使用fire和forget扩展函数