# 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