云上python:【三】Linux下程序持续运行与杀死程序
目录
2. ps(Process Status) 列出系统中当前正在运行的进程
一、 设定程序持续运行
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~
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)