【实践经验】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 &

注意,对于注释部分,我们可以修改的只有脚本名字, 如果你的脚本名字是 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

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

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值