后台执行
nohup python -u test.py > test.log 2>&1 &
- 其中 nohop 表示该进程不挂起
- python test.py 表示执行test.py
- -u 表示程序不启用缓存,直接将输出放到log中 (没有这个参数的话,log文件的生成会有延迟)
- 其中 > test.log 表示将标准输出重定向到log文件中
- 0 是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)
- 2>&1 表示将错误重定向到标准输出中
- 最后一个&表示该命令在后台执行
查看进程
在同一终端窗口下,可直接使用
jobs -l
查看任务目前后台的进程 但是其支队当前终端生效,关闭终端后,在另一个终端中jobs则失效,此时利用ps命令,如下
ps -aux | grep train.py
ps命令的参数很多,这里简单介绍如下:
- -A 列出所有进程
- -w 显示加宽,可以显示更多的咨询
- -aux 显示包括无终端(x)和针对用户(u)的进程,如USER, PID等,具体输出格式如下:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
每个字段说明如下:
- USER: 进程拥有者
- PID: pid
- %CPU: 占用的 CPU 使用率
- %MEM: 占用的记忆体使用率
- VSZ: 占用的虚拟记忆体大小
- RSS: 占用的记忆体大小
- TTY: 终端的次要装置号码 (minor device number of tty)
- STAT: 该行程的状态:
- D: 无法中断的休眠状态 (通常 IO 的进程)
- R: 正在执行中
- S: 静止状态
- T: 暂停执行
- Z: 不存在但暂时无法消除
- W: 没有足够的记忆体分页可分配
- <: 高优先序的行程
- N: 低优先序的行程
- L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
- START: 行程开始时间
- TIME: 执行的时间
- COMMAND:所执行的指令
grep根据指定的进程关键字进行查找,例如
ps -ef | grep php
前后台切换
将编号为n的任务转到后台运行(此处n为任务编号,使用jobs查看)
bg %n
将编号为n的任务转前台运行
fn %n
暂停当前任务
ctrl+z
结束当前任务
ctrl+c
例如:如果想要将已经开始的任务移到后台,需要先使用ctrl+z将其暂停,而后使用jobs查看任务编号和进程号,使用bg将其放到后台,此时程序还是会随着shell的关闭而停止,另外添加nohup,使其忽略hangup信号:
nohup python test.py &
参考链接
前后台切换综合:https://www.cnblogs.com/qq_841161825/p/9224064.html nohup命令:https://www.cnblogs.com/douzujun/p/14054434.html nohup和&后台运行,进程查看及终止https://www.cnblogs.com/baby123/p/6477429.html ps命令详解:https://www.runoob.com/linux/linux-comm-ps.html
|