c# - 通过 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 终止。有谁知道这里可能出了什么问题?
解决方案
推荐阅读
- uwp - 如何使用 Angular 创建 UWP 应用程序
- node.js - 我是否必须一次传递所有车把数据,或者这些数据可以来自多个不同的地方?
- docker - Docker - 在 docker compose 中的容器之间共享卷
- arrays - 对象数组中的 v-for 问题
- reactjs - 如何在 React Native 中将容器的尺寸指定为其子项的总尺寸?
- eclipse - 在 Eclipse 中重构为 Java 8 的检查设置
- firebase - 在 Cloud Functions 中结合 Firebase 数据触发器 .create .update(可能还有 .remove)
- agens-graph - 如何在 AgensGraph 上记录 ddl 命令?
- go - 由于使用的帐户已删除,请手动更改 GCloud API 存储上的凭据
- html - 我怎样才能绝对图像而不重叠到另一个图像?