【Linux.Python】Python进程后台启动
嗯,比较忧伤。
前几天写了个tornado,启动了,很开心,后来每天要用时都发现it是kill掉的。好吧,是我太蠢啦。百度了下资料
python的启动方式:
1 python yourfile.py 正常启动,在当前窗口打印日志,ctrl+c退出即停止进程
2 python yourfile.py & ctrl+c退出后不停止进程,即不占用当前页面形式的后台启动,但是关闭shell链接,进程停止
3 nohup python yourfile.py & 后台启动(重启机器或手动kill前都处于启动状态),控制台输出导向nohup.out文件
4 将启动脚本写入/etc/rc.d/rc.local,即为开机自启动。
下面科普一下nohup用法,嗯,我百度的。
用途:LINUX命令用法,不挂断地运行命令。
语法:nohup Command [ Arg … ] [ & ]
描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。
如果不将 nohup 命令的输出重定向,输出将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。
退出状态:该命令返回下列出口值:
126 可以查找但不能调用 Command 参数指定的命令。
127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。
否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。
nohup命令及其输出文件
nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)。
该命令的一般形式为:nohup command & 使用nohup命令提交作业
如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:
nohup command > myout.file 2>&1 &
在上面的例子中,输出被重定向到myout.file文件中。
使用 jobs 查看任务。
使用 fg %n 关闭。
nohup python3 main.py > myout.file 2>&1 &
ps -aux |grep hadoop(登录用户名)
可通过进程id 结束该进程kill -9 进程id
linux nohup, jobs, fg, tail指令 指令前后台切换
#import time
for i in range(0, 1000):
print i
time.sleep(3)
nohup 指令 >log.log 2>&1 &:
linux下执行 nohup python -u test.py >log.log 2>&1 &
jobs -l 查看后台执行的命令:
[1] - 18071 running nohup python -u test.py >log.log 2>&1 &
实时将log.log 文件输出:
tail -f log.log
将后台命令转为前台:
fg %n 此处n就是jobs查看的编号也就是[1] fg %1
转换为前台以后可以使用ctrl + c 结束该指令:
ctrl + c
jobs命令只是对当前终端生效退出当前终端后可以使用如下方式(ps)查看进程:
ps -aux |grep mlgrp(登录用户名)
可通过进程id 结束该进程
nohup jupyter notebook --no-browser --ip=139.210.167.206 --port=52686 >log.jupyter_log 2>&1 &
nohup python -u manage.py runserver 0.0.0.0:8000 >log.log 2>&1 &
分类: Linux