有时,我们需要远程连接Linux服务器长期执行某一任务,如果我们使用常规操作执行任务时,会发现当我们断开远程连接再重新连接Linux服务器时,我们需要执行的任务也被终止了。
那么我们该如何达到目的呢,这时我们就需要使用nohup指令来让任务在Linux后台执行,这样不会因为远程连接的断开而终止任务。
nohup +命令 + &
#例如: nohup python train.py &
在执行完nohup指令后,我们可以使用jobs查看当前在后台运行的程序
jobs [选项]
jobs 常用选项 | 含义 |
---|---|
-l | 列出进程的 PID 号 |
-p | 只列出进程的PID号 |
但当我们断开与Linux服务器的远程连接在重连时,仍然无法通过jobs指令查看到当前我们需要执行的任务。
分析原因如下:jobs 是查看当前终端的后台作业。
具体原因分析:jobs是查看当前后台任务(进程),是获取本次bash进程下子进程的后台任务。当本次终端退出后,后台任务变成孤儿进程,孤儿进程有系统父进程接管。当再次连接终端时,原任务与当前终端,不存在任何关系了,故看不到进程。但是原任务会在系统中一致运行,直到完成或被停止。
那么我们如何才能看到原任务呢。可以使用top指令来查看Linux系统资源的占用情况,这样就可以看到在Linux后台执行的原任务了。
top #查看Linux进程的资源占用情况