当前位置: 首页>数据库>正文

xshell关闭redis xshell关闭服务器

背景:将一个应用服务放在服务器上,提供接口给其他人调用,每次通过win10上的xshell通过ssh访问,启动后如果关闭ssh, 那么服务就停止了

一,简单bg

1. 在ssh shell中运行脚本,比如我运行一个批量下载脚本:

python mainserver.py

2. 按下ctrl-z中断脚本运行,此时系统提示:

^Z

[1]+  Stopped                python3 mainServer.py

意思是编号为1的任务挂起了,[1]就是任务的编号,里面的数字也可能是2,3,4..

3. 输入命令:bg 1

这个命令将1号任务切换到后台执行

[1]+ python3 mainServer.py &

4. 输入命令:disown -h %1

这个命令的意思是将1号任务从当前shell的任务列表中移除,并且忽略HUP信号,这样,即使当前Shell结束了,这个任务也不会被结束,而是继续留在后台执行。

此时shell中情况如下,服务切换到后台执行,服务正常运行。

但是如果关闭该shell后,在浏览器访问该服务时候报错

而且当我重新启动命令启动服务器时候显示端口占用

说明以上方法仍没有解决我们的问题。

二,nohup

当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程。因此,我们的解决办法就有两种途径:要么让进程忽略 HUP 信号,要么让进程运行在新的会话里从而成为不属于此终端的子进程。

在执行命令时在命令前面加上nohup,一般我们可在结尾加上“&”来将命令同时放入后台运行,也可用”>filename2>&1″来更改缺省的重定向文件名。

此后,关闭shell,断开了ssh,服务依旧在正常运行。

此种方式的缺点是,应用程序没有交互界面了,程序的输出将会输出的一个xxx.out文件中,而且以后无法在界面控制程序的结束。

如果不知道你的服务是否在运行,netstat -nultp 查看端口号,必须通过kill的方式关闭。

所以这种方式显得很简单粗鲁,很少使用。

到这已经可以简单解决我的问题了。

三,更强大的screen

如果要求第二天来的时候. 一开ssh, 还能查看到昨天运行的程序的状态,

然后继续工作,这时nohup是不行了, 需要使用screen来达到这个目的.

虽然nohup很容易使用,但还是比较“简陋”的,对于简单的命令能够应付过来,对于复杂的需要人机交互的任务就麻烦了

其实我们可以使用一个更为强大的实用程序screen。流行的Linux发行版通常会自带screen实用程序,

如果没有的话,可以从GNU screen的官方网站下载http://www.gnu.org/software/screen/

首先可以先查看是否安装screen,通过命令

screen -ls
若出现
The program ‘screen’ is currently not installed. To run ‘screen’ please ask your administrator to install the package ‘screen’

说明尚未安装,安装提示,通过命令:sudo apt-get install screen

安装失败。centOS估计可以,这里是Ubuntu16,不能直接安装,接下来尝试手动安装。

手动安装

点击下载后将文件解压tar -xf screen-4.6.2.tar.gz

进入文件夹 cd screen-4.6.2/运行配置程序,生成Makefile文件

~/appexe/screen-4.6.2$ ./configure

运行成功会得到如下提示:

在这里make编译报错,没找到解决办法。

执行screen , 按任意键进入子界面;


https://www.xamrdz.com/database/6c31921935.html

相关文章: