• 服务器程序运行的相关操作


    前言

    近期在学校服务器运行程序,但是每当到了晚上11点就会断网,无法登录终端,服务器上运行的程序也随之结束,有没有什么方法,能够在关闭终端后,服务器上的程序仍然运行呢?当再次打开终端后,又如何查看程序的运行进度呢?当想手动结束该程序时,又该如何操作呢?

    nohup和&命令

    通过查阅网上的资料,发现了一种行之有效的方法。那就是转变程序运行的命令,借助nohup和&命令的联用来解决这个问题。

    首先我们来看看nohup和&命令各自的作用

    nohup

    • 英文全称: no hang up
    • 不挂断的运行,可以使命令永久的执行下去,和用户终端没有关系,例如我们断开SSH连接都不会影响他的运行。.
    • 关闭标准输入,终端不再能够接收任何输入(标准输入),重定向标准输出和标准错误到当前目录下的nohup.out 文件。
    • 没有后台运行的意思,但有一些后台执行的形式在里边

    &

    • 在后台运行,但当用户会话退出(挂起)的时候,命令自动也跟着退出

    基于nohup和&各自的缺点,如果单独进行使用,并不方便,因此我们将它们结合在一起使用,这样便可以很好的解决我们的上述问题。

     

    命令联用: nohup Command &

    • 命令永久的在后台执行,直到结束,终端可以接受输入(标准输入)

    实操

    下面以一个例子来说明这两个命令的联合使用方法
    要在服务器上永久运行test.py程序,直到结束,我们的方法是,使用如下命令

    nohup python -u test.py > log.file 2>&1 &

    注释:

    • nohup (no hang up),不挂起。

    • python test.py 是原本运行程序的命令。

    • -u (unbuffered,不缓存)这个参数加在python的后面,可以实时查看输出,而不用等把一段日志文件写入log.file后才能查看。
      >log.file 注意有>号,是将command的输出重定向到log.file文件,即输出内容不打印到屏幕上,而是输出到log.file文件中。(文件名可自定义,如output.log等)

    • 2>&1 是将标准出错重定向到标准输出,这里的标准输出已经重定向到了log.file文件,即将标准出错也输出到log.file文件中。2与>结合代表错误重定向,而1则代表错误重定向到一个文件1,而不代表标准输出;换成2>&1,&与1结合就代表标准输出了,就变成错误重定向到标准输出。

    • 最后一个&, 是让该命令在后台执行。

    当你成功地提交进程以后,就会显示出一个进程号,可以用它来监控该进程,或杀死它。

    监控进程

    ps -ef | grep 进程号

    杀死进程

    kill -9 进程号1 进程号2 进程号3 ...

    当你想实时查看程序的运行进度时,可以执行命令

    tail -f log.file

    下面给出几点补充

    • ctrl+c
      前台进程的终止

    • ctrl + z
      可以将一个正在前台执行的命令放到后台,并且处于暂停状态。
      在这里插入图片描述

    • jobs
      查看当前有多少在后台运行的命令
      jobs -l 选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated。但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识。
      在这里插入图片描述

    • fg 命令编号
      将后台中的命令调至前台继续运行。如果后台中有多个命令,可以用fg %jobnumber(是命令编号,不是进程号)将选中的命令调出。

    • bg 命令编号
      将一个在后台暂停的命令,变成在后台继续执行。如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出。

    • ps
      显示当前系统的进程状态
      ps x选项可显示所有程序,不以终端机来区分

    • kill
      法子1:通过jobs命令查看job号(假设为num),然后执行kill %num
      法子2:通过ps命令查看job的进程号(PID,假设为pid),然后执行kill pid

    为避免账户非正常退出或者结束的时候程序终止,在使用nohup命令后台运行命令之后,建议使用exit正常退出当前账户,这样才能保证命令一直在后台运行。

    附录

  • 相关阅读:
    索引初识
    python数据类型之 元祖、列表字典
    linux常用命令之网络命令
    linux命令之查找find &grep
    python数据类型之可hash,不可hash
    python面向对象之封装,多态与继承
    python之新式类与经典类
    python之random随机函数
    CSS3选择器(一)
    关于居中
  • 原文地址:https://www.cnblogs.com/Red-Heart-Match/p/15939912.html
Copyright © 2020-2023  润新知