我有一个用 C# 编写的 TCP 服务器,我将在我的服务器上运行它。我已经测试了在服务器和客户端上运行的应用程序,一切运行良好!我在 Linux 服务器上使用 mono 来运行 Server.exe 应用程序。我一直在尝试使用 Upstart 和 Shell 脚本让 Server.exe 应用程序在启动时在后台运行。这些都没有奏效。
以下是我尝试过的 Shell 脚本:
/bin/sh #!/bin/sh 复制代码/usr/bin/mono Server.exe“$@”&
然后我编辑了 /etc 目录中的 rc.local 文件并添加了以下行:
/usr/local/bin/ClipCloud/start.sh &
我是不是漏掉了什么,我似乎无法让它工作。它似乎立即启动然后终止进程。当我从终端启动 Server.exe 应用程序时,只需输入
mono /usr/local/bin/ClipCloud/Server.exe
它运行良好,并将继续运行,直到我关闭终端窗口或输入“exit”
我很乐意分享任何我能提供的帮助。
答案1
我也遇到了这个问题。现在我能够在启动时借助以下工具运行我的 mono c# 应用程序:http://www.stuffaboutcode.com/2012/06/raspberry-pi-run-program-at-start-up.html
在文件的“start”部分(如上面的链接中指定)执行以下操作:1. 将目录更改为 c# 应用程序的文件夹:cd /home/pi/myApp 2. 在下一行中,添加“mono”的完整路径和 c# 应用程序的完整路径。例如:/usr/bin/mono /home/pi/myApp/myApp.exe
在“停止”部分,我不确定如何停止确切的“myApp.exe”;但我通过给出命令停止了“mono”:
killall mono
(实际上,myApp.exe......但如果您正在运行多个 c# 应用程序,请测试它。)
笔记
- 确保您的 C# 应用程序不要求用户输入...否则它将挂起
- 不要忘记运行 sudo update-rc.d NameOfYourScript defaults :)
- 在重新启动机器之前,通过运行“start”和“stop”命令(如上面给出的链接所指定)来测试脚本。
- 脚本中的所有注释行都是必须的。否则您将无法将其添加到启动列表中。
一切顺利! :)