linux 下如何保存退出服务

qq_30412191 2021-01-01 04:38:00
,这个服务已经启动了,我该如何退出,这个界面还让它运转,我一退出 ,这个服务就停掉了 ,。。。。。。。。。。
...全文
1868 点赞 收藏 14
写回复
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
筱玮酱 01-03
CTRL+C就能够退出了nohoup是后台运行
回复
X-i-n 01-02
假设你现在手里是一个完全的前后端分离: 前端:/var/www/frontend 后端:/var/www/donet/donet.dll 后端控制器:只有两个,apiController,api2Controller 需要发布到80端口,域名是www.abc.com 可以这么操作: 1. donet项目使用默认端口发布,也就是http://localhost:5000,完全不需要把5000端口对外; 2. nginx反向代理donet项目,并在同一个server小节新增一个路径用于前端发布; 3. 不管前端请求资源还是后端跳转,都使用以 /开头的绝对路径,比如 /images/aaa.png,比如 /api/Account,而不要请求带HOST+端口的绝对路径(比如www.abc.com:5000/api/Account) nginx server小节的配置

server{
  server_name www.abc.com;
  listen 80;

  location / {
    root /var/www/frontend;
    index index.html index.htm;
  }

  location /api/ {
    proxy_pass http://localhost:5000/api/;
  }

  location /api2/ {
    proxy_pass http://localhost:5000/api2/;
  }
}
回复
X-i-n 01-02
supervisor跑任务最终在后台也是运行dotnet 命令,和手动运行是一样的。
回复
我使用Supervisor 算配置成功了吗?,可是我直接运行 是没有跨域限制的
回复
引用 7 楼 X-i-n 的回复:
[quote=引用 6 楼 楠小南 的回复:][quote=引用 5 楼 X-i-n 的回复:][quote=引用 4 楼 楠小南 的回复:]用docker 部署不就简单得多吗, 一条命令 dockers run -d 完事了
1. 安装supervisor;2. 添加任务的配置文件;3. update命令更新配置,一共三步,没看出来复杂在哪儿。从流程上看,docker倒是繁琐不少,而且docker门槛要比supervisor更高。 解决一个问题可能有很多方法,如果愿意深入讨论,可以坐下来一起聊聊技术之间的对比,但是囿于自己的认知,直接臆断自己的方法一定是最好的,别人的方法一定比自己的方法差,这就不太合适。 [/quote] 我什么都没说,都是你自己YY罢 的,我只是给一个选择楼主罢了,他采用也好 不用也罢,用不着你来教训我[/quote] 那可能是我没看明白你说的“docker简单得多”是什么意思。以为你是想进行讨论。[/quote] 大佬,您好,我用Supervisor 已经部署和启动成功,是可以跑,但是会出现跨域请求限制,但是我直接运行dotnet 则不会有跨域请求问题,如果挂载在Supervisor 则会出现跨域限制,请问一下这该如何配置。
回复
大佬,您好,我用Supervisor 已经部署和启动成功,是可以跑,但是会出现跨域请求限制,但是我直接运行dotnet 则不会有跨域请求问题,如果挂载在Supervisor 则会出现跨域限制,请问一下这该如何配置。
回复
韩老骥 01-01
引用 2 楼 X-i-n 的回复:
dotnet运行项目的时候,会独占会话。不管是直接关掉控制台,还是ctrl + c,都会让服务停止。正确的做法是用值守模式运行任务,比如借助supervisor。
1. 安装:
yum install supervisor (红帽系)
apt install supervisor (debian、ubuntu)

2. 在/etc/supervisor/conf.d里为你的dotnet项目添加一个配置文件
(如果是ubuntu,配置文件的文件名需要以.conf结尾,如果是centos,需要以.ini作为后缀,取决于/etc/supervisor/supervisor.conf的配置,具体可以用 grep -E "^files" /etc/supervisor/supervisord.conf 命令查看,或者直接打开这个文件进行查看,显示 files = /etc/supervisor/conf.d/*.conf ,说明这个配置文件还包含了conf.d目录下的所有*.conf)
配置文件示例

# cat /etc/supervisor/conf.d/dotnet.conf

[program:dotnet]
command=/usr/local/dotnet/dotnet /var/www/ddns/DDNS.dll
directory=/var/www/ddns
autostart=true
autorestart=true
stderr_logfile=/var/www/daemon-ddns.err #服务报错信息的输出日志
stdout_logfile=/var/www/daemon-ddns.log #控制台输出的保存位置
log_stderr=true
log_stdout=true
user=root


3.0 用supervisorctl update 这条命令更新supervisor配置(比如有配置文件的新增、修改、删除)
3.1 supervisorctl status 查看所有supervisor托管的实例的运行状态
3.2 supervisorctl start|stop|restart xxxx 开启|停止|重启 xxxx实例。

当然,你也可以用其它方法来实现,比如注册成服务,或者借助nohup、screen命令,最终目的都是把任务维护在后台,而不需要依赖于当前会话。


红帽用systemd就行了,其它的用init.d
回复
X-i-n 01-01
引用 6 楼 楠小南 的回复:
[quote=引用 5 楼 X-i-n 的回复:][quote=引用 4 楼 楠小南 的回复:]用docker 部署不就简单得多吗, 一条命令 dockers run -d 完事了
1. 安装supervisor;2. 添加任务的配置文件;3. update命令更新配置,一共三步,没看出来复杂在哪儿。从流程上看,docker倒是繁琐不少,而且docker门槛要比supervisor更高。 解决一个问题可能有很多方法,如果愿意深入讨论,可以坐下来一起聊聊技术之间的对比,但是囿于自己的认知,直接臆断自己的方法一定是最好的,别人的方法一定比自己的方法差,这就不太合适。 [/quote] 我什么都没说,都是你自己YY罢 的,我只是给一个选择楼主罢了,他采用也好 不用也罢,用不着你来教训我[/quote] 那可能是我没看明白你说的“docker简单得多”是什么意思。以为你是想进行讨论。
回复
楠小南 01-01
引用 5 楼 X-i-n 的回复:
[quote=引用 4 楼 楠小南 的回复:]用docker 部署不就简单得多吗, 一条命令 dockers run -d 完事了

1. 安装supervisor;2. 添加任务的配置文件;3. update命令更新配置,一共三步,没看出来复杂在哪儿。从流程上看,docker倒是繁琐不少,而且docker门槛要比supervisor更高。
解决一个问题可能有很多方法,如果愿意深入讨论,可以坐下来一起聊聊技术之间的对比,但是囿于自己的认知,直接臆断自己的方法一定是最好的,别人的方法一定比自己的方法差,这就不太合适。
[/quote]
我什么都没说,都是你自己YY罢 的,我只是给一个选择楼主罢了,他采用也好 不用也罢,用不着你来教训我
回复
X-i-n 01-01
引用 4 楼 楠小南 的回复:
用docker 部署不就简单得多吗, 一条命令 dockers run -d 完事了
1. 安装supervisor;2. 添加任务的配置文件;3. update命令更新配置,一共三步,没看出来复杂在哪儿。从流程上看,docker倒是繁琐不少,而且docker门槛要比supervisor更高。 解决一个问题可能有很多方法,如果愿意深入讨论,可以坐下来一起聊聊技术之间的对比,但是囿于自己的认知,直接臆断自己的方法一定是最好的,别人的方法一定比自己的方法差,这就不太合适。
回复
楠小南 01-01
用docker 部署不就简单得多吗, 一条命令 dockers run -d 完事了
回复
X-i-n 01-01
更多示例可以参考这篇文章 Supervisor以值守模式(daemon)运行任务三例(java, redis, dotnet) https://www.chenxin.info/2020/06/08/supervisor-sample-java-redis-dotnet/
回复
X-i-n 01-01
dotnet运行项目的时候,会独占会话。不管是直接关掉控制台,还是ctrl + c,都会让服务停止。正确的做法是用值守模式运行任务,比如借助supervisor。 1. 安装: yum install supervisor (红帽系) apt install supervisor (debian、ubuntu) 2. 在/etc/supervisor/conf.d里为你的dotnet项目添加一个配置文件 (如果是ubuntu,配置文件的文件名需要以.conf结尾,如果是centos,需要以.ini作为后缀,取决于/etc/supervisor/supervisor.conf的配置,具体可以用 grep -E "^files" /etc/supervisor/supervisord.conf 命令查看,或者直接打开这个文件进行查看,显示 files = /etc/supervisor/conf.d/*.conf ,说明这个配置文件还包含了conf.d目录下的所有*.conf) 配置文件示例

# cat /etc/supervisor/conf.d/dotnet.conf

[program:dotnet]
command=/usr/local/dotnet/dotnet /var/www/ddns/DDNS.dll
directory=/var/www/ddns
autostart=true
autorestart=true
stderr_logfile=/var/www/daemon-ddns.err    #服务报错信息的输出日志
stdout_logfile=/var/www/daemon-ddns.log  #控制台输出的保存位置
log_stderr=true
log_stdout=true
user=root
3.0 用supervisorctl update 这条命令更新supervisor配置(比如有配置文件的新增、修改、删除) 3.1 supervisorctl status 查看所有supervisor托管的实例的运行状态 3.2 supervisorctl start|stop|restart xxxx 开启|停止|重启 xxxx实例。 当然,你也可以用其它方法来实现,比如注册成服务,或者借助nohup、screen命令,最终目的都是把任务维护在后台,而不需要依赖于当前会话。
回复
韩老骥 01-01
CTRL+C或者ps查一下进程id,然后kill
回复
相关推荐
发帖
.NET技术社区
创建于2007-09-28

5.8w+

社区成员

.NET技术交流专区
申请成为版主
帖子事件
创建了帖子
2021-01-01 04:38
社区公告
暂无公告