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

45 篇文章 2 订阅

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

  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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值