当前位置:   article > 正文

【实践经验】linux 开机执行 python脚本_linux执行python脚本

linux执行python脚本

背景

一直以来都有一个需求,就是开机执行一个自动连网,并且发送ip地址到邮箱的python程序。现在针对这个需求做了一些调试有了一个成熟的实现方案,现在分享一下。

systemctl 实现方案

首先,为了实现这个需求,我们需要准备如下,第一个是 需要执行启动的python脚本,我们可以暂且命名为 run.py。还有一个就是启动 这个run.py的shell脚本,我们命名为 internet_connector.sh。

shell 脚本模板

如果想要脚本可以开机启动,需要遵循一定的格式,具体如下所示:

#!/bin/bash
### BEGIN INIT INFO
# Provides: internet_connector.sh
# Required-Start: $local_fs $network $remote_fs $syslog
# Required-Stop: $local_fs $network $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts the internet_connector.sh  daemon
# Description: starts internet_connector.sh using start-stop-daemon
### END INIT INFO

python3 /bin/run.py 2>&1  >/dev/null &
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

注意,对于注释部分,我们可以修改的只有脚本名字, 如果你的脚本名字是 xxx.sh, 那么可以将上述脚本中的 internet_connnector.sh 替换成 xxx.sh 。

文件位置&权限

首先,我们应该将 run.py 和 internet_connector.sh 放到合适的路径下。对于 run.py 我们可以将其放到 /bin/ 路径下。对于 internet_connector.sh 需要开机执行我们要放到 /etc/init.d/ 路径下。
并且我们需要给 internet_connector.sh 加上可执行权限,命令如下:

sudo chmod a+x /etc/init.d/internet_connector.sh

系统设置

执行系统设置的主要目的是让系统可以识别出 internet_connector.sh 脚本,将其当作一个可以开机执行的任务。

sudo update-rc.d internet_connector.sh defaults 100

注意 defaults 后的数字100表示这是开机后第100个需要执行的任务,通常可以设置的大一点,保证该任务不要干扰到系统其他启动任务的执行。设定好之后系统就可以识别这个任务了,可以通过下面的命令,启动该任务。或者直接重启也可以。

systemctl restart internet_connector

Crontab实现方案

其实利用crontab也可以实现开机启动脚本。

systemctl status cron

检查 crontab工具是否启动。

systemctl start cron

如果没有启动,则通过systemctl启动它。

sudo crontab -e

编辑crontab文本文件,将下面命令写入。

@reboot /path/to/your/script.sh

该方法经过验证,也可以成功执行。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/72177
推荐阅读
相关标签
  

闽ICP备14008679号