python nohup

# run.sh 内容
nohup python dev_run.py >> ./run.log  2>&1  &
./run.sh

后台运行

nohup命令

nohup指不断地运行,是no hang up的缩写,指不间断,不挂断。运行一个进程的时候,不想让其在你退出账号时关闭,即可用nohup。
nohup在不规定的情况下,所以输出内容会到nohup.out中

ps aux |grep run.sh
test 6836  0.0  0.0 110400  2496 pts/1    S+   17:52   0:00 grep --color=auto run.sh

ps -ef |grep python
test 6741     1 99 16:18 ?        01:43:27 python dev_run.py

2>&1

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

2>&1是一个整体,>左右不能有空格,即将错误内容重定向输入到标准输出中去。

&

&为后台运行
nohup python dev_run.py >> ./run.log 2>&1 &, 以python环境不间断的运行dev_run.py这个脚本,并且将脚本输出的内容重定向输入run.log中(>>意为追加,如果用>会让其中的内容清空)

pymysql cannot import name 'escape_string'

requirements 添加了PyMySQL >= 1.0.2之后
使用escape_string报错:ImportError: cannot import name 'escape_string' from 'pymysql'。

解决方法:

# v1.0.0及以上
from pymysql.converters import escape_string

# v0.10.1及以下
from pymysql import escape_string

定时任务模块

import schedule
import time
import datetime

def job4():
    print('Job4:每天下午17:49执行一次,每次执行20秒')
    print('Job4-startTime:%s' % (datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')))
    time.sleep(20)
    print('Job4-endTime:%s' % (datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')))
    print('------------------------------------------------------------------------')

if __name__ == '__main__':
    schedule.every().day.at('1:00').do(job4)
    while True:
        schedule.run_pending()

参考

https://blog.csdn.net/weixin_42840933/article/details/85780125
https://www.linuxprobe.com/linux-nohup.html
https://www.jianshu.com/p/b77d934cc252
https://blog.csdn.net/coco56/article/details/107430933

你可能感兴趣的:(python nohup)