程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

crontab开机启动pyenv+激活虚拟环境+打开screen+自动运行python脚本

发布于2020-03-21 17:56     阅读(2083)     评论(0)     点赞(14)     收藏(3)


这是我尝试了很多次以后得出来的结果,大致先说明一下:

  1. screen使用-dmS参数以detached模式启动screen
  2. screen名称和执行的命令使用变量传送,而不能直接在命令行指定。
  3. 虚拟环境需要从绝对路径激活。

上代码。创建/root/startup.sh,赋予执行权限,内容如下:

#!/bin/bash
screen_name="updatepic"  
screen -dmS $screen_name 
cmd1="source ~/.bashrc"
cmd2="source ~/.pyenv/versions/py366/bin/activate"
cmd3="python apscheduler_update_pic.py";  
screen -x -S $screen_name -p 0 -X stuff "$cmd1"
screen -x -S $screen_name -p 0 -X stuff '\n'
screen -x -S $screen_name -p 0 -X stuff "$cmd2"
screen -x -S $screen_name -p 0 -X stuff '\n'
screen -x -S $screen_name -p 0 -X stuff "$cmd3"  
screen -x -S $screen_name -p 0 -X stuff '\n' 

其中虚拟环境路径和执行的python脚本自行替换。
然后crontab添加一行:

@reboot (sleep 60 && /root/start_apscheduler.sh )

启动后screen -ls可以看到我们启动的名为updatepic的screen会话。screen -r恢复会话,然后按^C中断正在执行的脚本,可以看到类似如下内容,表示成功:

^CTraceback (most recent call last):
  File "apscheduler_update_pic.py", line 130, in <module>
    time.sleep(1)
KeyboardInterrupt
(py366) [root@Aliyun1 ~]# screen -ls
There is a screen on:
        2129.updatepic  (Attached)
1 Socket in /var/run/screen/S-root.
(py366) [root@Aliyun1 ~]# which python
/root/.pyenv/versions/3.6.6/envs/py366/bin/python

原文链接:https://blog.csdn.net/toopoo/article/details/104999092



所属网站分类: 技术文章 > 博客

作者:sjhjf0293

链接:https://www.pythonheidong.com/blog/article/274613/bad2e5f44152d299e984/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

14 0
收藏该文
已收藏

评论内容:(最多支持255个字符)