You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Ubuntu上托管.NET Core应用遇终端占用问题求助

解决Ubuntu上.NET Core应用终端被占用的问题

嘿,我懂你现在的困扰——运行dotnet命令后终端直接被占死,没法执行其他操作对吧?这是因为进程默认在前台运行,下面给你几个从简单到规范的解决办法,按需选就行:

方法一:用nohup快速让进程后台运行

这是最省事的临时解决方案,直接把你的命令改成这样:

nohup dotnet /home/bourdain/website/FrutaMargemCore/bin/Release/netcoreapp2.0/FrutaMargemCore.dll &
  • 末尾的&会把进程丢到后台执行,终端瞬间解放
  • nohup的作用是:就算你关闭当前终端窗口,进程也不会跟着终止
  • 应用的日志默认会写到当前目录下的nohup.out文件里,想实时看日志可以用tail -f nohup.out

方法二:用终端复用工具(screen/tmux)

如果你之后还需要随时回到进程的终端界面查看日志或者调试,推荐用screen:

  1. 先安装screen:
sudo apt update && sudo apt install screen
  1. 创建一个专属的screen会话:
screen -S dotnet_app
  1. 在这个新会话里正常运行你的dotnet启动命令
  2. 按下Ctrl+A再按D,就能脱离这个会话回到原终端,进程会在后台持续运行
  3. 之后想重新进入这个会话查看状态,输入:
screen -r dotnet_app

记不清会话名的话,用screen -ls可以列出所有活跃的screen会话

方法三:配置成systemd服务(生产环境首选)

如果你的应用需要长期稳定运行、开机自动启动,把它做成systemd服务是最规范的做法:

  1. 创建服务配置文件:
sudo nano /etc/systemd/system/frutamargemcore.service
  1. 粘贴以下内容(注意替换成你的实际用户和路径):
[Unit]
Description=FrutaMargemCore .NET Core Application
After=network.target

[Service]
User=bourdain
WorkingDirectory=/home/bourdain/website/FrutaMargemCore/bin/Release/netcoreapp2.0
ExecStart=/usr/bin/dotnet /home/bourdain/website/FrutaMargemCore/bin/Release/netcoreapp2.0/FrutaMargemCore.dll
Restart=always
RestartSec=10
SyslogIdentifier=frutamargemcore

[Install]
WantedBy=multi-user.target
  1. 保存并退出编辑器(nano里按Ctrl+O回车,再按Ctrl+X)
  2. 重新加载systemd配置:
sudo systemctl daemon-reload
  1. 启动服务:
sudo systemctl start frutamargemcore
  1. 设置开机自启:
sudo systemctl enable frutamargemcore
  1. 查看服务状态和日志:
# 查看当前服务状态
sudo systemctl status frutamargemcore

# 实时查看应用日志
journalctl -u frutamargemcore -f

小补充:进程管理常用命令

  • 查看正在运行的dotnet进程:ps aux | grep dotnet
  • 终止指定进程:kill <进程ID>(把<进程ID>换成你查到的数字)

内容的提问来源于stack exchange,提问作者RedNet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:29:28