Linux如何防止程序中断--screen

Linux如何防止程序中断--screen,第1张

在Linux或者服务器使用中,我们通常会有以下困扰:

1) 在跑大型数据的时候,一旦关闭会话窗口、软件、断网、断电等情况下程序出现异常中断

2) 现在暂停编写或者跑程序,一段时间后继续运行,希望继续运行时原先导入的变量还在

3) 目前的Shell软件限制开的窗口为5个,若是同时前台 *** 作的话举亩只能进行五个终端,同一终端使用多个会话是不行正慧森的

这些情况下可以使用screen命令解决 【离线 *** 作,保留工作环境,同一终端多个会话】 :

1. 构建一个新的会话,并命名为sessionName

screen -S sessionName   

可以发现构建之后,与创建会话之前没有任何差别,但是接下来我们所有的输入命令都在这个sessiion中

2. screen -ls

在任一个打开的窗口可以查看我们构建的session,其中会发现会话有以下形式组成

sessionID.sessionName    [状态(attached【在线】;detached【离线】)]

3. screen -r sessionName  除了使用会话名字还可以使用会话ID

重新连接会话

4. screen -d sessionName 或者在已经入的session中,按住Ctrl 不放,分别按 a d

离线连接的会话,这时候程序会放在后台运行,无需担心断电断网关机等各种突发状况

5. 假设在当前的sessionName中,我们可以使用 exit 退出并杀死当前session;或者 screen -S sessionName -X quit     

【一定要记得每个session跑完之后,需要Kill它】

6. 有时你发现采用 screen -r sessionName 发现显示没有这个会话,但是screen -ls的时候会发现这个会话明确是存在的,那么可以采取的策略是:

先 screen -d sessionName 这个会话,使其离线,然后再碧饥使用 screen -r sessionName将其重新连线

这个是属于服务器方法胡岩游,可以了解一下supervisor,将需要自启动的程序加入枣拆到supervisor的启动配置,只要supervisor不停止,那么监控进程就会一直运行,并且如果出现关闭情况也会被立裤销即重启。

信号概念

信号是进程在运行过程中,由自身产生或由进程外部发过来的消息(事件)。信号是桐亏穗硬件中断的软件模拟(软中断)。每个局卜信号用一个整型常量宏表示,以SIG开头,比如SIGCHLD、SIGINT等,它们在系统头文件中定义,也可以通过在shell下键入kill –l查看信号列表,或者键入man 7 signal查看更详细的说明。

信号的生成来自内核,让内核生成信号的请求来自3个地方:

l 用户:用户能够通过输入CTRL+c、Ctrl+\,或者是终端驱动程序分配给信号控制字符的其他任何键来请求内核产生信号;

l 内核:当进程执行出错时,内核会给进程发送一个信号,例如非法段存取(内存访问违规)、浮点数溢出等;

l 进程:一个进程可以通过系统调用kill给另一个进程发送信号,一个进程可以通过信号和另外一空裤个进程进行通信。信号(signal)是一种进程间通信机制,


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12490208.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存