前言

写了一个python任务脚本,需要一直运行,刚开始使用了宝塔应用管理器和python管理器,都会出现运行着就停止运行的情况,而且上面还是显示在运行着....于是打算直接使用nohup运行

方法

  • 先进入脚本文件的根目录

    cd /www/Python/Auto/qianchuan/jiankong
  • 使用nohup运行

    nohup python -u main.py > message.log 2>&1 &

    解释

    nohup 和 & 的区别

  • &
    是指在后台运行,但当用户退出(挂起)的时候,命令自动也跟着退出
  • nohup

运行 nohup --help
Run COMMAND, ignoring hangup signals. 可以看到是“运行命令,忽略挂起信号”就是不挂断的运行,注意没有后台运行功能。

那么,我们可以巧妙的吧他们结合起来用就是
nohup COMMAND &
这样就能使命令永久的在后台执行

-u

python的输出进行了缓冲,导致message.log并不能够马上看到输出。
为python添加-u 参数,使得python不启用缓冲。

message.log

如果不填写的话,系统默认是写入到运行文件同位置output.out文件内,填写的话则会重定向到指定的文件

2>&1

  • 0 表示stdin标准输入,用户键盘输入的内容
  • 1 表示stdout标准输出,输出到显示屏的内容
  • 2 表示stderr标准错误,报错内容

    2>&1是一个整体,>左右不能有空格,即将错误内容重定向输入到标准输出中去。
    2>&1中的&是为了区别文件1和1(标准输出),假如为2>1,就成了将错误内容输出到文件1中,而不是标准输出中。

其他

挂起后台进程以后想查看是否运行或者关闭该怎么办呢?别急,我们继续。

查看进程

ps aux | grep main.py

查看进程PID
main.py 是运行的文件
可以看到PID是12526

关闭进程

kill -9 12526

实时追踪文件输出到屏幕

tailf message.log
最后修改:2022 年 04 月 20 日
如果觉得我的文章对你有用,请随意赞赏