linux 后台运行python程序(前后台切换)

问题:

1.linux运行python脚本遇到个问题,关闭远程脚本会自动断开
2.程序运行会一直输出,能否实现最小化,后台运行

解决方案

nohup python -u 脚本名.py > test.log 2>&1 &

nohup python test.py & 在后台运行test.py
jobs 查看后台运行的进程
fg %n 让后台进程n转到前台
bg %n 让暂停运行的后台进程n继续运行
kill %n 杀死job
ctrl+z 使前台正在运行的进程转到后台
ctrl+c 终止前台进程
nohup表示no hang up, 就是不挂起, 于是这个命令执行后即使终端退出, 也不会停止运行.

具体用法

nohup python -u test.py > test.log 2>&1 &
2 输出错误信息到提示符窗口
1 表示输出信息到提示符窗口, 1前面的&注意添加, 否则还会创建一个名为1的文件
最后会把日志文件输出到test.log文件

其中-u 的作用是无缓存输出,即每有一行输出都直接写到test.log里面
在运行过程中使用一下命令可以查看输出

tail -f test.log # 实时输出
cat test.log # 全部输出

jupyter 后台运行

  1. 后台运行 在云服务器中搭建好jupyter并运行后, 发现它会占用当前终端, 于是研究了一下怎么让它在后台运行.
 nohup jupyter notebook --allow-root > jupyter.log 2>&1 & 

解释:

  1. 用&让命令后台运行, 并把标准输出写入jupyter.log中
    nohup表示no hang up, 就是不挂起, 于是这个命令执行后即使终端退出, 也不会停止运行.
  2. 终止进程
    执行上面第2条命令, 可以发现关闭终端重新打开后, 用jobs找不到jupyter这个进程了, 于是要用ps -a, 可以显示这个进程的pid.kill -9 pid 终止进程
posted @ 2021-08-16 14:42  秋吉  阅读(1357)  评论(0编辑  收藏  举报