Linux下如何后台执行Python程序

问题描述:

链接服务器后,想在服务器上执行一个耗时特别长的程序;
问题是一旦会话结束,程序也就结束了,之前完成工作进度前功尽弃!!!

解决方案: 使用 nohup 命令挂起服务。 启动命令为:

nohup python3 -u Job.py > Job_out.out 2>&1 &

典型范例:

例如:我要后台执行 mytest.py 脚本程序。

1、启动命令:

[root@localhost test]# nohup python3 -u mytest.py > mytest_out.out 2>&1 &
[4] 22246   # 表示进程号

阐释说明:

  1. 末尾的“&”:表示后台运行程序
  2. nohup” :保证程序不被挂起
  3. python3”:是执行python代码的命令(此处指定Python版本为Python3)
  4. -u”:是为了禁止缓存,让结果可以直接进入日志文件 mytest_out.out(如果不加-u,则会导致日志文件不会实时刷新代码中的print函数的信息)
  5. Job.py”:是欲执行的python的源代码文件,此处为mytest.py
  6. Job_out.out”:是输出的日志文件
  7. >”:是指将打印信息指定到日志文件
  8. 2>&1”:将标准错误输出转变化标准输出,可以将错误信息也输出到日志文件中(0-> stdin, 1->stdout, 2->stderr)

2、查看脚本是否已在后台执行:

(1) 使用 jobs 命令,具体如下:

[root@localhost test]# jobs
[4]+  Running                 nohup python3 -u mytest.py > mytest_out.out 2>&1 &

(2) 使用 ps -ef|grep python 或者 ps -ef|grep Job 命令,查看进程

# ps -ef|grep python

或者

# ps -ef|grep Job

(3) 使用 ps aux 命令,查看程序的进程号

[root@localhost test]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
…… 
root     22246  0.0  0.3 125572  6304 pts/0    S    17:29   0:00 python3 -u mytest.py
……

3、关闭进程: 使用 kill -9 进程号 命令,关闭指定进程号的程序。

[root@localhost test]# kill -9 22246

备注: 使用 2(2) 中查看进程的命令,检查或确认进程是否真正被关闭。

参考链接:Linux下后台执行Python程序

你可能感兴趣的:(Linux系统)