我们使用的Linux一般是连接到某个强大的服务器上,然后从终端输入运行代码的指令,那么程序开始运行,但是这样有个问题,就是如果网络问题或者服务器和客户端连接不稳定,终端是很容易自动关闭的,如果终端关闭那么辛辛苦苦快跑完的程序也会中断。

于是我们利用指令:

nohup python train.py &

输入该指令后, 程序运行结果不会显示到终端,而是直接在服务器后台运行,此时会在当前目录下生成一个nohup.out文件,会记录整个程序运行的输出内容,并且这个过程不会被中断,只能等到程序正常运行结束,非常方便好用。

那么问题来了,如果我的程序有BUG,运行后一直陷入死循环,如果是显示在终端,我们直接Ctrl+C直接中断运行,或者直接关闭当前终端就行,但是这个运行过程又不显示在终端怎么办,,,,,。

就需要另外一个指令了,关闭服务器后台运行的指令,我们知道每个程序运行的时候对系统而言都是一个进程,输入下面的代码查看你的进程,如果你租用的服务器多个用户在使用,仅仅查看自己运行的进程

ps -u yours

yours表示自己在这个服务器上的用户名,当我输入后显示如下
在这里插入图片描述

非常棒的显示了我们当前还在运行的所有进程,CMD表示我们输入的命令类型,PID为进程号,这个很重要,每个进程对应一个独一无二的进程号,我刚刚是在用python同时跑了3个代码,右边的CMD可以看到有python指令,进程号分别对应:151254、160836、167314,TIME表示这个进程已经运行的时间。

假设我们刚刚运行的代码出现BUG需要结束,查看进程信息推测160836,因为这个开始时间最短,可能是刚开始这个,于是在终端运行下面的指令。

kill -9 160836

相当于杀死这个进程,然后我们上面用nohup指令在后端运行的程序就终止了。

希望对你的学习有所帮助。

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐