首页 > 解决方案 > 通过 Process.Start 执行命令失败,但是当我直接在 shell 中执行它时可以工作

问题描述

我正在尝试使用 dotnet 5 在 Debian 10 系统上执行以下命令:

bash -c 'cd /home/test/script1 && nohup pipenv run python main.py' > /dev/null 2>&1 & echo $! > script1.pid

如果命令直接在 shell 上执行,但如果通过 Process.Start() 执行,则此方法完美无缺:

var fileName = "bash";
var arguments = "-c 'cd /home/test/script1 && nohup pipenv run python main.py' > /dev/null 2>&1 & echo $! > script1.pid";

using var process = new Process
{
    EnableRaisingEvents = true,
    StartInfo =
    {
        FileName = fileName,
        Arguments = arguments,
        UseShellExecute = false,
        CreateNoWindow = true,
        RedirectStandardOutput = true,
        RedirectStandardError = true,
        ErrorDialog = false
    }
};

process.Start()

不幸的是,我没有收到错误消息。该命令根本没有执行,并以退出代码 1 终止。有谁知道这里可能出了什么问题?

标签: c#linuxbash.net-corenohup

解决方案


推荐阅读