云上python:【三】Linux下程序持续运行与杀死程序

目录

一、 设定程序持续运行

1. nohup  :不挂断地运行命令

2.  &  :持续在后台运行

二、 关闭后台运行的程序

1.  jobs  :查看运行的后台进程

2.  ps(Process Status)  列出系统中当前正在运行的进程

①.  ps -ef  :用标准的格式显示进程

②.  ps aux  :用BSD的格式来显示

②.  grep  :复合查找

3.  kill  :杀死该进程


一、 设定程序持续运行

1. nohup  :不挂断地运行命令

语法:nohup Command [ Arg … ] [ & ]

      无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。

      如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。

      如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。

退出状态:该命令返回下列出口值:   

            126 可以查找但不能调用 Command 参数指定的命令。   

            127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。   

            否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。

2.  &  :持续在后台运行

& 一般和nohup两个一起用,表示在后台一直运行:

nohup command &

举例说明:

nohup python login.py >> mylog.log 2>&1 &
  • &:   即使terminal(终端)关闭,或者电脑死机程序依然运行; 
  • 2>&1:   这个意思是把标准错误(2)重定向到标准输出中(1),而标准输出又导入指定文件里面,所以结果是标准错误和标准输出都导入到指定文件里面了。
0表示stdin标准输入
1表示stdout标准输出
2表示stderr标准错误
> file表示将标准输出输出到file中,也就相当于 1>file
2> error表示将错误输出到error文件中
2>&1也就表示将错误重定向到标准输出上
2>&1 >file错误输出到终端,标准输出重定向到文件file,等于 > file 2>&1(标准输出重定向到文件,错误重定向到标准输出)。
  • >> mylog.log:  表示指定输出导入该文件

二、 关闭后台运行的程序

如果需要关闭后台挂起的程序,首先要查看该线程的编号,下面介绍两种查询方式:

1.  jobs  :查看运行的后台进程

当我们用nohup和&将程序挂在后台后,如果需要需要在当前终端查询后台程序,可以输入jobs进行查看:

注意:jobs命令只看当前终端生效的,关闭终端后,在另一个终端jobs已经无法看到后台跑得程序了。我们重新打开putty登录尝试:

可以发现,jobs已经无法查询到任何后台进程,因为我们刚刚重开了一个terminal,而jobs只对当前terminal有效。 

如果需要在新的terminal里查看进程号,需要利用ps(进程查看命令)进行查询:

2.  ps(Process Status)  列出系统中当前正在运行的进程

①.  ps -ef  :用标准的格式显示进程

UID用户ID、但输出的是用户名 
PID进程的ID 
PPID父进程ID 
C进程占用CPU的百分比 
STIME进程启动到现在的时间 
TTY

                                             该进程在哪个终端上运行。 

                                             若与终端无关,则显示?

                                             若为pts/0等,则表示由网络连接主机进程。

CMD 命令的名称和参数

②.  ps aux  :用BSD的格式来显示

USER用户名 
CPU进程占用的CPU百分比 
MEM占用内存的百分比
VSZ 该进程占用的固定內存量(KB)(驻留中页的数量) 
RSS进程启动到现在的时间 
STAT进程的状态
START该进程被触发启动时间
TIME该进程实际使用CPU运行的时间

②.  grep  :复合查找

既然可以用ps列出当前进程了,那我们使用grep查找,指定查找python运行程序:

ps -ef |grep python

 同理,也可以使用aux去指定查找:

ps aux |grep python

 

如果我们只想提取进程号,可以用awk对其进行指定:

注:用ps -def | grep查找进程很方便,最后一行总是会grep自己

  用grep -v参数可以将grep命令排除掉

3.  kill  :杀死该进程

如果该进程可以用jobs查找,可以直接指定关闭:

kill %i (i为jobs里的编号)

如果已经更换了terminal,就是用ps查询进程号后再杀死该进程:

kill -9  进程号

可以发现,后台的进程已经被杀死了。


本文参考资料:

https://www.cnblogs.com/baby123/p/6477429.html

https://blog.csdn.net/weixin_34227447/article/details/91899900

https://www.cnblogs.com/mydriverc/p/8303242.html


如有疑问或错误,欢迎和我私信交流指正。
W.By ChenYX,未经授权,请勿转载!

over~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.Idleman

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值