linux后台运行程序(secureCRT断掉或关闭后继续运行程序)

时间:2022-08-29 12:05:39

secureCRT断掉后想继续运行程序。也就是程序会在后台一直执行到结束。

secureCRT通过ssh联接到client端运行程序,如果关掉窗口或者断开连接时,任务会被kill。

为了程序能够后台执行到结束:

1.可以用&:

比如 python test.py 改成 python test.py &

来调用执行。

2.另外,还有一种方式:通过ctrl+z、bg等一系列的命令,将已经在前台运行的作业放到后台执行:

如果一个作业已经在前台执行,可以通过ctrl+z将该作业放到后台并挂起。然后通过jobs命令查看在后台执行的作业并找到对应的作业ID,执行bg %n(n为通过jobs查到的作业ID)唤醒该作业继续执行。

该方式也存在结果会输出到终端上的情况,同样可以用重定向的方法解决

相关命令:

jobs------------查看在后台执行的进程

fg %n----------将后台执行进程n调到前台执行,n表示jobnumber(通过jobs查看的进程编号,而非pid)

ctrl+z----------将在前台执行的进程,放到后台并挂起

bg %n---------将在后台挂起的进程,继续执行

ctrl+c----------前台进程终止

kill %n---------杀掉后台运行的进程,n表示jobnumber(通过jobs查看的进程编号,而非pid)

但上面来两种方法只能解决disconnect时的问题。

如果关闭客户端,程序一样无法执行。当用户注销或者网络中断时,终端后收到SIGHUP信号,从而关闭其所有子进程。

这就要使用nohup执行

3.nohup命令:nohup + command 

如 nohup python test.py

nohup就是不挂起的意思,nohup命令会忽略SIGHUP信号,从而终端退出时不会影响到后台作业。后台运行把终端输出存放在当前目录下的nohup.out文件中。客户端关机后重新登陆服务器可以直接查看。

4.此外还有screen命令方式也可以实现,不介绍了。

程序运行后用

ps -ef  | grep '进行id'

或者ps -aux 来查看后来多少进行正在运行,grep自己的用户名,可以看到对应程序

原理如下:

在Linux/Unix中,有这样几个概念:

进程组(process group):一个或多个进程的集合,每一个进程组有唯一一个进程组ID,即进程组长进程的ID。

会话期(session):一个或多个进程组的集合,有唯一一个会话期首进程(session leader)。会话期ID为首进程的ID。

会话期可以有一个单独的控制终端(controlling terminal)。与控制终端连接的会话期首进程叫做控制进程(controlling process)。当前与终端交互的进程称为前台进程组。其余进程组称为后台进程组。

根据POSIX.1定义:

挂断信号(SIGHUP)默认的动作是终止程序。

当终端接口检测到网络连接断开,将挂断信号发送给控制进程(会话期首进程)。

如果会话期首进程终止,则该信号发送到该会话期前台进程组。

一个进程退出导致一个孤儿进程组中产生时,如果任意一个孤儿进程组进程处于STOP状态,发送SIGHUP和SIGCONT信号到该进程组中所有进程。

因此当网络断开或终端窗口关闭后,控制进程收到SIGHUP信号退出,会导致该会话期内其他进程退出。

test.py测试脚本:

[wizad@srv26 test]$ cat test.py

import time

dict = {"a" : "apple", "b" : "banana", "g" : "grape", "o" : "orange"}

for k in dict:

  print "dict[%s]="%k,dict[k]



key="c"

if "c" not in dict:

  print "it is not in %s" %key



print "-------------"

print dict.items()

print dict.keys()

print dict.values()



print "-------------"

iter = dict.iteritems()

for it in iter:

  print "iteritems is:",it

  print type(it)



print "-------------"

key_iter = dict.iterkeys()

for ki in key_iter:

  print "key_iter is",ki

  print type(ki)





print "-------------"

val_iter = dict.itervalues()

for vi in val_iter:

  print "val_iter is",vi

  print type(vi)

print "-------------"



print "Start: %s" % time.ctime()

time.sleep(20)

print "End: %s" % time.ctime()



f=open('result','w')

f.write('this is my test for breakup, and to find whether we can finish job')



time.sleep(20)

f.write('\nafter we break the dialog')

f.close

nohup python test.py执行后。关闭客户端,重新登录后,可以查看nohup.out查看运行时屏幕输出。同时查看result看生成结果。

linux后台运行程序(secureCRT断掉或关闭后继续运行程序)的更多相关文章

  1. CentOS 不间断会话(ssh关闭后如何保证程序继续运行)(nohup和screen)

    当使用ssh与远程主机的会话被关闭时,在远程主机上运行的命令也随之被中断. 就是ssh 打开以后,bash等都是他的子程序,一旦ssh关闭,系统将所有相关进程杀掉!! 导致一旦ssh关闭,执行中的任务 ...

  2. win7程序关闭后弹出 程序兼容性助手 这个程序可能安装不正确 如果此程序没有正确安装,处理方式

    用WTL编写的程序,编译成release后,在win7上关闭后,弹出这个对话框 处理方法: 将这个xml文件命名成 xxx.exe.manifest,保存到指定目录下 <?xml version ...

  3. 让java程序在后台一直执行(例如putty关闭后后台程序继续运行)

    如果在终端中执行java -jar xxx.jar&命令,当终端关闭时,xxx.jar也会同时结束运行,但是如果执行nohup java -jar xxx.jar&命令,则程序会在后台 ...

  4. 程序启动读取和关闭时保存应用程序设置(QSettings)

    保存应用程序设置(QSettings)1. QSettings 类 QSettings 提供保存应用程序当前设置的接口,可以方便地保存程序的状态,例如窗口大小和位置,选项的选中状态等等.在 Windo ...

  5. winfom实现关闭后一直运行

    using PLog; using System; using System.Collections.Generic; using System.Diagnostics; using System.L ...

  6. Android--保持加速度传感器在屏幕关闭后运行

    由于写论文需要,需要用手机加速度采集数据,关于android加速度传感器的介绍网上一抓一大把,但大多都是大同小异,跟官网文档差不多.自己写了个取加速度传感器的APK,发现数据有点不对劲,原理屏幕一关后 ...

  7. Ubuntu上用快捷键关闭没有响应的程序

    Linux 上有很多方法可以强制关闭无响应的程序,比如你可以通过按快捷键 Ctrl + Shift + T 来调出 Terminal 或者用 Ctrl + Shift + F1 进入 Console ...

  8. Android--保持加速度传感器在屏幕关闭后运行&lpar;收集&rpar;

    由于写论文需要,需要用手机加速度采集数据,关于android加速度传感器的介绍网上一抓一大把,但大多都是大同小异,跟官网文档差不多.自己写了个取加速度传感器的APK,发现数据有点不对劲,原理屏幕一关后 ...

  9. 如何让Web程序在点击按钮后出现如执行批处理程序般的效果

    在cli程序中,输入命令得到连续的输出已经是一种进度而美观的页面交互形式,好比下图: 而web程序里也有类似的场景,比如执行一个耗时任务,除了显示出等待图标外,用户还希望把执行的状态及时显示出来.如下 ...

随机推荐

  1. 转&colon;如何在32位程序中突破地址空间4G的限制

    //如何在32位程序中突破地址空间4G的限制 //首先要获得内存中锁定页的权限 #define _WIN32_WINNT 0x0501 //xp系统 #include <windows.h&gt ...

  2. 设置数据库为SINGLE&lowbar;USER模式&comma;减少锁定时间

    --SQL Server开启READ_COMMITTED_SNAPSHOT ----设置数据库为SINGLE_USER模式,减少锁定时间 ALTER DATABASE ENDV_SOA SET SIN ...

  3. 转载:Javascript作用域原理

    首先看一个例子: var name = 'laruence'; function echo() { alert(name); var name = 'eve'; alert(name); alert( ...

  4. left join&comma; right join &comma; inner join&comma; join&comma; union的意义

    数据库在连接两张或以上的表来返回数据时,都会生成一张中间的临时表,然后再将临时表返回给用户left join,right join,inner join, join 与 on 配合用 select c ...

  5. Android项目svn代码管理问题&lbrack;转&rsqb;

    用svn控制版本,svn本身是不会识别哪些该传,哪些不该传,这就导致有些关于路径的东西(比如拓展jar的路径)也被上传了,而当别人下载后,那个路径对于这个人可能完全不存在,项目编译就会出问题.用ecl ...

  6. log4j&period;propertise配置文件

    # level : 是日志记录的优先级,分为OFF.FATAL.ERROR.WARN.INFO.DEBUG.ALL或者您定义的级别.Log4j建议只使用四个级别,优先级从高到低分别是ERROR.WAR ...

  7. java中synchronized的使用

    synchronized是Java中的关键字,是一种同步锁. synchronized分对象锁和类的锁两种. (一)通常synchronized 方法和synchronized(this){}都是属于 ...

  8. WPF中textBlock 变色功能

    <Window.Resources> <Storyboard x:Key="OnLoaded" RepeatBehavior="Forever&quot ...

  9. 解决Linux SSH登录慢

    出现ssh登录慢一般有两个原因:DNS反向解析的问题和ssh的gssapi认证 :ssh的gssapi认证问题 GSSAPI ( Generic Security Services Applicati ...

  10. zk集群的快速搭建

    1.上传一个zk.tar2.解压3.创建目录data4.修改zoo_sample.cfg ---> zoo.cfg5.修改文件的dataDir改为/data目录,echo 1 >/data ...