当前位置 博文首页 > ChenYX的博客:云上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~
cs下一篇:没有了
最新 更多<<
ChenYX的博客:云上python:【三】Linux下程序持续运行与杀死程 MATLAB 如何求取离散点的曲率最大值 ChenYX的博客:云上python:【四】服务器搭建简易TCP SERVER python 用递归实现通用爬虫解析器 AI:如何训练机器学习的模型 ChenYX的博客:在服务器上创建go-cqhttp环境 Python实现Telnet自动连接检测密码的示例 ChenYX的博客:在centos上装载NoneBot2 Python通过m3u8文件下载合并ts视频的操作 python基础之文件操作 ChenYX的博客:开启QBot ChenYX的博客:基于NFC的毕业纪念卡片 ChenYX的博客:NFC卡片使用注意 pycharm debug 断点调试心得分享 Pytest之测试命名规则的使用 “Allen Su”的博客:【Flutter 常见问题】Flutter 如何去掉 Tab Python中Jupyter notebook快捷键总结 pytest之assert断言的具体使用 基于python实现图书管理系统 “Allen Su”的博客:【综合】CSDN 博客专家申请成功 Python基础之画图神器matplotlib 人脸识别具体案例(李智恩) “Allen Su”的博客:【玩转 Mac】第 3 篇:如何用 Mac 预览图工 python实现凯撒密码 “Allen Su”的博客:【Flutter 常见问题】如何防止软键盘弹出后 python爬虫之教你如何爬取地理数据 “Allen Su”的博客:【Flutter 常见问题】Flutter 如何设置图片 GitHubDaily:卧槽!为鼓励民众居家隔离,国外这些计算机学习资 pytest实现测试用例参数化 Python 聊聊socket中的listen()参数(数字)到底代表什么